Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин - C (СИ)

Узнай цену своей работы

Формулировка задачи:

4. Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Если средний балл 4 и выше, то указать размер стипендии. Если средний балл ниже, то указать перечень дисциплин с оценками. Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream>
  4. #include <clocale>
  5. using namespace std;
  6. struct stud
  7. {
  8. char familiy [30],data[6],gruppa[4];
  9. double srball;
  10. union ball
  11. {
  12. char *predmet[4];
  13. double stependia;
  14. }
  15. }
  16. int main ()
  17. {
  18. switch (ball)
  19. case 1:<<"Выше 4" << ;
  20. case 2:<<"Ниже 4" << ; break
  21.  
  22. return 0;
  23. getch ();
  24. }
Что-то начал

Решение задачи: «Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5.     static char res[128][128];
  6.     int res_top = 0;
  7.     printf("Students count: "); // Количество студентов
  8.     fflush(stdout);
  9.     int students_count;
  10.     scanf("%d", &students_count);
  11.     int i, k;
  12.     for (i = 0; i < students_count; i++) {
  13.         char name[128];
  14.         printf("Student %d\nName: ", i + 1); // Имя студента
  15.         fflush(stdout);
  16.         gets(name);
  17.         gets(name);
  18.         char group[128];
  19.         printf("Group: "); // Группа
  20.         fflush(stdout);
  21.         scanf("%s", group);
  22.         double mark;
  23.         printf("Mark: "); // Средний балл
  24.         fflush(stdout);
  25.         scanf("%lf", &mark);
  26.         if (mark >= 4.0) {
  27.             double grant;
  28.             printf("Grant: "); // Стипендия
  29.             fflush(stdout);
  30.             scanf("%lf", &grant);
  31.         } else {            
  32.             strcpy(res[res_top], name);
  33.             int j = strlen(name);
  34.             strcpy(res[res_top] + j, ": ");
  35.             j += 2;
  36.             printf("Subjects count: "); // Количество предметов
  37.             fflush(stdout);
  38.             int subjects_count;
  39.             scanf("%d", &subjects_count);
  40.             for (k = 0; k < subjects_count; k++) {                
  41.                 char name[128];
  42.                 printf("Subject %d\nName: ", i + 1); // Название предмета
  43.                 fflush(stdout);
  44.                 scanf("%s", name);
  45.                 strcpy(res[res_top] + j, name);
  46.                 j += strlen(name);
  47.                 strcpy(res[res_top] + j, ", ");
  48.                 j += 2;
  49.                 int mark;
  50.                 printf("Mark: "); // Оценка
  51.                 fflush(stdout);
  52.                 scanf("%d", &mark);
  53.             }
  54.             res_top++;
  55.         }
  56.     }
  57.    
  58.     for (i = 0; i < res_top; i++) {
  59.         res[i][strlen(res[i]) - 2] = 0;
  60.         puts(res[i]);
  61.     }
  62.     return 0;
  63. }

Объяснение кода листинга программы

  1. В начале программы объявляются две переменные: статический массив res размером 128x128 и переменная res_top для отслеживания количества заполненных элементов массива.
  2. Далее программа запрашивает у пользователя количество студентов и сохраняет это значение в переменную students_count.
  3. Затем следует цикл for, который выполняется для каждого студента. Внутри цикла объявляются переменные name, group, mark, grant, которые используются для хранения информации о студенте.
  4. Если средний балл студента (mark) больше или равен 4.0, то программа запрашивает стипендию и сохраняет ее значение в переменную grant. В противном случае, программа сохраняет в массив res имя студента и информацию о его предметах.
  5. После окончания цикла программа выводит на экран информацию о студентах, которые не получают стипендию, в формате Имя студента: Группа: Mark: Subjects count: Subject 1 Name: Mark 1, Subject 2 Name: Mark 2, ....
  6. В конце программы происходит инициализация переменных res[i][strlen(res[i]) - 2] и res_top равной 0.
  7. Затем программа выводит на экран все строки, хранящиеся в массиве res, с помощью функции puts.
  8. Программа завершается возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы