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