Файл: Какая страна в среднем показала наилучший результат? - 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 и выполняет следующие действия:
- Запрашивает у пользователя количество спортсменов, для которых нужно записать информацию.
- Создает файл
spisok
и записывает в него информацию о каждом спортсмене. - Создает массив строк
strn
, который будет содержать информацию о странах-участницах. - Проходит по всем странам-участницам и записывает информацию о каждой из них в файл.
- Определяет наилучший средний результат среди всех стран-участниц.
- Выводит на экран информацию о спортсмене, который ищет, и наилучшую страну.
- Сохраняет наилучший средний результат и страну, которая его показала, в переменных min и stpob соответственно.
- Закрывает файл и выводит на экран информацию о наилучшей стране.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д