Одномерный массив. Посчитать средний возраст студентов группы - Free Pascal

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

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

Дан массив строк, каждая из которых содержит дату рождения студентов отдельной группы. Посчитать средний возраст студентов группы. Пожалуйста, укажите на ошибку. Программа не работает, указывает на неправильный тип переменной sr. Тем не менее, если sr будет иметь типа extended или real, то результат вычислений выдает неверный. Заранее спасибо.
program z65;
const
        max=100;
var
        date:array[1..max] of string;
        vozr:array[1..max] of string;
        vozr_val:array[1..max] of integer;        sr:integer;
        sr,i,n:integer;
begin
        n:=0;
        read(n);
        for i:=1 to n do
                       begin
                        readln(date[i]);
                        writeln;
                        vozr[i]:=copy(date[i],6,4);
                        val(vozr[i],vozr_val[i]);
                        vozr_val[i]:=2017-vozr_val[i];
                       end;
        sr:=0;
        for i:=1 to n do
                                sr:=sr+vozr_val[i];
        sr:=sr/n;
        writeln(sr);
 
end.

Решение задачи: «Одномерный массив. Посчитать средний возраст студентов группы»

textual
Листинг программы
program z65;
Uses sysutils;
 
const
        max=100;
var
        date:array[0..max] of string;
        vozr_val_1:string;
        vozr_val_2:string;
        vozr_val_3:string;
        sr,i,n:integer;
        years,months,days,year,month,day:real;
begin
        n:=0;
        years:=0;
        months:=0;
        days:=0;
        year:=0;
        month:=0;
        day:=0;
 
        read(n);
        for i:=0 to n do
                       begin
                        readln(date[i]);
                        writeln;
                        vozr_val_1:=copy(date[i],7,4);
                        vozr_val_2:=copy(date[i],1,2);
                        vozr_val_3:=copy(date[i],4,2);
 
                        val(vozr_val_1,year);
                        val(vozr_val_2,day);
                        val(vozr_val_3,month);
                        years:=years + year;
                        months:=months + month;
                        days:=days + day;
                       end;
 
        years:=2017 - (years*365.25 + month*30.4375 + days)/(n*365.25);
 
        writeln(years);
end.

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

  1. Объявлены переменные: n, i, sr, years, months, days, year, month, day (целые числа) date[0..max] of string (массив строк) vozr_val_1, vozr_val_2, vozr_val_3 (строки)
  2. В начале программы в массив date[0..max] записывается количество студентов (n)
  3. Затем, используя цикл for, происходит чтение дат рождения студентов (по одному в каждой итерации)
  4. Далее, используя функции copy, из каждой строки с датой извлекаются значения года, месяца и дня
  5. Используя функцию val, из полученных строк считываются числовые значения года, месяца и дня
  6. Полученные значения прибавляются к соответствующим переменным years, months и days
  7. В конце программы, используя формулу, вычисляется средний возраст студентов и выводится на экран
  8. Для вычисления среднего возраста используется формула: years = 2017 - (years365.25 + month30.4375 + days)/(n*365.25)
  9. Значение переменной years выводится на экран
  10. Программа завершается

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


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

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

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