Как задать цикл для нахождения числа студентов-ударников - C (СИ)

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

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

Дано задание, список студентов в структуре, структура вводится с клавиатуры, надо найти кол-во ударников. Не могу понять, как задать цикл для нахождения числа ударников.
#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);
}
Что тут не так? В конце получается, что g и h равны 0.

Решение задачи: «Как задать цикл для нахождения числа студентов-ударников»

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);
}

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

В этом коде задача состоит в том, чтобы найти количество студентов-ударников в группе. Список действий:

  1. Ввод количества студентов: с помощью функции scanf вводится количество студентов (переменная n).
  2. Ввод данных о каждом студенте: в цикле for происходит ввод данных о каждом студенте (имя, номер группы, оценки по физике, математике, линейке и теории вероятности).
  3. Проверка на условие: в цикле do-while происходит проверка, является ли студент ударником (оцены по всем предметам >= 4). Если да, то переменная g увеличивается на 1.
  4. Вывод количества студентов-ударников в процентах: после окончания цикла do-while, вычисляется и выводится процент студентов-ударников. Коды ошибок:
  5. Если во время ввода данных пользователь введет символ carriage return (возврат каретки), то все последующие вызовы функции scanf будут читать данные из предыдущего ввода.
  6. Если во время ввода данных пользователь введет некорректные данные (например, не число или число больше максимально допустимого значения), то программа может аварийно завершиться.
  7. Если количество студентов-ударников будет равно 0, то программа может аварийно завершиться из-за деления на ноль.

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

5   голосов , оценка 4.2 из 5
Похожие ответы