Массив структур содержит информацию о студентах группы - C (СИ)
Формулировка задачи:
/*Массив структур содержит информацию о студентах группы: в первом поле стоит фамилия, во втором -возраст,
в последующих - экзаменационные оценки и т.д. (i-й элемент массива описывает i-го студента).
Написать функции, которые выясняют, кто в группе:
а) отличники,
б) не сдал сессию.*/
я ввожу данные студента, оценку 5, а оно мне выдаёт не сдал сессию...Подскажите как сделать правильнее??))
/*Массив структур содержит информацию о студентах группы: в первом поле стоит фамилия, во втором -возраст,
в последующих - экзаменационные оценки и т.д. (i-й элемент массива описывает i-го студента).
Написать функции, которые выясняют, кто в группе:
а) отличники,
б) не сдал сессию.*/
# include <stdio.h>
# include <conio.h>
# include <math.h>
# include <malloc.h>
# include <string.h>
# define N 2
int main()
{
struct student
{
char name[40];
int god;
char predmet[40];
int grade;
} ST[N];
int i,n;
printf("Kolichestvo studentov -\n ");
scanf("%d", &n);
getchar();
puts ("Dannie o studente\n");
for(i=0; i<n; i++)
{
printf("\n%2d.Familia, imia:\n ", i+1);
gets(ST[i].name);
printf("God Rojdenia:\n ");
scanf("%ld", &ST[i].god);
printf("predmet:\n ");
gets(ST[i].predmet);
printf("grade:\n");
scanf("%d",&ST[i].grade);
}
for(i=0;i<n;i++)
{
if(ST[i].grade==5)
{
puts("Otlichnik");
}
else if(ST[i].grade<5)
puts("ne sdal sessiy");
i++;
}
getch();
return 0;
}Решение задачи: «Массив структур содержит информацию о студентах группы»
textual
Листинг программы
# include <stdio.h>
# include <conio.h>
# include <math.h>
# include <malloc.h>
# include <string.h>
# define N 2
int main()
{
struct student
{
char name[40];
int god;
int grade;
} ST[N];
int i,n;
printf("Kolichestvo studentov -\n ");
scanf("%d", &n);
getchar();
puts ("Dannie o studente\n");
for(i=0; i<n; i++)
{
printf("\n%2d.Familia, imia:\n ", i+1);
gets(ST[i].name);
getchar ();
printf("God Rojdenia:\n ");
scanf("%ld", &ST[i].god);
printf("grade:\n");
scanf("%d",&ST[i].grade);
getchar ();
}
for(i=0;i<n;i++)
{
if(ST[i].grade>3)
printf ("\n Sdal sessiy :%s\n", ST[i].name);
else
printf("\n ne sdal sessiy: %s",ST[i].name);
}
getch();
return 0;
}
Объяснение кода листинга программы
Код выполняет следующие действия:
- Объявляет структуру
studentс полямиname,godиgrade. - Определяет переменные
i,nи массивSTтипаstruct student. - Запрашивает у пользователя количество студентов с помощью функции
scanfи сохраняет значение в переменнойn. - Выводит сообщение
Dannie o studenteи осуществляет циклfor, который выполняетсяnраз, где каждый студент представлен одним итерационным циклом. - В каждой итерации цикла выводит сообщение с номером студента и запрашивает его имя с помощью функции
gets. - Запрашивает год рождения студента с помощью функции
scanfи сохраняет значение в соответствующем поле структурыST. - Запрашивает оценку студента с помощью функции
scanfи сохраняет значение в соответствующем поле структурыST. - Выполняет второй цикл
for, который также выполняетсяnраз. - В каждой итерации второго цикла проверяет значение поля
gradeстудента и выводит сообщение о том, сдал ли студент сессию или нет. - Завершает программу с помощью функции
getchи возвращает 0.