Как задать цикл для нахождения числа студентов-ударников - C (СИ)
Формулировка задачи:
Дано задание, список студентов в структуре, структура вводится с клавиатуры, надо найти кол-во ударников. Не могу понять, как задать цикл для нахождения числа ударников.
Что тут не так? В конце получается, что g и h равны 0.
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> #include <string.h> #define MAX 100 struct Program { char name[MAX]; int num_gr; int physic; int matan; int linal; int terver; }; void main () { int i, n; float h; int g = 0; printf ("Vvedite col-vo studentov "); scanf ("%i", &n); struct Program p[10]; for (i=0; i<n; i++){ printf ("Vvedite FIO studenta ", i); scanf ("%s", &p[i].name); printf ("Vvedite nomer gruppi ", i); scanf ("%i", &p[i].num_gr); printf ("Vvedite ball po fizike ", i); scanf ("%i", &p[i].physic); printf ("Vvedite ball po matany ", i); scanf ("%i", &p[i].matan); printf ("Vvedite ball po linaly ", i); scanf ("%i", &p[i].linal); printf ("Vvedite ball po tervery ", i); scanf ("%i", &p[i].terver); } do { if((p[i].physic >=4) && (p[i].matan >=4) && (p[i].linal >=4) && (p[i].terver >=4)){ g++; i++; printf("%f", g); } else { i++; } } while (i<n); h = (g/n)*100; printf("kol-vo procentov %n"); printf ("%f", h); }
Решение задачи: «Как задать цикл для нахождения числа студентов-ударников»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> #include <string.h> #define MAX 100 struct Program { char name[MAX]; int num_gr; int physic; int matan; int linal; int terver; }; void main () { int i, n; float h; printf ("Vvedite col-vo studentov "); scanf ("%i", &n); struct Program p[10]; for (i=0; i<n; i++){ printf ("Vvedite FIO studenta ", i); scanf ("%s", &p[i].name); printf ("Vvedite nomer gruppi ", i); scanf ("%i", &p[i].num_gr); printf ("Vvedite ball po fizike ", i); scanf ("%i", &p[i].physic); printf ("Vvedite ball po matany ", i); scanf ("%i", &p[i].matan); printf ("Vvedite ball po linaly ", i); scanf ("%i", &p[i].linal); printf ("Vvedite ball po tervery ", i); scanf ("%i", &p[i].terver); } i = 0; int g = 0; do { if((p[i].physic >=4) && (p[i].matan >=4) && (p[i].linal >=4) && (p[i].terver >=4)){ g++; i++; printf("%f", g); } else { i++; } } while (i<n); h = (g/n)*100; printf("kol-vo procentov %n"); printf ("%f", h); }
Объяснение кода листинга программы
В этом коде задача состоит в том, чтобы найти количество студентов-ударников в группе. Список действий:
- Ввод количества студентов: с помощью функции
scanf
вводится количество студентов (переменнаяn
). - Ввод данных о каждом студенте: в цикле
for
происходит ввод данных о каждом студенте (имя, номер группы, оценки по физике, математике, линейке и теории вероятности). - Проверка на условие: в цикле
do-while
происходит проверка, является ли студент ударником (оцены по всем предметам >= 4). Если да, то переменнаяg
увеличивается на 1. - Вывод количества студентов-ударников в процентах: после окончания цикла
do-while
, вычисляется и выводится процент студентов-ударников. Коды ошибок: - Если во время ввода данных пользователь введет символ
carriage return
(возврат каретки), то все последующие вызовы функцииscanf
будут читать данные из предыдущего ввода. - Если во время ввода данных пользователь введет некорректные данные (например, не число или число больше максимально допустимого значения), то программа может аварийно завершиться.
- Если количество студентов-ударников будет равно 0, то программа может аварийно завершиться из-за деления на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д