2016-07-26 5 views
0

Мой вопрос состоит в том, чтобы записать пользовательские 5 входов и сопоставить их с правильным кодом. singleperson код - 1, couple - код 2 и family - 3. Следовательно, для пользователей будет только эти 3 номера. В конце я должен рассчитать общее количество людей по их категории. Я запустил код и получил ошибку времени выполнения, когда стек вокруг переменных «групп» поврежден и всегда имеет только 5 синглов, а пары и семьи - 0. Извините, я только начал учиться, и я немного расплывчатый.Согласование пользовательских входов и вычисление входов по числу C++

int singleperson=0; 
int couple=0; 
int family3=0; 

int groups[]={0,0,0,0,0}; 
cout << "Enter group #1:"; 
cin >>groups[0]; 
cout << "Enter group #2:"; 
cin >>groups[1]; 
cout << "Enter group #3:"; 
cin >>groups[2]; 
cout << "Enter group #4:"; 
cin >>groups[3]; 
cout << "Enter group #5:"; 
cin >>groups[4]; 
for (int a=0; a<=4;a++) 
{ 
    if(groups[a]=1) 
    { 
     singleperson= singleperson + 1; 
    } 
    else if(groups[a]=2) 
    { 
     couple = couple +1; 
    } 
    else 
    { 
     family3= family3+1; 
    } 
} 
cout<<"Statistics"<<endl; 
cout <<singleperson<<"Singles"<<endl; 
cout<<couple<<"Couples"<<endl; 
cout<<family3<<"Families"<<endl; 
+6

Вы резервируете 4 позиции и используете 5. Оператор сравнения == not =. Во всяком случае, вы бы быстрее повысили свой уровень C++, если внимательно изучите книгу, а не напишите здесь все основные детали. – EFenix

ответ

0

Потому что размер group is 4, и вы пытаетесь вставлять в 5th место. И как указано @ antonio-garrido для проверки равенства, мы используем ==, а = используется для назначения.

int groups[]={0,0,0,0,0}; 


for (int a=0 ; a <= 4; a++) { 
    if(groups[a] == 1) { 
     singleperson= singleperson + 1; 
    } else if(groups[a] == 2) { 
     couple = couple +1; 
    } else { 
     family3= family3+1; 
    } 
} 
Смежные вопросы