Obliczanie zwycięzcy wyborów

0

cały czas moje wyjście nie jest prawidłowe
zad.
Zadanie Wybory

W wyborach burmistrza Wielkiego Guslaru wystartowało M kandydatów ponumerowanych liczbami od 1 do M. Każdy z N głosujących oddał ważny głos na jednego z nich. Napisz program, który wczyta opis głosów, a następnie poda wyniki głosowania i numer kandydata wybranego na burmistrza. Zgodnie z prawem wyborczym Wielkiego Guslaru, jeśli dwóch lub więcej kandydatów uzyskało tę samą, najwyższą liczbę głosów, to wybory wygrywa ten z nich, który ma niższy numer.

Wejście

W pierwszej linii wejścia znajdują się dwie liczby całkowite M i N (1<=M<=10, 1<=N<=1000), określające odpowiednio liczbę kandydatów i liczbę oddanych głosów. W drugiej linii znajduje się N liczb całkowitych z zakresu od 1 do M. Są to numery kandydatów, na których oddane zostały poszczególne głosy.

Wyjście

W pierwszych M liniach wyjścia należy podać kolejno liczby głosów zdobytych przez kandydatów z numerami od 1 do M, w formacie "X: Y", gdzie X oznacza numer kandydata, a Y - liczbę oddanych na niego głosów. Następnie w osobnej linii należy wypisać numer kandydata, który wygrał wybory.

Przykład

Wejście:
3 10
1 3 2 1 2 3 3 3 2 2

Wyjście:
1: 2
2: 4
3: 4
2

 #include<iostream>
using namespace std;
int main()
{
    int N,w, i,gloss[1000];
    int ile[10];
    int M,kan;
    cin >> M >> N;


    for(i=0;i<N;i++)
    {
        cin >> gloss[i];
    }
    for(i=0,w=0,ile[10]=0;i<N;i++)
    {
       if(gloss[i]==1)
          {
              ile[w]=ile[w]+1;
          }
        if(gloss[i]==2)
          {
              ile[w+1]=ile[w+1]+1;
          }
        if(gloss[i]==3)
          {
              ile[w+2]=ile[w+2]+1;
          }
    }
    for(kan=0,w=0;kan<M;kan++,w++)
    {
        cout <<kan+1<<":"<< ile[w] <<endl;
    }


    return 0;
}

0

Nie masz ostatniego wiersza wyniku.

Można trochę prościej zrobić:

#include <cstdio>
using namespace std;

int main()
  {
   unsigned M,N,max=0,Tb[10]={0};
   scanf("%u%u",&M,&N);
   for(unsigned i=0;i<N;++i)
     {
      unsigned g;
      scanf("%u",&g);
      ++Tb[--g];
     }
   for(unsigned i=0;i<M;++i)
     {
      if(Tb[max]<Tb[i]) max=i;
      printf("%u: %u\n",i+1,Tb[i]);
     }
   printf("%u\n",max+1);
   return 0;
  }
0

a nie mógłbyś poprawić mojego programu?
dla mnie ten co napisałeś to kosmos o.O

0

oooo dzięki wielkie;D
teraz jest ok;)

0

tylko teraz zastanawiam się jak dopisać ostania linijkę wyjścia...

0

co muszę użyć aby mi pokazywało mi nr kandydata który ma najwięcej głosów?

0

Trzeba znaleźć maksimum.

1 użytkowników online, w tym zalogowanych: 0, gości: 1