По данным сведениям об участниках класса определить среднюю массу мальчиков и средний рост девочек - Turbo Pascal

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

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

Помогите ришить задачу пожалуйста. По данным свединием об участниках класса определить среднюю массу мальчиков и средний рост девочек.Кто из участников класса самый высокий? Заранее всем спасибо.

Решение задачи: «По данным сведениям об участниках класса определить среднюю массу мальчиков и средний рост девочек»

textual
Листинг программы
TYPE student=record
  fam,pol:string;
  rost:100..220;
  mas:30..200;
  end;
var
    s:array[1..100] of student;
    i,n,u:integer;  sr,sv,kd,km,max:real;
begin
 write('Количество учеников= ');
 readln(n);
 writeln('Введите данные об учениках');
 for i:=1 to n do
 begin
 writeln(i,' ученик');
 with s[i] do
  begin
   write('Фамилия: '); readln(fam);
   write('Пол (М/Ж): '); readln(pol);
   write('Рост: '); readln(rost);
   write('Вес: '); readln(mas);
  end;
 end;
 
sv:=0;
sr:=0;
kd:=0;
km:=0;
 
for i:=1 to n do
begin
with s[i] do
begin
if pol='М' then
begin
km:=km+1;
sv:=sv+mas;
end;
if pol='Ж' then
begin
kd:=kd+1;
sr:=sr+rost;
end;
end;
end;
 
sv:=sv/km;
sr:=sr/kd;
writeln('Средняя масса мальчиков= ',sv);
writeln('Средний рост девочек= ',sr);
 
max:=100;
for i:=1 to n do
begin
with s[i] do
if rost>max then
begin
max:=rost;
u:=i;
end;
end;
with s[u] do
writeln('Самый высокий = ',fam);
 
END.

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

  1. Объявление переменных и типа данных:
    • TYPE student=record - объявление типа данных для записи, представляющей ученика, включающей поля fam (фамилия), pol (пол), rost (рост) и mas (масса)
    • var - начало области переменных
    • s:array[1..100] of student; - объявление массива s на 100 элементов типа student
    • i,n,u:integer; - объявление целочисленных переменных для использования в циклах
    • sr,sv,kd,km,max:real; - объявление вещественных переменных для хранения результатов
  2. Ввод данных о количестве учеников и их характеристик:
    • write('Количество учеников= '); - вывод сообщения для ввода количества учеников
    • readln(n); - считывание количества учеников из ввода пользователя
    • writeln('Введите данные об учениках'); - вывод сообщения для ввода данных об учениках
    • for i:=1 to n do - начало цикла для обработки каждого ученика
    • writeln(i,' ученик'); - вывод номера текущего ученика
    • with s[i] do - начало контекста для текущего элемента массива s
    • write('Фамилия: '); readln(fam); - ввод фамилии ученика
    • write('Пол (М/Ж): '); readln(pol); - ввод пола ученика
    • write('Рост: '); readln(rost); - ввод роста ученика
    • write('Вес: '); readln(mas); - ввод массы ученика
    • end; - конец контекста для текущего элемента массива s
    • end; - конец цикла для обработки каждого ученика
  3. Подсчет средней массы мальчиков и среднего роста девочек:
    • sv:=0; - инициализация переменной sv для хранения суммы масс
    • km:=0; - инициализация переменной km для хранения количества мальчиков
    • for i:=1 to n do - начало цикла для обработки каждого ученика
    • with s[i] do - начало контекста для текущего элемента массива s
    • if pol='М' then - проверка пола ученика
    • begin - начало блока условий для мальчиков
    • km:=km+1; - увеличение km на единицу, если пол ученика - мужской
    • sv:=sv+mas; - увеличение sv на массу ученика, если пол ученика - мужской
    • end; - конец блока условий для мальчиков
    • if pol='Ж' then - проверка пола ученика
    • begin - начало блока условий для девочек
    • sv:=sv+rost; - увеличение sv на рост ученика, если пол ученика - женский
    • end; - конец блока условий для девочек
    • end; - конец цикла для обработки каждого ученика
    • sv:=sv/km; - вычисление средней массы мальчиков
    • writeln('Средняя масса мальчиков= ',sv); - вывод средней массы мальчиков
  4. Подсчет самого высокого роста:
    • max:=100; - инициализация переменной max для хранения максимального роста
    • for i:=1 to n do - начало цикла для обработки каждого ученика
    • with s[i] do - начало контекста для текущего элемента массива s
    • if rost>max then - проверка роста ученика
    • begin - начало блока условий для учеников с большим ростом
    • max:=rost; - обновление переменной max ростом текущего ученика
    • u:=i; - обновление переменной u индексом текущего ученика
    • end; - конец блока условий для учеников с большим ростом
    • end; - конец цикла для обработки каждого ученика
    • with s[u] do - начало контекста для ученика с самым высоким ростом
    • writeln('Самый высокий = ',fam); - вывод фамилии ученика с самым высоким ростом
  5. Завершение программы:
    • END. - завершение программы

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


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

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

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