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

Проверьте плз прогу правильно написал или нет

среднее арифметическое одномерного массива Program x; Var A:array [1..n] of integer; s,k:integer; Begin For i:=1 to n do Read (A) For i:=1 to n do s:=s+A; k:=k+1; s:=s/k; writeln ('s=',s); End.
среднее арифметическое одномерного массива
Program x;
Var A:array [1..n] of integer;
s,k:integer;
Begin
For i:=1 to n do Read (A)
For i:=1 to n do
начало цикла
s:=s+A;
k:=k+1;
не вижу конца цикла тут. синтаксис? Паскаля? не помню
s:=s/k;
writeln ('s=',s);
End.

s моржет быть не обязацельно целым. опять же не помню округляет язык этот сам или нет, и в постановке задачи надо целое или нет получить
Артём ^^
Артём ^^
3 295
Лучший ответ
Я не знаю Паскаля, но тем не менее мне кажется, что программа не будет правильно работать. Во-первых, что означает предложение

For i:=1 to n do Read (A)

Наверное вы должны читать в цикле каждый раз в разный элемент массива, а потому должно быть Read( A( i ) );

То есть для A вы должны указать индекс элемента, в который вы считываете данные. Я только не знаю, он указывается в круглых, или в квадратных скобках. Кроме того не забывайте после предложения ставить точку с запятой. Она у вас в этом предложении отсутствует.

Та же проблема и в предложении

s:=s+A;
То есть после A авы не указали индекс элимента этого массива.

Далее, как я понимаю, два предложения после цикла должны принадлежать этому циклу, а потому они должны быть объединены, то есть вместо

For i:=1 to n do
s:=s+A;
k:=k+1;

должно быть

For i:=1 to n do
begin
s:=s+A;
k:=k+1;
end;

Затем вы не установиили начальное значение для s и к! Нужно было их инициализировать нулем, прежде чем прибавлять к ним что-то.
Более того на мой взгляд переменная k вообще не нужна, так как число элементов в массиве известно и по определению массива равно n. То есть чтобы получить среднее достаточно вычисленную сумму s поделить на n.
Ну, а самое главное вы не определили в программе значение для n.

Кроме того я заметил, что в вышестоящем комментарии вам предлагают объявить переменную s как Real. На самом деле этого делать не надо! У вас массив целых чисел и следовательно вы ищите целое значение среднего арифметического!
N не определено как минимум.
Emil Veliyev
Emil Veliyev
13 030
Program x;
Var A:array [1..10] of integer;
k,i:integer; s:real;
Begin
s:=0; k:=0;
For i:=1 to 10 do
Read (A[ i ]);
For i:=1 to 10 do
begin
s:=s+A[ i ];
k:=k+1;
end;
s:=s/k;
writeln ('s=',s:3:1);
End.
Сергей Б.
Сергей Б.
1 559
нет.... не совсем... напиши мне в агент. я скажу где ошибки)