2016-03-20 1 views
-3

Вопрос: Предположим, что новый член городского совета должен быть выбран из трех кандидатов, и предположим, что есть 4 избирательных участка. Нам нужна программа на C++, которая будет подсчитывать голоса для каждого кандидата и отображать результат. На каждой избирательной площадке избиратели голосуют, выбирая A, B или C в бюллетене для голосования. Должностное лицо, занимающееся голосованием, должно ввести голоса в программу, чтобы они могли быть учтены. X вводится, когда введены все голоса на определенной избирательной площадке.Подсчет бюллетеней в замешательстве путаницы

-Используйте петлю от 1 до количества избирательных участков.

-Внутри цикла for цикл while включает запрос пользователя, за которого они хотят проголосовать.

-Внутри цикла while это оператор switch, чтобы увеличить общее количество и по умолчанию считать испорченные голоса.

-Выходный цикл выходит, когда для выбора введен X.

-Когда цикл for завершен, отображаются три итоговых количества и количество испорченных голосов.

#include <iostream> 
using namespace std; 

int main() 
{ 
    const int VOTING_STATIONS = 4; 
    int votesForA = 0, votesForB = 0, votesForC = 0, spoiltVotes = 0; 
    char vote; 
    int numVotes; 


    for (int i = 0; i <= VOTING_STATIONS; i++) 
    { 
     numVotes = 0; 

     while (vote != 'X') 
     { 

      cout << "Which candidate do you want to choose?:" << endl; 
      cin >>vote; 


      switch(vote) 
      { 
       case 'A': 
       votesForA++; 
       break; 
       case 'B': 
       votesForB++; 
       break; 
       case 'C': 
       votesForC++; 
       break; 
       case 'X': 
       break; 
       default: 
       spoiltVotes++; 
       break; 

      } 
     } 
    } 

    // display results 
    cout << "Total candidate A: " << votesForA << endl; 
    cout << "Total candidate B: " << votesForB << endl; 
    cout << "Total candidate C: " << votesForC << endl; 
    cout << "Total spoilt votes: " << spoiltVotes << endl; 

    return 0; 
} 

В конце концов, я просто полностью потерял эту программу, и я не знаю, что делать дальше. Любая помощь приветствуется.

+0

Ваш оператор switch, вероятно, ошибочен. 'case' должен заканчиваться' break; ', чтобы предотвратить падение через –

+0

, где находится« для цикла от 1 до количества станций голосования ». и для чего нужны вложенные петли for for? – Thomas

+0

'vote' неинициализирован в первый раз. – CinCout

ответ

0

Если я правильно понял вопрос, то вы в основном нужно заменить вложенную для петель с петлей над станциями и очистить переключатель немного:

#include <iostream> 
using namespace std; 
int main() 
{ 
    // initialise totals 
    const int NR_VOTING_STATIONS = 4; 
    int votesForA = 0, votesForB = 0, votesForC = 0, spoiltVotes = 0; 

    char votes[] = { "ABCXAXBXBX" }; 
    int numVotes = -1; 

    // loop over the voting stations 
    for(int i = 0; i < NR_VOTING_STATIONS; ++i) 
    { 
     char vote = 0; 

     while(vote != 'X') 
     { 
      cout << "Which candidate do you want to choose: "; 
      vote = votes[++numVotes]; 
      std::cout << vote << std::endl; 

      switch (vote) 
      { 
      case 'A': 
       ++votesForA; 
       break; 
      case 'B': 
       ++votesForB; 
       break; 
      case 'C': 
       ++votesForC; 
       break; 
      case 'X': 
       break; 
      default: 
       ++spoiltVotes; 
       break; 
      } 
     } 
    } 
    // display results 
    cout << "Total candidate A: " << votesForA << endl; 
    cout << "Total candidate B: " << votesForB << endl; 
    cout << "Total candidate C: " << votesForC << endl; 
    cout << "Total spoilt votes: " << spoiltVotes << endl; 

    return 0; 
} 

Live on Coliru

+0

Спасибо за помощь, im juggling мой код вокруг сейчас, но в вашем коде я не понимаю, почему существует int numVotes = -1? как это влияет на программу? Посмотрев на свой код и отрегулировав мой, теперь он работает вечно даже после отправки «Х», который должен закончить цикл для каждой станции голосования, а затем отобразить результаты балета? – Bezuid

+0

Это просто, чтобы код работал без ввода пользователем. 'vote = votes [++ numVotes]' увеличивает, а затем вводит поддельный вход пользователя в 'votes'. Поэтому он читает 'votes [0]', 'votes [1]', пока не будет прочитано четыре 'X'. – Thomas

+0

Теперь я немного ближе к этому. В настоящий момент он работает отлично, но он останавливается каждый раз, когда вводится «X», как я могу сделать так, чтобы он читал четыре «Х» перед остановкой. Я обновил свой код до того, что он в настоящее время находится в почти рабочем состоянии. – Bezuid