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

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

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

Дан массив строк, каждая из которых содержит дату рождения студентов отдельной группы. Посчитать средний возраст студентов группы. Пожалуйста, укажите на ошибку. Программа не работает, указывает на неправильный тип переменной sr. Тем не менее, если sr будет иметь типа extended или real, то результат вычислений выдает неверный. Заранее спасибо.
Листинг программы
  1. program z65;
  2. const
  3. max=100;
  4. var
  5. date:array[1..max] of string;
  6. vozr:array[1..max] of string;
  7. vozr_val:array[1..max] of integer; sr:integer;
  8. sr,i,n:integer;
  9. begin
  10. n:=0;
  11. read(n);
  12. for i:=1 to n do
  13. begin
  14. readln(date[i]);
  15. writeln;
  16. vozr[i]:=copy(date[i],6,4);
  17. val(vozr[i],vozr_val[i]);
  18. vozr_val[i]:=2017-vozr_val[i];
  19. end;
  20. sr:=0;
  21. for i:=1 to n do
  22. sr:=sr+vozr_val[i];
  23. sr:=sr/n;
  24. writeln(sr);
  25. end.

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

textual
Листинг программы
  1. program z65;
  2. Uses sysutils;
  3.  
  4. const
  5.         max=100;
  6. var
  7.         date:array[0..max] of string;
  8.         vozr_val_1:string;
  9.         vozr_val_2:string;
  10.         vozr_val_3:string;
  11.         sr,i,n:integer;
  12.         years,months,days,year,month,day:real;
  13. begin
  14.         n:=0;
  15.         years:=0;
  16.         months:=0;
  17.         days:=0;
  18.         year:=0;
  19.         month:=0;
  20.         day:=0;
  21.  
  22.         read(n);
  23.         for i:=0 to n do
  24.                        begin
  25.                         readln(date[i]);
  26.                         writeln;
  27.                         vozr_val_1:=copy(date[i],7,4);
  28.                         vozr_val_2:=copy(date[i],1,2);
  29.                         vozr_val_3:=copy(date[i],4,2);
  30.  
  31.                         val(vozr_val_1,year);
  32.                         val(vozr_val_2,day);
  33.                         val(vozr_val_3,month);
  34.                         years:=years + year;
  35.                         months:=months + month;
  36.                         days:=days + day;
  37.                        end;
  38.  
  39.         years:=2017 - (years*365.25 + month*30.4375 + days)/(n*365.25);
  40.  
  41.         writeln(years);
  42. 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

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

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

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