[c++]wypisanie, który element miał największy powtórzeń


(Pawlus1993) #1

Napisałem prosty program, który wczytuje liczbę głosów i liczbę kandydatów a następnie wyświetla wyniki na ekranie (nr kandydata: ile zdobył głosów). Jak należy zmodyfikować ten program, żeby jeszcze wyrzucał nam informację, który kandydat wygrał, czyli innymi słowy wypisać, który element miał najwięcej powtórzeń. Kod zamieszczam poniżej:

#include 

using namespace std;


int main() 

{

	// m-liczba kandydatów n-liczba oddanych głosów

	unsigned int m,n, winner;

	winner=1;

	cin>>m>>n;

	unsigned int ile=0;

	int tab[n+1];

	for (int i=1; i<=n; i++) cin>>tab[i];


	for (int j=1; j<=m; j++)

	{

		for (int i=1; i<=n; i++)

		{

			if (tab[i]==j) 

			{

				ile++;

			}

		}

			cout<
			ile=0;

	}	

}

(kostek135) #2

Tworzysz mapę gdzie kluczem jest kandydat, a wartością jego liczba głosów. Jeśli wczytasz danego kandydata,to pod kluczem tego kandydata zwiększasz wartość. Potem przeglądasz wszystkie wartości i wybierasz największą. Tu masz jak z mapy wybrać największą wartość, bo pewnie zaraz o to zapytasz: http://stackoverflow.com/questions/9370 … e-in-a-map

Możesz też np. posortować ten ciąg. Wtedy jeśli dwa kolejne wyrazy są takie same to zwiększasz chwilowy licznik, a jak różne to sprawdzasz czy chwilowy licznik jest większy od globalnego (i ewentualnie nadpisujesz większą wartością + zapamiętujesz id nowego zwycięzcy), oraz resetujesz chwilowy licznik.


([alex]) #3

Dodaj zmienną: max=0 i indexmax=0 na początku programu:

przed:

ile=0;

dodajesz:

if(max

po pętle:

[code]cout<<"wygrywa "<