Описать структуру "Спортсмен" - PascalABC.NET

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

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

Функции 1. Ввод данных (ввод данных с клавиатуры, чтение данных с файла [предусмотреть запись данных в файл, чтение данных из файла]). 2. Обработка данных (добавление и удаление записей) 3. Поиск информации 4. Вывод упорядоченной информации (вывод результатов) 5. Выход из программы. Структура элемента массива спортсмен: фамилия, страна, год рождения, результат (в баллах), физические данные – рост, вес. Определить: ─ средний рост и вес спортсменов заданной страны; ─ найти лучшего спортсмена заданной страны; ─ список спортсменов заданного возраста с результатом, не хуже заданного.
Также нужно использовать процедуры

Решение задачи: «Описать структуру "Спортсмен"»

textual
Листинг программы
  1. program Federal_Athletics;
  2. uses crt;
  3. Const MAX_Athletes = 100;
  4.  
  5. type
  6. Athlete = record
  7. Number:byte; Last_Name:string[20]; Country:string[20]; AGE_OF:integer; Score:integer; Growth:130..220; Weight:30..140;
  8.  
  9. end;
  10. List_of_Athletes = array[1..MAX_Athletes] of Athlete;
  11.  
  12. var
  13. a:List_of_Athletes; l:file of Athlete; i,j,n:byte; g:integer;
  14.  
  15. //
  16.  
  17. Procedure Enterface;
  18. begin TextBackGround( White ); TextColor( Black );
  19. clrscr; end;
  20.  
  21. //
  22.  
  23. Procedure WriteFromKeyboard(a:list_of_athletes; i:byte);
  24. var s:byte; n:byte;
  25. begin
  26. i:= 0; J:= 0;
  27. repeat
  28. inc(j);
  29. clrscr;
  30. inc(i);
  31. write('  Номер : '); readln(a[i].number);
  32. write('  Фамилия: '); readln(a[i].Last_Name);
  33. write('  Страна: '); readln(a[i].Country);
  34. write('  Рост(130..220): '); readln(a[i].Growth);
  35. write('  Вес(30..140): '); readln(a[i].Weight);
  36. write('  Возраст: '); readln(a[i].AGE_OF);
  37. write('  Результат: '); readln(a[i].Score); writeln;
  38. writeln(' Выход: - "1"');
  39. writeln(' Продолжить: - "2" затем "ВВОД"');
  40. readln(s);
  41. until s=1;
  42. assign(l, 'Athlete.dat');
  43. rewrite(l);
  44. for i := 1 to n do
  45. write(l, A[i]);
  46. close(l);
  47. end;
  48.  
  49. //
  50.  
  51. Procedure Process(A:List_Of_Athletes; i:byte); //нужно A[i].Score,Growth,Weight,Country,Age_OF,Last_Name)
  52. var gr,wg:real; max,res,age:integer; s1:string;  bol:boolean; m,k:byte;
  53. begin
  54. write(' Страна: '); readln(s1);
  55. write(' Результат: '); readln(res);
  56. write(' Возраст: '); readln(age);
  57. writeln;
  58. gr:=0; wg:=0; m:=0; max:=a[1].Score; k:=1;
  59. bol:= true;
  60. for i:= 1 to Max_Athletes do
  61. if a[i].Country = s1 then
  62. begin
  63. inc(m);
  64. gr:= gr + a[i].Growth;
  65. wg:= wg + a[i].Weight;
  66. if a[i].Score>max
  67. then
  68. begin
  69. max:=a[i].Score;
  70. k:=i;
  71. end;    
  72. if (a[i].AGE_OF=age) and (a[i].Score>=res) then
  73. begin
  74. writeln('   Cписок спортсменов данного возраста с результатом, не хуже данного: ':69,a[i].Last_Name);
  75. bol:= false;
  76. end;
  77. end;
  78. if bol then
  79. writeln('   Спортсменов данного возраста с результатом, не хуже данного не найдено.');  
  80. writeln('   Средний рост спортсменов ',s1,': ',gr/m:0:3);
  81. writeln('   Средний вес спортсменов ',s1,': ',wg/m:0:3);
  82. writeln('   Лучший спортсмен ',s1,': ',a[k].Last_Name);
  83. readln;
  84. end;
  85.  
  86. //
  87.  
  88. Procedure Output;
  89. var i:byte;
  90. begin
  91. write('Введите кол-во записей');
  92. readln(i); j:=i;
  93. writeln('№':3,'Фамилия':10,'Страна':14,'Рост':6,'Вес':6,'Возраст':11,'Результат':11);
  94. for i:=1 to j  do
  95. 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);
  96. end;
  97.  
  98. //
  99.  
  100. procedure add(n:byte);
  101. var
  102. i: integer;
  103. begin
  104. Write('Введите количество атлетов которое хотите добавить: ');
  105. readln(n);
  106. Writeln('Ввод данных...');
  107. for i := 1 to n do
  108. begin
  109. write('  Номер : '); readln(a[i].number);
  110. write('  Фамилия: '); readln(a[i].Last_Name);
  111. write('  Страна: '); readln(a[i].Country);
  112. write('  Рост(130..220): '); readln(a[i].Growth);
  113. write('  Вес(30..140): '); readln(a[i].Weight);
  114. write('  Возраст: '); readln(a[i].AGE_OF);
  115. write('  Результат: '); readln(a[i].Score); writeln;
  116. end;
  117. assign(l, 'Athlete.dat');
  118. rewrite(l);
  119. for i := 1 to n do
  120. write(l, A[i]);
  121. close(l);
  122. end;
  123.  
  124. //
  125.  
  126. procedure scan;
  127.  
  128. begin
  129. assign(l, 'Athlete.dat');
  130. reset(l);
  131. i := 0;
  132. while not Eof(l) do
  133. begin
  134. i := i + 1;
  135. read(l,a[i]);
  136. end;
  137. close(l);
  138. writeln(i);
  139. readln;
  140. end;
  141.  
  142. //scan,add,process,WriteFromKeyboard,Output
  143.  
  144. begin
  145. Enterface;
  146. assign(l,'Athlete.dat');
  147. rewrite(l);
  148. writeln('Введите 1 для того чтобы записать в файл числа с клавиатуры');
  149. writeln('Введите 2 для того чтобы считать с файл и выполнить вычисление');
  150. writeln('Введите 3 для того чтобы считать с клавиатуры и выполнить вычисление');
  151. writeln('Вывод данных с файла: 4');
  152. write('Введите 5 для того чтобы добавить записи в файл');
  153. writeln('для окончания "ВВОД"'); readln(g);
  154. repeat
  155. if g=1 then begin WriteFromKeyboard(A,i); end;
  156. if g=2 then begin scan; process(a,i); end;
  157. if g=3 then begin WriteFromKeyboard(a,i); process(a,i); end;
  158. if g=4 then begin scan; Output; end;
  159. if g=5 then begin add(n); end;
  160. until g=6;
  161. end.

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

  1. Объявление переменных и структур:
    • 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).
  2. Процедуры:
    • Enterface - вывод информации на экран и очистка экрана.
    • WriteFromKeyboard - ввод данных о спортсменах с клавиатуры и запись их в файл.
    • Process - обработка данных о спортсменах: поиск спортсменов определенной страны, вычисление среднего роста, веса, поиск спортсмена с лучшим результатом в указанном возрасте.
    • Output - вывод данных о спортсменах на экран.
    • Add - добавление новых спортсменов в список и запись обновленного списка в файл.
    • Scan - чтение данных из файла и обработка их.
  3. Основная часть программы:
    • Ввод команды пользователем (числа от 1 до 6).
    • Если команда равна 1, то выполняется процедура WriteFromKeyboard и данные записываются в файл.
    • Если команда равна 2, то выполняется процедура Scan, затем процедура Process и результаты вычислений выводятся на экран.
    • Если команда равна 3, то выполняется процедура WriteFromKeyboard, затем процедура Process и результаты вычислений выводятся на экран.
    • Если команда равна 4, то выполняется процедура Scan и результаты вычислений выводятся на экран.
    • Если команда равна 5, то выполняется процедура Add, которая добавляет новых спортсменов в список и записывает обновленный список в файл.
    • Если команда равна 6, то цикл завершается.

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы