Pascaler
О проекте Теоретический материал Тестирование Архив задач
Войти в личный кабинет



О проекте


Преподавателям


Тема: Сортировка записей.

Рассмотрите решение задачи, наберите ее на компьютере, протестируйте, найдите в программе недостатки и устраните их. Дополните задачу комментариями и покажите учителю для оценки.

Задача 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 теста для демонстрации различных вариантов введения информации и вывода на экран.

  1. Среди N абитуриентов, сдававших экзамены по информатике, математике и английскому языку, выбрать всех отличников и всех учащихся, набравших в сумме не меньше проходного балла. Данные о проходном балле вводятся с клавиатуры.


  2. Среди N абитуриентов, сдававших экзамены по информатике, математике и английскому языку в перечисленном порядке, выбрать учащихся, не допущенных к сдаче следующего экзамена в связи с получением неудовлетворительной оценки по предыдущему экзамену. Выдать на экран список абитуриентов, удачно сдавших все экзамены.


  3. Составить программу, выдающую справку о номере квартиры, в которой проживает жилец. В доме имеется N квартир и проживает M человек. Пользователь вводит фамилию жильца. Если в доме поживает несколько жильцов с такой фамилией, то выдается сообщение о необходимости ввести инициалы. Если инициалы у нескольких жильцов совпадают, то необходимо ввести год рождения. Если с такими данными найдется один жилец (несколько), то вывести номер (номера) квартир, где он (они) проживают и все введенные о нем (них) сведения. Если жильца с такой фамилией нет, то вывести сообщение об этом.


  4. Составить программу, которая анализировала бы введенную информацию о пользователях городской телефонной сети и выдавала бы список абонентов, имеющих задолженность за месяц, а также считала пеню (вводится пользователем). Запись должна иметь поля:
    • месяц анализа данных;
    • фамилию, имя, отчество;
    • номер телефона;
    • адрес;
    • имеющиеся льготы по оплате;
    • абонентская плата;
    • стоимость междугородних разговоров;
    • стоимость дополнительных платных услуг.

    По введенной информации и запросу пользователя предусмотреть в программе вывод предупреждения абонентов, имеющих задолженность.


  5. Составить программу, собирающую данные об авиакомпаниях и выдающую справку туристу до запрашиваемого места. Справка должна содержать:
    • название авиакомпании;
    • название рейса;
    • номер рейса;
    • тип самолета;
    • даты вылета (содержатся в массиве);
    • наличие мест в 1 и 2 классах;
    • стоимость перелета.

    В случае покупки билета, массив записей должен быть соответственно измениться.


  6. Во время лыжных соревнований в центральный судейский компьютер поступают данные в следующем виде: номер участника, его фамилия, страна и показанный результат. Составить алгоритм, который после ввода очередной информации выдает таблицу результатов участников в порядке ухудшения.


  7. В экзаменационной ведомости фиксируются фамилии учеников, номера билетов, оценки, записанной прописью. Составьте подобную ведомость для группы из N человек на основе сформированного массива записей. Строка списка имеет следующий вид:

    Иванов Александр билет № 12 (отлично)

    Вывести информацию о результатах экзамена в следующем виде:

    Количество экзаменуемых - 25
    Сдали на "отлично" - 7
    Сдали на "хорошо" - 10
    Сдали на "удовлетворительно" - 7
    Сдали на "неудовлетворительно" - 1
    Не явились - нет

  8. По окончании школы ученики сдавали экзамены по литературе, математике, физике и информатике. Определите экзамен, на котором ученики получили наиболее высокий средний бал и выведите список учащихся в порядке убывания результатов по этому экзамену.


  9. Составить программу, организующую заполнение массива записями, содержащими информацию о здоровье детей в лагере отдыха. Запись должна содержать поля:
    • фамилия, имя ребенка;
    • дата прибытия в лагерь;
    • вес ребенка (на день прибытия, через 10 дней, через 20 дней);
    • рост ребенка;
    • возраст;
    • номер отряда;
    • наличие хронических заболеваний.

    Вывести данные о детях, увеличивающих свой вес и о детях, которые худеют.


  10. Познакомившись с содержанием предыдущих задач придумайте свою интересную задачу и решите ее.
Вернуться назад
2003—2012 © Группа «Vimedia»
Проект «Pascaler» — лучший на ХI Всероссийской конференции молодых исследователей с международным участием «Шаг в будущее», Россия, Москва, 12 – 16 апреля 2004г.