Распечатать анкетные данные студентов, получивших в последнюю сессию оценки 2 - C (СИ)

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

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

Распечатать анкетные данные студентов, получивших в последнюю сессию оценки 2. си Исходные данные: программа вводит информацию о 10 студентах: фамилию, день, месяц и год рождения, оценки двух последних сессий, если в каждой сессии по 8 предметов.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>

struct STUDENT
{
    char students [50];
    int point1[8];
    int point2[8];
        
}
int main ()
{
    int i,j;
    STUDENT gruppa[50];
    const char*pName[20]={"Mali","Necheparenko","Kumachev","Nikitin","Gnzich","Bova","Kozirev","Kondratuk","Phenichkin","Bastrygin"};
    struct STUDENT stud [10];
    for(int i=0;i<10;i++)
    {
    strcpy_s(gruppa[i].point1,10,pName[i]);
    }
    for (int j=0;j<8;j++)
    {    
        stud[i].point1[j]=rand()%5;
        stud[i].point2[j]=rand()%5;
    printf("\n Sredni ball %d:\nNige srednego:",gruppa[i].point1[i],gruppa[i].point2[j]);
    
    }
    
    for (int i=0; i<10; i++)
{
        
     for(int j=0; j<8; j++)
         
      if(stud[i].point1[j]==5) ;

    }
    printf("Sredni ball: %d");
    for (int i=0; i<10; i++)
    {
    
     for(int j=0; j<8; j++)
      if (gruppa[i].point1[j]==4 || stud[i].point1[j]==5) ;
         
    }
    printf("\n Nige srednego: %d процентов");

    /*FILE *f;
    f=fopen("input.dat","wb");
    fwrite(stud,sizeof(STUDENT),10,f);*/
    printf("Press any key...");
    getch ();
return 0;
}
доделайле плиз

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

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
#define STUD 3
#define PRED 2
 
struct stud {
    char fam[80 + 1];
    char vik[80 + 1];
    int print;
}
part1[STUD + 1];
 
struct sesion {
    int ses1[PRED];
    int ses2[PRED];
}
part2[STUD];
 
void printCheck(int ball, int i)
{
    if( (ball <= 2) && (part1[i].print != 1) )
    {
            part1[i].print = 1;
    }
}
 
main()
{
    int i, j, cnt = 0;
 
    system("cls");
 
    for(i = 1; i <= STUD; i++)
    {
        printf("vvedit prizvuwe %d studenta:\n", i);
        scanf("%s", part1[i].fam);
        printf("vvedit rik narodchenny %d studenta:\n", i);
        scanf("%s", part1[i].vik);
    }
    printf("\n");   system("pause");
 
    for(i = 1; i <= STUD; i++)
    {
        for(j = 1; j <= PRED; j++)
        {
            printf("Vvedit %d ocinku dl9 studenta %s za 1 sesiyu: ", j, part1[i].fam);
            scanf("%d", &part2[i].ses1[j-1]);
 
            printCheck(part2[i].ses1[j-1], i);
        }
    }
 
    for(i = 1; i <= STUD; i++)
    {
        for(j = 1; j <= PRED; j++)
        {
            printf("Vvedit %d ocinku dl9 studenta %s za 2 sesiyu: ", j, part1[i].fam);
            scanf("%d", &part2[i].ses2[j-1]);
 
            printCheck(part2[i].ses2[j-1], i);
        }
    }
 
 
    printf("---------------------------------------------------------------\n");\
    printf("| PRIZVUWE | DATA NAR | OCINKU ZA 1 SESI}0 | OCINKU ZA 2 SESI}0 |\n");
    printf("---------------------------------------------------------------\n");
    for(i = 1; i <= STUD; i++)
    {
        if(part1[i].print)
        {
            printf("%s\t  %s\t", part1[i].fam, part1[i].vik);
            for(j = 1; j <= PRED; j++)
            {
                printf("%d;",part2[i].ses1[j-1]);
            }
            printf("\t\t\t");
            for(j = 1; j <= PRED; j++)
            {
                printf("%d;",part2[i].ses2[j-1]);
            }
            printf("\n");
            cnt++;
        }
    }
 
    if(cnt)
        printf("\nKilkist studentiv v jakuh o4inka <= 2: %d\n", cnt);
    else
        printf("\nStudentu v jakuh o4inka <= 2 vidsutni!\n");
getch();
return 0;
}

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

В данном коде реализована программа для хранения и печати анкетных данных студентов. Структура данных включает в себя фамилию и имя студента, а также оценки, полученные им на двух последних сессиях. Код содержит следующие основные элементы:

  1. Ввод данных: сначала программа запрашивает и сохраняет фамилию и имя каждого студента (индекс от 1 до STUD).
  2. Оценки за первую сессию: затем программа запрашивает и сохраняет оценки каждого студента за первую сессию (индекс от 1 до PRED). Здесь также вызывается функция printCheck, которая проверяет, была ли получена оценка 2, и если да, то устанавливает флаг print в 1 для данного студента.
  3. Оценки за вторую сессию: аналогично происходит ввод оценок за вторую сессию.
  4. Печать данных: после ввода всех данных программа выводит список студентов, которые получили оценку 2 или ниже на обеих сессиях. В этом списке выводятся фамилия, имя, оценки за первую и вторую сессию для каждого студента.
  5. Подсчет количества студентов с оценкой 2 или ниже: в конце программы подсчитывается количество студентов, у которых установлен флаг print. Если это количество больше 0, то выводится сообщение о количестве таких студентов и их фамилиях. Если же таких студентов нет, выводится соответствующее сообщение. Стоит отметить, что код не содержит обработки ошибок и проверки на конец строки при вводе, что является хорошей практикой программирования. Также в коде используется устаревший ввод-вывод с помощью функций scanf и printf без использования fflush, что может привести к проблемам с точностью ввода.

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


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

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

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