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