Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин - C (СИ)
Формулировка задачи:
4. Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Если средний балл 4 и выше, то указать размер стипендии. Если средний балл ниже, то указать перечень дисциплин с оценками. Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин.
Что-то начал
#include <stdio.h> #include <conio.h> #include <iostream> #include <clocale> using namespace std; struct stud { char familiy [30],data[6],gruppa[4]; double srball; union ball { char *predmet[4]; double stependia; } } int main () { switch (ball) case 1:<<"Выше 4" << ; case 2:<<"Ниже 4" << ; break return 0; getch (); }
Решение задачи: «Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main() { static char res[128][128]; int res_top = 0; printf("Students count: "); // Количество студентов fflush(stdout); int students_count; scanf("%d", &students_count); int i, k; for (i = 0; i < students_count; i++) { char name[128]; printf("Student %d\nName: ", i + 1); // Имя студента fflush(stdout); gets(name); gets(name); char group[128]; printf("Group: "); // Группа fflush(stdout); scanf("%s", group); double mark; printf("Mark: "); // Средний балл fflush(stdout); scanf("%lf", &mark); if (mark >= 4.0) { double grant; printf("Grant: "); // Стипендия fflush(stdout); scanf("%lf", &grant); } else { strcpy(res[res_top], name); int j = strlen(name); strcpy(res[res_top] + j, ": "); j += 2; printf("Subjects count: "); // Количество предметов fflush(stdout); int subjects_count; scanf("%d", &subjects_count); for (k = 0; k < subjects_count; k++) { char name[128]; printf("Subject %d\nName: ", i + 1); // Название предмета fflush(stdout); scanf("%s", name); strcpy(res[res_top] + j, name); j += strlen(name); strcpy(res[res_top] + j, ", "); j += 2; int mark; printf("Mark: "); // Оценка fflush(stdout); scanf("%d", &mark); } res_top++; } } for (i = 0; i < res_top; i++) { res[i][strlen(res[i]) - 2] = 0; puts(res[i]); } return 0; }
Объяснение кода листинга программы
- В начале программы объявляются две переменные: статический массив
res
размером 128x128 и переменнаяres_top
для отслеживания количества заполненных элементов массива. - Далее программа запрашивает у пользователя количество студентов и сохраняет это значение в переменную
students_count
. - Затем следует цикл
for
, который выполняется для каждого студента. Внутри цикла объявляются переменныеname
,group
,mark
,grant
, которые используются для хранения информации о студенте. - Если средний балл студента (
mark
) больше или равен 4.0, то программа запрашивает стипендию и сохраняет ее значение в переменнуюgrant
. В противном случае, программа сохраняет в массивres
имя студента и информацию о его предметах. - После окончания цикла программа выводит на экран информацию о студентах, которые не получают стипендию, в формате
Имя студента: Группа: Mark: Subjects count: Subject 1 Name: Mark 1, Subject 2 Name: Mark 2, ...
. - В конце программы происходит инициализация переменных
res[i][strlen(res[i]) - 2]
иres_top
равной 0. - Затем программа выводит на экран все строки, хранящиеся в массиве
res
, с помощью функцииputs
. - Программа завершается возвратом значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д