Файл: Какая страна в среднем показала наилучший результат? - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Условие задачи: В судейском журнале участников летней олимпиады имеется список с результатами спортсменов-пловцов. Одна запись этого списка содержит: Ф.И.О. спортсмена, какую страну он представляет, стартовый номер, три результата в секундах для трех заплывов. СУБД должна выдавать следующие сведения: - Определить, участвовал ли спортсмен Х в соревнованиях; - Ф.И.О. спортсмена, занявшего первое место по сумме времени в трех заплывах; - Какая страна в среднем показала наилучший результат. Я написала эту программу через массивы, я не могу написать её через файлы. Помогите, пожалуйста, написать эту же программу через файлы. Код программы(через массивы)

Решение задачи: «Файл: Какая страна в среднем показала наилучший результат?»

textual
Листинг программы
program Olimp;
uses crt;
type Spisok1=record  //список всех спортсменов
             fio:string[30];
             strana:string[30];
             num: integer;
             zap1,zap2,zap3:real;
             vsegozap:real;
             end;
    Spisok2=record //список стран-участниц
            strana:string[30];
            rez:real;//средний результат
            kol:integer;//количество спортсменов от страны
            end;
var f:file of Spisok1; //файл записей
    men:Spisok1;
    strn:array[1..30] of Spisok2;//массив стран
    n,m,i,j,k,p:integer;
    x,pob,stpob:string[30];
    min:real;
Begin
Write('Введите количество спортсменов - ');
Readln(n);
assign(f,'spisok');
rewrite(f);
for i:=1 to n do
With men do
 begin
  Writeln('Информация о ',i,' спортсмене ');
  Write('Введите название страны: ');
  Readln(strana);
  Write('Номер спортсмена: ');
  Readln(num);
  Write('Ф.И.О.: ');
  Readln(fio);
  Writeln('Введите результаты заплывов ',i,'-го пловца в секундах');
  Write('Первый заплыв: ');
  Readln(zap1);
  Write('Второй заплыв: ');
  Readln(zap2);
  Write('Третий заплыв: ');
  Readln(zap3);
  Vsegozap:=zap1+zap2+zap3;
  write(f,men);
 End;
write('Ввдите Ф.И.О. спортсмена для поиска: ');
readln(x);
//решаем задачу
reset(f);
k:=0;//участвовал или нет
m:=0;//количество разных стран
for i:=0 to filesize(f)-1 do
 begin
  read(f,men);
  if men.fio=x then k:=1; //определяем участвовал или нет
  //ищем победителя
  if i=0 then  //пусть сначала минимальный(не максимальный!!!) результат будет первый
   begin
    min:=men.vsegozap;
    pob:=men.fio;
   end
  else if men.vsegozap<min then //если меньше мин., то это мин.
   begin
    min:=men.vsegozap;
    pob:=men.fio;
   end;
 //составляем массив стран-участниц
  if i=0 then //первая по списку
   begin
    m:=1;
    strn[m].strana:=men.strana;//название
    strn[m].kol:=1; //кол. спортсменов
    strn[m].rez:=men.vsegozap;//суммарный результат
   end
  else  //если не первая
   begin
    p:=0;
    j:=1;
    while(j<=m)and(p=0) do///проверяем была уже или нет
    if strn[j].strana=men.strana then p:=1
    else j:=j+1;
    if p=0 then //если не было
     begin
      m:=m+1; //добавляем ее
      strn[m].strana:=men.strana;
      strn[m].kol:=1;
      strn[m].rez:=men.vsegozap;
     end
   else  //если была
    begin
     strn[m].kol:=strn[m].kol+1;//+1 спортсмен
     strn[m].rez:=strn[m].rez+men.vsegozap; //+ его суммарный результат
    end
  end;
 end;
close(f);
if k=1 then writeln('Спортсмен ',x,' участвовал в соревнованиях')
else writeln('Спортсмен ',x,' не участвовал в соревнованиях');
writeln('Первое место занял: ',pob);
min:=strn[1].rez/strn[1].kol;
stpob:=strn[1].strana;
for i:=2 to m do
if strn[i].rez/strn[i].kol<min then
 begin
  min:=strn[i].rez/strn[i].kol;
  stpob:=strn[i].strana;
 end;
writeln('Наилучший средний результат показала страна: ',stpob);
end.

Объяснение кода листинга программы

Этот код написан на языке Pascal ABC и выполняет следующие действия:

  1. Запрашивает у пользователя количество спортсменов, для которых нужно записать информацию.
  2. Создает файл spisok и записывает в него информацию о каждом спортсмене.
  3. Создает массив строк strn, который будет содержать информацию о странах-участницах.
  4. Проходит по всем странам-участницам и записывает информацию о каждой из них в файл.
  5. Определяет наилучший средний результат среди всех стран-участниц.
  6. Выводит на экран информацию о спортсмене, который ищет, и наилучшую страну.
  7. Сохраняет наилучший средний результат и страну, которая его показала, в переменных min и stpob соответственно.
  8. Закрывает файл и выводит на экран информацию о наилучшей стране.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы