2013-12-16 7 views
0

Я создаю программу, которая сравнивает два массива; первый массив, пользователь вводит 5 целых чисел. второй массив, компьютер выбирает 5 чисел в случайном порядке (между 0 & 9 для обоих массивов).C++ необходимо обновить переменную

Мне нужно сравнить элементы каждого массива, чтобы увидеть, соответствуют ли они. если они совпадают, я добавляю 1 к переменной счетчика.

(например, пользователь вводит 0 2 2 9 6, компьютер [с помощью Rand] выбирает 2 3 2 9 0. elemnts 3 & 4 матча, так что то будет два. Теперь каждый матч имеет другой сценарий)

Мои Проблема: пользователь также вводит сколько раз они хотят сравнить эти массивы (это игра под названием pick 5). Мне нужен счетчик, чтобы сбросить до нуля каждый раз, когда он петли Я попытался использовать команду flush, но это не сработало.

любые идеи?

int main() 
{ 
string name; 
float total_amt, bet_amt, win_amt; 
int play_amt, user_choice[5] = { }, com_choice[6], i, total=0; 
int size = 5; 

srand((unsigned)time(0)); 

cout<<"Welcome to pick 5, where the odds are never in your favor!"<<endl; 
cout<<"What is your name?"<<endl; 
cin>>name; 
cout<<"How much money do you have?"<<endl; 
cin>>total_amt; 
cout<<"How much money would you like to bet?"<<endl; 
cin>>bet_amt; 
cout<<"How many times would you like to play?"<<endl; 
cin>>play_amt; 

for (i=0;i<play_amt;i++) 
{ 
    cout<<"Pick 5 integers between 0 & 9 "<<endl; 

    cin>>user_choice[0]; 
    cin>>user_choice[1]; 
    cin>>user_choice[2]; 
    cin>>user_choice[3]; 
    cin>>user_choice[4]; 

    com_choice[0] = (rand()%9); 
    com_choice[1] = (rand()%9); 
    com_choice[2] = (rand()%9); 
    com_choice[3] = (rand()%9); 
    com_choice[4] = (rand()%9); 

    cout<<com_choice[0]; 
    cout<<com_choice[1]; 
    cout<<com_choice[2]; 
    cout<<com_choice[3]; 
    cout<<com_choice[4]; 



    if (user_choice[0]==com_choice[0]) 
    { 
     total++; 
    } 
    if (user_choice[1]==com_choice[1]) 
    { 
     total++; 
    } 
    if (user_choice[2]==com_choice[2]) 
    { 
     total++; 
    } 
    if (user_choice[3]==com_choice[3]) 
    { 
     total++; 
    } 
    if (user_choice[4]==com_choice[4]) 
    { 
     total++; 
    } 

    cout<<"User matched "<<total<<"times"<<endl; 


    // scenarios 
    if (total>=0 &&total<3) 
    { 
     total_amt-=bet_amt; 
     cout<<"Less than 3 of your numbers matched, tough luck"<<endl; 
     cout<<"You now have $"<<total_amt<<"dollars left."<<endl; 
    } 
     else if (total == 3) 
     { 
      cout<<"You matched 3 and broke even"<<endl; 
     } 
     else if(total == 4) 
     { 
      win_amt = bet_amt*2; 
      total_amt = total_amt + (win_amt - bet_amt); 
      cout<<"Congrats! you matched 4!!"<<endl; 
      cout<<"You now have $"<<total_amt<<"dollars!"<<endl; 
     } 
     else 
     { 
      win_amt = bet_amt*5; 
      total_amt = total_amt + (win_amt - bet_amt); 
      cout<<"WINNER WINNER YOU MATCHED 5!!"<<endl; 
      cout<<"You now have $"<<total_amt<<"dollars!"<<endl; 
     } 
    // end nested if-else 

} // end for loop 

} // end main 
+1

Не уверен, что я полностью понимаю, нет переменной, называемой «счетчик». Вы просто не хотите установить total = 0; в начале вашего цикла «for»? – OldProgrammer

+0

Элементы начинаются с 0. –

+0

Как говорится в ответе, перемещение переменной - это хороший способ. Если вы оказались в ситуации, когда вам нужно сбросить что-то по уважительной причине, 'var = {};' обычно делает это красиво. – chris

ответ

1

Нет необходимости «предварительно объявлять» все переменные в начале функции.

Если вы хотите, переменные «сбросить», переместить объявления переменных, где вы их используете, внутри цикла:

for (int i=0;i<play_amt;i++) 
{ 
    int total = 0; // A new variable 'total', that starts at 0 each time through the loop. 
+0

спасибо! код работает так, как я хочу сейчас. – user2480658

+0

@ user2480658, Это хороший этикет и важно, чтобы сайт хорошо работал, чтобы принять ответ, который наилучшим образом решает вашу проблему. – chris

+0

Для этого нажмите зеленую галочку слева от вашего ответа? – user2480658

1

Вы должны получить в привычку делегирования задачи на функцию , У вас проблема с total, потому что ваша функция main() так долго, что сложно отслеживать, что происходит с этой переменной. У вас будет меньше проблем, если ваш цикл for выглядит следующим образом:

for (i=0;i<play_amt;i++) 
{ 
    read_choices(user_choice); 
    choose_random(com_coice); 
    display_choice(com_choice); 

    total = count_matches(); 
    cout<<"User matched "<<total<<"times"<<endl; 

    total_amt += evaluate_scenario(total, bet_amt); 
} // end for loop                   
+0

Мне сначала хотелось, чтобы программа работала так, как я ее хочу (исправляю логику. Я все еще хочу, как вы сказали, делегировать эти задачи своим функциям, тогда я хочу поместить все это в класс. – user2480658

Смежные вопросы