Другие языки программирования и технологии

Задача по паскалю. Массивы

задача:ввести с клавиатуры массив из 5 эл-тов, найти среднее арифметическое всех элементов массива. неск-ко вопросов: 1) не сказано,в каком диапазоне брать элементы. Как тогда в разделе var задавать массив? обычно же array [1..n] of integer, а тут как?ведь не от единицы.. 2)как найти среднее арифметическое?))я сделала примерно так,но это,скорее всего,неверно: Program z1; const n=5; Var: M:array[1..n] of integer; i,S,F:integer; Begin Writeln('введи 5 эл-тов массива'); Readln(n); for i:=1 to n do Begin s:= M + M[i+1]; end; F:=S/5; Write('среднее арифметическое=',F); end.
Program Massiv;
var a:array[1..5] of integer;
i,s:integer;
f:real;
begin
s:=0;
for i:=1 to 5 do begin
readln(a);
s:=s+a
end;
f:=s/5;
writeln(f:6:4);
readln
end.

Вот программа. Ничего сложного.
Главные ошибке:
Нельзя считывать константу;
Конечный результат должен быть присвоен переменной типа real,
т. к. операция "/" возвращает вещественные значения.
Сергей Сарычев
Сергей Сарычев
2 315
Лучший ответ
Сергей Сарычев Многие предыдущие ответы и программы неправильные.
Readln(n);

Ты собралась считать с клавиатуры КОНСТАНТУ - вот что меня больше всего беспокоит.. .
А среднее арифметическое находится элементарно, но проблема-то не в этом.
Максим Чемякин
Максим Чемякин
70 974
вам просто по этому разделу пройтись.. . я каждый день тут вопросы про эти массивы на паскале читаю. . если честно достает временами!
Вместо:
for i:=1 to n do
Begin
s:= M[ i ] + M[i+1];
end;
F:=S/5;
Правильно будет так:
S := 0;
for i:=1 to n do S := S + M[ i ];
F:=S/n;
Только переменная F должна быть не Integer, а Real
> не сказано, в каком диапазоне брать элементы

Не сказано - значит бери в любом, руки при этом у тебя развязаны, и пусть только препод вякнет что-то против) )

> это, скорее всего, неверно

Конечно неверно)
Оператор деления "/" неприменим к результирующим данным целочисленных типов - он применим только к вещественным.
ВБ
Виктор Буша
32 502
1) раз не сказано, какими могут быть элементы, то лучше их брать типа real, а не integer. а диапазон индексов может быть любым, как вам больше нравится или удобно, лишь бы было 5 значений: 1..5, 0..4, 8..12, 'a'..'e'
2) среднее арифметическое = сумма всех делить на количество всех

Program z1;
cоnst n=5;
Var: M:array[1..n] of real; i: integer; S,F:real;
Begin
Writeln('введи 5 эл-тов массива');
for i:=1 to n do
read (M[ i ]);
s:=0;
for i:=1 to 5 do
s:= s + M[ i ];
F:=S/5;
Write('среднее арифметическое=',F);
end.
ВН
Влад Нефедов
19 025
Program z1;
var I:integer; s:real;
a:array [1..5] of integer;
begin
for I:=1 to 5 do read(a);
s:=0;
for I:=1 to 5 do
s:=s+a;
s:=s/5;
writeln(s);
end.

ВОТ ТАК.
Дмитрий Агапов Так у меня же массив не A,а М
независимо от имени массива через а итое считается что ли?
Пиши в скайп volkodav1993
По вспоминаю паскаль =D
такое никто тут нерешит вам...
Дмитрий Агапов почему?
Это же вроде не сложно..просто новая тема,не до конца въехала=\