Меню сайта
Реклама
Оцените сайт
Программирование
|
Решение задачи №9.Задача №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. Алгоритм решения задачи
|
Реклама
Поиск
Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |