• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Liczby niepowtarzające się w ciągu

Object Storage Arubacloud
0 głosów
248 wizyt
pytanie zadane 25 marca 2016 w Java przez Dieet Nowicjusz (180 p.)

Napisałem już prawie cały program polegający na wczytywaniu liczb z pliku i wypisania ilości ich występowania w ciągu, jest niby ok ale dla przykładowego ciągu

1   2  2  3  4  5  4

Zamiast takiego oczekiwanego wyświetlenia

Wystąpienia liczby 1  :  1
Wystąpienia liczby 2  :  2
Wystąpienia liczby 3  :  1
Wystąpienia liczby 4  :  2
Wystąpienia liczby 5  :  1

Konsola wyświetla

Wystąpienia liczby 1  :  1
Wystąpienia liczby 2  :  2
Wystąpienia liczby 2  :  2
Wystąpienia liczby 3  :  1
Wystąpienia liczby 4  :  2
Wystąpienia liczby 5  :  1
Wystąpienia liczby 4  :  2

Czyli wystąpienia powtarzają się chociaż są poprawne wyniki... Mógłby ktoś napisać algorytm bo ja się głowię już kilka godzin i mnie tylko głowa boli :( ?

2 odpowiedzi

0 głosów
odpowiedź 25 marca 2016 przez jegor377 Stary wyjadacz (13,230 p.)
już takie coś robiłem i mi się nie chce, ale nie jestem chamem, więc chociaż powiem Ci algorytm.  Miej listę obiektów Powtórzenia. Iteruj po zbiorze i kiedy elementu nie w liście, wtedy dodaj go powtorzenia.Add(Powtorzenie(element)), w przeciwnym wypadku dodaj do elementu listy, którego wartość "element" jest równa twojej wartości dodaj jeden. Na końcu wyświetl dla każdego elementu z listy wyniki. Napiszę Ci to w cpp.
komentarz 25 marca 2016 przez jegor377 Stary wyjadacz (13,230 p.)
#include <iostream>
#include <vector>

using namespace std;

typedef struct Repeat {
	int element;
	int repeats;
} Repeat;

class RepeatCounter
{
	vector<Repeat> repeats;

public:

	RepeatCounter() {
		;
	}

	// returns -1 if can't find
	int getRepeatID(int element) {
		for(int i = 0; i < repeats.size(); i++) {
			if(repeats[i].element == element) return i;
		}
		return -1;
	}

	void addRepeatElement(int element) {
		repeats.push_back({element, 1});
	}

	void incrementRepeat(int id) {
		if(id < repeats.size()) repeats[id].repeats++;
	}

	vector<Repeat> getResult() {
		return repeats;
	}
};

int main() {
	vector <int> elements;
	elements.push_back(1);
	elements.push_back(2);
	elements.push_back(2);
	elements.push_back(3);
	elements.push_back(4);
	elements.push_back(5);
	elements.push_back(4);

	RepeatCounter repeatCounter;

	for(auto element : elements) {
			int id = repeatCounter.getRepeatID(element);
			if(id == -1) repeatCounter.addRepeatElement(element);
			else repeatCounter.incrementRepeat(id);
	}

	auto result = repeatCounter.getResult();

	for(auto r : result) {
		cout<<r.element<<" - "<<r.repeats<<endl;
	}

	cin.get();

	return 0;
}

 

0 głosów
odpowiedź 26 marca 2016 przez Mar Cin Dyskutant (8,900 p.)
Pokaż kod jaki masz.

Podobne pytania

0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 14 lutego 2018 w Systemy operacyjne, programy przez dambyl Początkujący (250 p.)
0 głosów
1 odpowiedź 607 wizyt
pytanie zadane 21 marca 2017 w Matematyka, fizyka, logika przez Jiin Obywatel (1,390 p.)
0 głosów
2 odpowiedzi 5,926 wizyt
pytanie zadane 19 listopada 2016 w JavaScript przez damianlxlx5 Obywatel (1,880 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...