Вывести фамилии студентов, учащихся на 4 и 5 - C (СИ)
Формулировка задачи:
Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы студента, номер группы, оценки с 3-х предметов: а) математического анализа, б) алгебры в) программирования. Написать программу, вводит информацию из ведомости и печатает фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими.
#include <conio.h>
#include <stdio.h>
struct zimova sesia;
{
char* PIP;
int number;
int A[3];
};
void main ()
{
struct zimova sisia X[1000];
int i,j,n;
printf ("Kilkist stud=");
scanf ("%d", &n);
for (i=0; i<n; i++)
{printf ("vvedit PIP:");
scanf ("%S", &X[i].PIP);
printf ("vvedit N: group");
scanf ("%", &X[i].Number);
for (j=0;j<3; j++)
printf ("vvedit %d baly", j);
scanf ("%d", &x[i].A[j]);Решение задачи: «Вывести фамилии студентов, учащихся на 4 и 5»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define n 3 //Кол-во студентов
#define m 100
struct Sesia{ //**Структура Данных**
char surname[m]; // #Фамилия
char name_patronymic[m]; // #Инициалы
char group[m]; // #Группа
unsigned int number[3]; // #Оценка
};
int main(){
int i, j, k; //Счетчик
int mark; //Вводимая оценка
bool buf; //Флаг
Sesia Students[n]; //Массив структур
/*Тут можешь до 3-х строк сократить хД*/
printf("Please enter informations for students.\n\n");
for(i = 0; i < n; i++){
printf(" Surname: ");
scanf("%s", &Students[i].surname);
printf(" N.O.: ");
scanf("%s", &Students[i].name_patronymic);
printf(" Group: ");
scanf("%s", &Students[i].group);
printf("\nPlease enter mark for the subjects.\n");
printf(" Mathematical analysis: ");
scanf("%d", &Students[i].number[0]);
printf(" Algebra: ");
scanf("%d", &Students[i].number[1]);
printf(" Programming: ");
scanf("%d", &Students[i].number[2]);
printf("\n-----------------------\n");
}
printf("Enter mark: ");
scanf("%d", &mark);
for(i = 0; i < n; i++){
buf = true;
for(j = 0; j < 3; j++){
if(Students[i].number[j] < mark){
buf = false;
break;
}
}
if(buf == true){
printf("\n%s %s %s\n", Students[i].surname, Students[i].name_patronymic, Students[i].group);
printf(" Mathematical analysis: %d Algebra: %d Programming: %d\n", Students[i].number[0], Students[i].number[1], Students[i].number[2]);
}
}
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
, , , - Определяем количество студентов (n) и максимальное количество символов в фамилии (m).
- Создаем структуру данных
Sesia, которая содержит поля: фамилия, инициалы, группа и оценки по трём предметам. - В функции main() создаем массив структур
Sesia(Students) и инициализируем его нулями. - Запрашиваем у пользователя ввод информации о каждом студенте: фамилию, инициалы, группу и оценки по трём предметам.
- Затем запрашиваем у пользователя оценку, по которой будет производиться отбор студентов.
- Далее в цикле проходим по всем студентам и проверяем, получена ли оценка по каждому предмету больше или равна текущей оценке.
- Если условие выполняется, то выводим информацию о студенте.
- По завершении работы программы возвращаем 0.