Вывести учеников, которые не получили ни одной тройки за последнюю четверть - C (СИ)
Формулировка задачи:
Uses crt;
Type
book=Record
fam: String;
oc1: Byte;
oc2: Byte;
oc3: Byte;
klass: String;
end;
Var
x: Array [1..20] of book;
i,n: Byte;
BEGIN
Clrscr;
Writeln('Кол-во учеников не более 20 : '); Readln(n);
For i:=1 to n do
begin
Write('Введите фамилию ученика: '); Readln(x[i].fam);
Write('Введите 1 оценку: '); Readln(x[i].oc1);
Write('Введите 2 оценку: '); Readln(x[i].oc2);
Write('Введите 3 оценку: '); Readln(x[i].oc3);
Write('В каком классе он учится? '); Readln(x[i].klass);
end;
Writeln;
Writeln('Ученики, которые не получили ни одной тройки за последнюю четверть:');
For i:=1 to n do
If (x[i].oc1<>3) and (x[i].oc2<>3) and (x[i].oc3<>3) Then
Writeln(x[i].fam,'>>>',x[i].klass);
Readln
END.Решение задачи: «Вывести учеников, которые не получили ни одной тройки за последнюю четверть»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef unsigned char byte;
struct book {
char fam[50];
byte oc1;
byte oc2;
byte oc3;
char klass[10];
} book;
struct book *x;
byte i,n;
void main(int argc, const char* argv[])
{
//clrscr;
printf("%s","Кол-во учеников не более 20 : "); scanf("%ui",&n);
x = malloc(sizeof(book)*n);
memset(x,0,sizeof(book)*n);
for( i = 0; i < n; i++)
{
printf("%s","Введите фамилию ученика: "); scanf("%s",x[i].fam);
printf("%s","Введите 1 оценку: "); scanf("%ui",&x[i].oc1);
printf("%s","Введите 2 оценку: "); scanf("%ui",&x[i].oc2);
printf("%s","Введите 3 оценку: "); scanf("%ui",&x[i].oc3);
printf("%s","В каком классе он учится? "); scanf("%s",x[i].klass);
}
puts("Ученики, которые не получили ни одной тройки за последнюю четверть:");
for( i = 0; i < n; i++) {
if ((x[i].oc1!=3) && (x[i].oc2!=3) && (x[i].oc3!=3))
printf("%s >>> %s\n\r", x[i].fam, x[i].klass);
};
getch();
free(x);
};
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
stdio.hдля работы с вводом/выводомstdlib.hдля работы с памятьюstring.hдля работы со строкамиconio.hдля работы с функциейgetch(), которая нужна для ожидания нажатия клавиши после вывода информации на экран
- Создаем структуру данных
book, которая представляет собой информацию об ученике - Выделяем память под массив структур
bookс помощью функцииmalloc() - Заполняем массив структур данными, введенными пользователем с помощью функции
scanf() - Выводим на экран список учеников, которые не получили ни одной тройки за последнюю четверть
- Используем условное выражение
if, чтобы проверить, была ли получена тройка по каждому предмету - Если тройка не была получена, выводим на экран данные ученика
- Используем условное выражение
- Освобождаем память, выделенную под массив структур, с помощью функции
free() - Завершаем работу программы с помощью функции
getch(), которая ожидает нажатия клавиши после вывода информации на экран