Занятие 2. Сортировка записей.
Рассмотрите решение задачи, наберите ее на компьютере, протестируйте, найдите в программе недостатки и устраните их. Дополните задачу комментариями и покажите учителю для оценки.
Задача 1. Во время лыжных соревнований в центральный судейский компьютер поступают данные в следующем виде: номер участника, его фамилия, страна и показанный результат. Составить программу, которая после ввода очередной информации выдает таблицу результатов участников в порядке ухудшения.
Program Ski;
Uses
Crt;
Type
inf= record
num: byte;
name,strana: string[30];
rez: real;
end;
Var
m: array [1..100] of inf;
i,j,k,l: integer;
Procedure Input;
Begin
write('Введите количество участников соревнований: ');
readln(k);
for i:=1 to k do
with m[i] do
begin
write('Введите номер участника: ');
readln(num);
write('Введите фамилию: ');
readln(name);
write('Какую страну представляет: ');
readln(strana);
write('Показанный результат: ');
readln(rez);
writeln;
end;
End;
Procedure Vich;
Var
o: real;
n,s:string;
nm: byte;
Begin
ClrScr;
for i:=1 to k-1 do
for j:=i+1 to k do
begin
if m[j].rez<m[i].rez
then
begin
o:=m[j].rez;{Меняем результаты}
m[j].rez:=m[i].rez;
m[i].rez:=o;
nm:=m[j].num;{Меняем номера}
m[j].num:=m[i].num;
m[i].num:=nm;
n:=m[j].name;{Меняем фамилии}
m[j].name:=m[i].name;
m[i].name:=n;
s:=m[j].strana; {Меняем страны}
|
|
m[j].strana:=m[i].strana;
m[i].strana:=s;
end;
end;
End;
Procedure Output;
Begin
for i:=1 to k do
with m[i] do
begin
writeln('',i,'-ое место занял:');
writeln('участник под номером: ',num);
writeln('Его фамилия: ',name);
writeln('Представляет страну : ',strana);
writeln('Показанный результат: ',rez:3:1);
writeln;
end;
End;
Begin
ClrScr;
Input;
Vich;
Output;
ReadKey;
End.
Задание. Дополните решенную Вами предыдущую задачу сортировкой по выбранному Вами полю записи и выводом отсортированного массива записей на экран. Сортировку осуществляйте с помощью одного из способов, выбранного учителем из предложенных:
- сортировка вставкой;
- сортировка выбором;
- сортировка методом простого обмена;
- сортировка с помощью рекурсии.
Самостоятельное решение задач
Выберите с учителем задачи для решения из предложенного списка. Для проверки учителем решения Вашей задачи приготовьте не только листинг и файл с протестированной задачей, но и 3-4 теста для демонстрации различных вариантов введения информации и вывода на экран.
Среди N абитуриентов, сдававших экзамены по информатике, математике и английскому языку, выбрать всех отличников и всех учащихся, набравших в сумме не меньше проходного балла. Данные о проходном балле вводятся с клавиатуры.
|
|
2. Среди N абитуриентов, сдававших экзамены по информатике, математике и английскому языку в перечисленном порядке, выбрать учащихся, не допущенных к сдаче следующего экзамена в связи с получением неудовлетворительной оценки по предыдущему экзамену. Выдать на экран список абитуриентов, удачно сдавших все экзамены.
3. Составить программу, выдающую справку о номере квартиры, в которой проживает жилец. В доме имеется N квартир и проживает M человек. Пользователь вводит фамилию жильца. Если в доме поживает несколько жильцов с такой фамилией, то выдается сообщение о необходимости ввести инициалы. Если инициалы у нескольких жильцов совпадают, то необходимо ввести год рождения. Если с такими данными найдется один жилец (несколько), то вывести номер (номера) квартир, где он (они) проживают и все введенные о нем (них) сведения. Если жильца с такой фамилией нет, то вывести сообщение об этом.
4. Составить программу, которая анализировала бы введенную информацию о пользователях городской телефонной сети и выдавала бы список абонентов, имеющих задолженность за месяц, а также считала пеню (вводится пользователем). Запись должна иметь поля:
|
|
- месяц анализа данных;
- фамилию, имя, отчество;
- номер телефона;
- адрес;
- имеющиеся льготы по оплате;
- абонентская плата;
- стоимость междугородних разговоров;
- стоимость дополнительных платных услуг.
По введенной информации и запросу пользователя предусмотреть в программе вывод предупреждения абонентов, имеющих задолженность.
5. Составить программу, собирающую данные об авиакомпаниях и выдающую справку туристу до запрашиваемого места. Справка должна содержать:
- название авиакомпании;
- название рейса;
- номер рейса;
- тип самолета;
- даты вылета (содержатся в массиве);
- наличие мест в 1 и 2 классах;
- стоимость перелета.
В случае покупки билета, массив записей должен быть соответственно измениться.
Во время лыжных соревнований в центральный судейский компьютер поступают данные в следующем виде: номер участника, его фамилия, страна и показанный результат. Составить алгоритм, который после ввода очередной информации выдает таблицу результатов участников в порядке ухудшения.
7. В экзаменационной ведомости фиксируются фамилии учеников, номера билетов, оценки, записанной прописью. Составьте подобную ведомость для группы из N человек на основе сформированного массива записей. Строка списка имеет следующий вид:
|
|
Иванов Александр билет № 12 (отлично)
Вывести информацию о результатах экзамена в следующем виде:
Количество экзаменуемых – 25
Сдали на "отлично" – 7
Сдали на "хорошо" – 10
Сдали на "удовлетворительно" – 7
Сдали на "неудовлетворительно" – 1
Не явились – нет
По окончании школы ученики сдавали экзамены по литературе, математике, физике и информатике. Определите экзамен, на котором ученики получили наиболее высокий средний бал и выведите список учащихся в порядке убывания результатов по этому экзамену.
9. Составить программу, организующую заполнение массива записями, содержащими информацию о здоровье детей в лагере отдыха. Запись должна содержать поля:
- фамилия, имя ребенка;
- дата прибытия в лагерь;
- вес ребенка (на день прибытия, через 10 дней, через 20 дней);
- рост ребенка;
- возраст;
- номер отряда;
- наличие хронических заболеваний.
Вывести данные о детях, увеличивающих свой вес и о детях, которые худеют.
10. Познакомившись с содержанием предыдущих задач придумайте свою интересную задачу и решите ее.
Дата добавления: 2021-04-06; просмотров: 44; Мы поможем в написании вашей работы! |

Мы поможем в написании ваших работ!