Задача №9.
В некотором вузе абитуриенты проходили предварительное тестирование, по результатам которого они могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по двум предметам, по каждому предмету абитуриент может набрать от 0 до 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из двух предметов. На вход программе подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500. В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следуют N строк, имеющих формат:
<Фамилия> <Имя> <Баллы>
где
<Фамилия> — строка, состоящая не более чем из 20 символов, <Имя> — строка, состоящая не более чем из 15 символов,
<Баллы> — строка, содержащая два целых числа, разделенных пробелом, — баллы, полученные на тестировании по каждому из двух предметов.
При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Пример входной строки: Романов Вельямин 48 39
Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, потерпевших неудачу, т. е. не допущенных к сдаче экзаменов в первом потоке. При этом фамилии должны выводиться в алфавитном порядке.
Решение задачи №9.var
f:array[1..500] of record {задаем массив записей с полями fam и bal}
fam:string; {поле fam (типа строка) будет принимать значение фамилии и имени}
bal:boolean; {поле bal (логического типа) будет проверять прошел ли абитуриент тестирование}
end;
buf:boolean; {логическая переменная buf поможет нам отсортировать абитуриентов}
str:string; {строковая переменная str поможет нам отсортировать абитуриентов}
b1,b2,i,n,j:integer; {целочисленные переменные, b1-оценка за первый предмет, b2-оценка за второй предмет, i-индекс массива, n-количество абитуриентов, j-индекс}
c:char; {символьная переменная для считывания посимволам фамилии и имени}
begin
readln(n); {считываем количество абитуриентов}
for i:=1 to n do {задаем цикл для считывания данных всех абитуриентов}
begin
repeat {считываем фамилию до пробела}
begin
read(c);
f[i].fam:=f[i].fam+c; {поле записи fam принимает значение фамилии абитуриента}
end;
until c=' ';
repeat {считываем имя абитуриента}
begin
read(c);
f[i].fam:=f[i].fam+c; {поле записи fam к фамилии прибавляет имя}
end;
until c=' ';
f[i].bal:=false; {начальное значение поле bal всего массива записей будет ложно}
read(b1,b2); {считываем две оценки}
if (b1<30)or(b2<30) then f[i].bal:=true; {если хоть одна оценка ниже 30 балов, то поле bal будет истина, абитуриент не прошел тестирование}
end; {мы считали в массив записей данные всех абитуриентов и определили какие из них не прошли тестирование}
For i := 1 To n-1 do begin {сортируем весь массив записей в алфавитном порядке поля fam}
For j := i + 1 To n do
If f[i].fam > f[j].fam Then
begin
str:= f[i].fam;
f[i].fam:= f[j].fam;
f[j].fam:= str;
buf:= f[i].bal;
f[i].bal:= f[j].bal;
f[j].bal:= buf;
end;
end; {мы отсортировали весь массив, нам осталось вывести на экран абитуриентов не прошедших тестирование в алфавитном порядке}
for i:=1 to n do
if f[i].bal=true then writeln (f[i].fam); {если поле массива записей bal истина, то выводим на экран фамилию и имя абитуриента}
end.


- считываем данные введенные с клавиатуры в массив записей, одна запись будет принимать значение Фамилии и Имени, другая будет показывать прошел ли тест абитуриент
- сортируем массив записей в алфавитном порядку по полю содержащему Фамилию и Имя
- выводим на экран абитуриентов которые не прошли тестирование
