Программа не работает C++
не будучи в состоянии найти ошибку, принимает только ввод 1 студента, а при вводе имени второго он просто пропускает все и показывает странные цифры в результате каждого, кроме первого.вот код(ps Я новичок в c++)
#include<iostream> #include<stdio.h> using namespace std; struct student{ int age, marks[5], clas, avg; char name[10], res; }; int main(){ student p[5]; cout<<"enter name, class, age, and marks in 5 subjects :\n"; for(int i=0; i<5; i++){ //input data for each student cout<<"student "<<i+1<<"\n"; gets(p[i].name); cin>>p[i].clas; cin>>p[i].age; for(int j=0; j<5; j++){ cin>>p[i].marks[j]; } } for(int k=0; k<5; k++){ //calculate average p[k].avg=0; for(int f=0; f<5; f++){ p[k].avg+=p[k].marks[f]; } p[k].avg/=5; } for(int x=0; x<5; x++){ //calculate result on basis of average if(p[x].avg>=40){ p[x].res='P'; } else{ p[x].res='F'; } } cout<<"RESULT :\n"; //output data for each student for(int m=0; m<5; m++){ cout<<"STUDENT "<<m+1<<"\n"; puts(p[m].name); cout<<"age "<<p[m].age; cout<<"class "<<p[m].clas; for(int n=0; n<5; n++){ cout<<p[m].marks[n]<<endl; } cout<<"average "<<p[m].avg; cout<<"result "<<p[m].res; } }
Что я уже пробовал:
сначала я изменил cin.getline на gets, но все еще не работает должным образом, он не принимает входные данные должным образом, и результат-случайные числа, за исключением первого студента, чей результат отображается правильно
Peter_in_2780
Смешивание gets() и "cin >> ..." может привести к некоторым странным результатам, в зависимости от буферизации и так далее. Я предлагаю вам придерживаться одного способа ввода.
Patrice T
"я изменил cin.getline на gets, но все еще не работает должным образом"
Выберите 1, никогда не смешивайте.