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;
}
}
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.