Занятие 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; просмотров: 56; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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