Pomysl na selekcje w tablicy

Pomysl na selekcje w tablicy
J2
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 9 lat
  • Postów:17
0

Czesc!
Mam trywialny problem, z ktorym nie moge sobie juz poradzic przeszlo kilka godzin, mianowicie chodzi mi o sposób, algorytm z selekcja wartosci w tablicy.

Mam tablice 10 elementow, w ktorej sa np. wartosci: 1,2,2,1,3,1,6,7,6,10 i teraz chce wypisac te wartosci, ktore wystepuja dokladnie 2 razy.
Kombinuje juz dlugo i nie mam pomyslu dobrego, bylbym wdzieczny jezeli by ktos napisal jak mozna by to zrobic :)

BY
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:16
0

petla for w petli for?

KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
0

może najpierw posortuj sobie wartości w tej tablicy to będzie Ci łatwiej ;)


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
J2
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 9 lat
  • Postów:17
0

Robilem petle w petli, ale chyba zle konstruuje ify

BY
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:16
0

nikt tu nie jest jasnowidzem i nie znamy zawartosci twojego kodu. wklej go

J2
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 9 lat
  • Postów:17
0
Kopiuj
int licznik=0;
	for (int i=0; i<wektor.size(); i++)	
	{
		licznik=0;
		for (int j=0; j<wektor.size(); j++)
		{
				if ( wektor[i] == wektor[j] ) 
				{
					licznik++;
						if (licznik == 2)
					{
						
						cout << "Dwa razy wystepuje liczba:  " << wektor[i] << endl;	
										
					}			
				}
		}
	} 

To bedzie ten fragment, nie jest to tablica, a wektor liczb int, ale zasada jest podoba, no chyba, ze istnieje jakas magiczna funkcja, ktorej nie znam :D

KA
przede wszystkim wektor.at(i) == wektor.at(j). napisz dokładniej co chcesz zrobić. wypisac z wektora liczby, które występują w nim dokładnie 2 razy?
J2
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 dni
2

Najgłupsze rozwiązanie brutal force:

Kopiuj
   for(size_t i=0;i<wektor.size();++i)    
     {
      int value=wektor[i];
      size_t counter=0;
      for(size_t k=0;(k<i)&&(!counter);++k) if(wektor[k]==value) ++counter;
      if(!counter) // jeżeli nie było tej liczby wcześniej, czyli już na jej temat wszystko powiedziano
        {
         for(size_t k=0;k<wektor.size();++k) if(wektor[k]==value) ++counter;
         if(counter==2) cout<<"Dwa razy wystepuje liczba: "<<value<<endl;
        }
     }

Ale lepiej posortuj jak mówiła wcześniej @karolinaa wtedy kod wychodzi prostszy i szybszy.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
2

W c++

Kopiuj
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	vector<int> vec = {1, 2, 3, 4, 1, 2, 3, 4, 1, 1, 2, 5, 12, 5};
	sort(vec.begin(), vec.end());
	auto it = vec.begin(), end = vec.end();
	while(it != end) {
		auto tmp_it = find_if_not(it, end, [&](const int value) { return value == *it; });
		if(distance(it, tmp_it) == 2) cout << *it << "\n";
		it = tmp_it;
	}
	return 0;
}

http://ideone.com/AF4Fx8

n0name_l
Chcialem bez map i pokrewnych, stad wyszlo jak wyszlo :P
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 dni
2
Kopiuj
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
 
int main()
  {
   int data[]={1, 2, 3, 4, 1, 2, 3, 4, 1, 1, 2, 5, 12, 5};
   map<int,unsigned> tb;
   for(size_t i=0;i<sizeof(data)/sizeof(*data);++i) ++tb[data[i]];
   for(map<int,unsigned>::iterator i=tb.begin();i!=tb.end();++i) if(i->second==2) cout<<i->first<<endl;
   return 0;
  }

http://ideone.com/majmfL


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
_13th_Dragon
Enentualnie unordered_map
EM
nie potrzebnie tak rozwijasz te pętle zamiast "map<int,unsigned>::iterator" wystarczy auto ;)
_13th_Dragon
Od C++11 owszem, ale jak na razie wstrzymuje się od przejścia na C++11 przynajmniej dopóki gcc nie dorobi się w pełni działającego STL'a od windows.
EM
Z tego co mi wiadomo to gcc 4.8 wspiera już większość C++11... czy ja o czymś nie wiem? Popraw mnie proszę ;)
_13th_Dragon
Większość a całość - różne rzeczy. thread pod windows oraz kilka innych rzeczy jak na razie kompletnie skopane.
J2
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 9 lat
  • Postów:17
0

Dziękuję wszystkim za pomoc ! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.