Используя Pascal вычислим среднее значение

Количество просмотров: 695

Задача

В группе из N человек определить число юношей и девушек заданного года рождения, вес которых наиболее близок к среднему арифметическому весу всех членов группы.

Решение

    Создаем запись, состоящую из 4 полей: имя, пол, год рождения, вес. 

Type anketa=record
fio: string[45];
pol: char;
dat_r: integer;
ves: real;
end;

    Вводим количество записей (переменная n), в цикле заполняем.

Далее в цикле подсчитываем суммарный вес всех членов группы, делим значение на количество n, получая средний вес.

Вычисляем в цикле абсолютные величины отклонения веса каждого члена группы от среднего значения, при этом суммируя их для последующего вычисления среднего нормирующего значения отклонения.

После этого абсолютную величину отклонения веса каждого члена группы соответствующего года рождения сравниваем с нормирующим значением, если меньше, то вес считается ближайшим, а счетчик увеличивается на 1.

Полный листинг:

Type anketa=record
   fio: string[45]; 
   pol: char; 
   dat_r: integer; 
   ves: real; 
end;

var student: array[1..100] of anketa;
    n,i: integer;
    year: integer;
    Summa: real;
    average: real;
    variation: real;
    norma:real;
    count: integer;
    
procedure number(year: integer; average: real; norma: real);
    var i: integer;
    begin
      count:=0;
      for i:=1 to n do
      begin
      if (student[i].dat_r = year) and (abs(student[i].ves-average)<norma) 
        then
          count:=count+1;
        end;
      writeln('количество ', count);
    end;

begin
    write('Введите количество человек ');
    readln(n);
    for i:=1 to n do
      begin
        write('Введите Имя ');
        readln(student[i].fio);
        write('Пол ');
        readln(student[i].pol);
        write('Год рождения ');
        readln(student[i].dat_r);
        write('Вес ');
        readln(student[i].ves);
      end;
      // находим сумму
      Summa:=0;
      for i:=1 to n do
        begin
          Summa:=Summa+student[i].ves;
        end;
      // среднее арифметическое
      average:=Summa/n;   
      writeln('Среднее значение ',average);
      // вычисление нормы 
      variation:=0;
      for i:=1 to n do
        begin
          variation:=variation+(abs(student[i].ves-average));
        end;
      norma:=variation/n;
      writeln('Нормированное отклонение ',norma);
      // фильтр
      writeln('Введите год');
      readln(year);
      number(year, average, norma);
end. 

 

© 2015-2018 Goodweb.me --- Карта сайта --- info@goodweb.me

Наверх