Помогите исправить программу. Она должна вычислять среднее арифметическое всех чисел в...

0 голосов
46 просмотров

Помогите исправить программу. Она должна вычислять среднее арифметическое всех чисел в массиве меньших 50. Вот программа:
Program Zadacha;
Uses crt;
var a:array[1..1000] of integer;
c,i,n,s :integer;
s1: real;
begin;
clrscr;
writeln("Введите размерность массива);
readln(n);
writeln('Введите массив');
for i:=1 to n do
begin a[i]:=random(100);
if a[i]<50 then begin inc(c); s:=s+a[i];end;s:=s+a[i];s1:=s/N;<br>writeln('Массив A:');
for i:=1 to N do write(a[i]:4);
writeln;
writeln('Среднее арифметическое равно=',s1);
end;
end.


Информатика (182 баллов) | 46 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Ошибки:

1) writeln("Введите размерность массива); - здесь опечатка (пропущены кавычки), должно быть writeln('Введите размерность массива');

2) writeln('Введите массив'); - пользователь не вводит массив, здесь надо написать writeln('Создаём массив...');

3) Перед циклом нужно определить начальные значения переменных с и s
c:=0; s:=0;

4) У первого цикла есть begin, но нет end

5) s:=s+a[i]; эта команда повторяется дважды - второй раз (после if) не нужен

6) Лишний end; (предпоследняя строка программы)

И ещё не ошибки, а два совета:
1) пользуйся отступами, тогда лучше видно структуру программы. Когда все команды идут подряд в одной строке, легко запутаться.
2) При выводе среднего арифметического используй формат вывода   s1:0:2 
тогда результат будет округлён до двух знаков после запятой, и не будет таких монстров вроде 16.65432468734246873435

Исправленная программа:
Program Zadacha;
Uses crt;
var
   a:array[1..1000] of integer;
   c,i,n,s :integer;
   s1: real;
begin;
   clrscr;
   writeln('Введите размерность массива');
   readln(n);
   writeln('Создаём массив...');
   c:=0; s:=0;
   for i:=1 to n do
      begin
         a[i]:=random(100);
         if a[i]<50 then <br>            begin
               inc(c);
               s:=s+a[i];
            end;
      end;
   s1:=s/n;
   writeln('Массив A:');
   for i:=1 to n do write(a[i]:4);
   writeln;
   writeln('Среднее арифметическое равно=',s1:0:2);  end.

(52.6k баллов)
0 голосов

Var 
  a:array[1..1000] of integer;
  c,i,n,s :integer;
  s1: real;begin;
  readln(n);
  for i:=1 to n do begin
    a[i]:=random(100);
    if a[i]<50 then begin<br>      inc(c);
      s:=s+a[i];
    end;
  end;
  s1:= s/c;
  for i:=1 to N do write(a[i]:4);
  writeln;
  writeln(s1);
end.

исправила, все работает, только добовьте ваш модуль CRT обратно и поясняющие writeln'ы

(598 баллов)