Описать структуру "Спортсмен" - PascalABC.NET
Формулировка задачи:
Функции
1. Ввод данных (ввод данных с клавиатуры, чтение данных с файла [предусмотреть
запись данных в файл, чтение данных из файла]).
2. Обработка данных (добавление и удаление записей)
3. Поиск информации
4. Вывод упорядоченной информации (вывод результатов)
5. Выход из программы.
Структура элемента массива спортсмен: фамилия, страна, год рождения, результат (в
баллах), физические данные – рост, вес. Определить:
─ средний рост и вес спортсменов заданной страны;
─ найти лучшего спортсмена заданной страны;
─ список спортсменов заданного возраста с результатом, не хуже заданного.
Также нужно использовать процедуры
Решение задачи: «Описать структуру "Спортсмен"»
textual
Листинг программы
- program Federal_Athletics;
- uses crt;
- Const MAX_Athletes = 100;
- type
- Athlete = record
- Number:byte; Last_Name:string[20]; Country:string[20]; AGE_OF:integer; Score:integer; Growth:130..220; Weight:30..140;
- end;
- List_of_Athletes = array[1..MAX_Athletes] of Athlete;
- var
- a:List_of_Athletes; l:file of Athlete; i,j,n:byte; g:integer;
- //
- Procedure Enterface;
- begin TextBackGround( White ); TextColor( Black );
- clrscr; end;
- //
- Procedure WriteFromKeyboard(a:list_of_athletes; i:byte);
- var s:byte; n:byte;
- begin
- i:= 0; J:= 0;
- repeat
- inc(j);
- clrscr;
- inc(i);
- write(' Номер : '); readln(a[i].number);
- write(' Фамилия: '); readln(a[i].Last_Name);
- write(' Страна: '); readln(a[i].Country);
- write(' Рост(130..220): '); readln(a[i].Growth);
- write(' Вес(30..140): '); readln(a[i].Weight);
- write(' Возраст: '); readln(a[i].AGE_OF);
- write(' Результат: '); readln(a[i].Score); writeln;
- writeln(' Выход: - "1"');
- writeln(' Продолжить: - "2" затем "ВВОД"');
- readln(s);
- until s=1;
- assign(l, 'Athlete.dat');
- rewrite(l);
- for i := 1 to n do
- write(l, A[i]);
- close(l);
- end;
- //
- Procedure Process(A:List_Of_Athletes; i:byte); //нужно A[i].Score,Growth,Weight,Country,Age_OF,Last_Name)
- var gr,wg:real; max,res,age:integer; s1:string; bol:boolean; m,k:byte;
- begin
- write(' Страна: '); readln(s1);
- write(' Результат: '); readln(res);
- write(' Возраст: '); readln(age);
- writeln;
- gr:=0; wg:=0; m:=0; max:=a[1].Score; k:=1;
- bol:= true;
- for i:= 1 to Max_Athletes do
- if a[i].Country = s1 then
- begin
- inc(m);
- gr:= gr + a[i].Growth;
- wg:= wg + a[i].Weight;
- if a[i].Score>max
- then
- begin
- max:=a[i].Score;
- k:=i;
- end;
- if (a[i].AGE_OF=age) and (a[i].Score>=res) then
- begin
- writeln(' Cписок спортсменов данного возраста с результатом, не хуже данного: ':69,a[i].Last_Name);
- bol:= false;
- end;
- end;
- if bol then
- writeln(' Спортсменов данного возраста с результатом, не хуже данного не найдено.');
- writeln(' Средний рост спортсменов ',s1,': ',gr/m:0:3);
- writeln(' Средний вес спортсменов ',s1,': ',wg/m:0:3);
- writeln(' Лучший спортсмен ',s1,': ',a[k].Last_Name);
- readln;
- end;
- //
- Procedure Output;
- var i:byte;
- begin
- write('Введите кол-во записей');
- readln(i); j:=i;
- writeln('№':3,'Фамилия':10,'Страна':14,'Рост':6,'Вес':6,'Возраст':11,'Результат':11);
- for i:=1 to j do
- writeln(i:3,a[i].Last_Name:10,a[i].Country:14,a[i].Growth:6,a[i].Weight:6,a[i].AGE_OF:11,a[i].Score:11);
- end;
- //
- procedure add(n:byte);
- var
- i: integer;
- begin
- Write('Введите количество атлетов которое хотите добавить: ');
- readln(n);
- Writeln('Ввод данных...');
- for i := 1 to n do
- begin
- write(' Номер : '); readln(a[i].number);
- write(' Фамилия: '); readln(a[i].Last_Name);
- write(' Страна: '); readln(a[i].Country);
- write(' Рост(130..220): '); readln(a[i].Growth);
- write(' Вес(30..140): '); readln(a[i].Weight);
- write(' Возраст: '); readln(a[i].AGE_OF);
- write(' Результат: '); readln(a[i].Score); writeln;
- end;
- assign(l, 'Athlete.dat');
- rewrite(l);
- for i := 1 to n do
- write(l, A[i]);
- close(l);
- end;
- //
- procedure scan;
- begin
- assign(l, 'Athlete.dat');
- reset(l);
- i := 0;
- while not Eof(l) do
- begin
- i := i + 1;
- read(l,a[i]);
- end;
- close(l);
- writeln(i);
- readln;
- end;
- //scan,add,process,WriteFromKeyboard,Output
- begin
- Enterface;
- assign(l,'Athlete.dat');
- rewrite(l);
- writeln('Введите 1 для того чтобы записать в файл числа с клавиатуры');
- writeln('Введите 2 для того чтобы считать с файл и выполнить вычисление');
- writeln('Введите 3 для того чтобы считать с клавиатуры и выполнить вычисление');
- writeln('Вывод данных с файла: 4');
- write('Введите 5 для того чтобы добавить записи в файл');
- writeln('для окончания "ВВОД"'); readln(g);
- repeat
- if g=1 then begin WriteFromKeyboard(A,i); end;
- if g=2 then begin scan; process(a,i); end;
- if g=3 then begin WriteFromKeyboard(a,i); process(a,i); end;
- if g=4 then begin scan; Output; end;
- if g=5 then begin add(n); end;
- until g=6;
- end.
Объяснение кода листинга программы
- Объявление переменных и структур:
- MAX_Athletes - константа, определяющая максимальное количество спортсменов (100).
- Athlete - структура, описывающая одного спортсмена. Содержит поля:
- Number - номер спортсмена (тип byte).
- Last_Name - фамилия спортсмена (тип string[20]).
- Country - страна спортсмена (тип string[20]).
- AGE_OF - возраст спортсмена (тип integer).
- Score - результат спортсмена (тип integer).
- Growth - рост спортсмена (тип integer, диапазон значений 130..220).
- Weight - вес спортсмена (тип integer, диапазон значений 30..140).
- List_of_Athletes - массив, содержащий список спортсменов. Каждый элемент массива - структура Athlete.
- a - список спортсменов (тип List_of_Athletes).
- l - файл спортсменов (тип file of Athlete).
- i, j, n - переменные для подсчета количества спортсменов.
- g - переменная для обработки различных команд (тип integer).
- Процедуры:
- Enterface - вывод информации на экран и очистка экрана.
- WriteFromKeyboard - ввод данных о спортсменах с клавиатуры и запись их в файл.
- Process - обработка данных о спортсменах: поиск спортсменов определенной страны, вычисление среднего роста, веса, поиск спортсмена с лучшим результатом в указанном возрасте.
- Output - вывод данных о спортсменах на экран.
- Add - добавление новых спортсменов в список и запись обновленного списка в файл.
- Scan - чтение данных из файла и обработка их.
- Основная часть программы:
- Ввод команды пользователем (числа от 1 до 6).
- Если команда равна 1, то выполняется процедура WriteFromKeyboard и данные записываются в файл.
- Если команда равна 2, то выполняется процедура Scan, затем процедура Process и результаты вычислений выводятся на экран.
- Если команда равна 3, то выполняется процедура WriteFromKeyboard, затем процедура Process и результаты вычислений выводятся на экран.
- Если команда равна 4, то выполняется процедура Scan и результаты вычислений выводятся на экран.
- Если команда равна 5, то выполняется процедура Add, которая добавляет новых спортсменов в список и записывает обновленный список в файл.
- Если команда равна 6, то цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д