Задать вопрос
4 апреля, 02:41

Помогите исправить программу. Она должна вычислять среднее арифметическое всех чисел в массиве меньших 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;

writeln ('Массив A:') ;

for i:=1 to N do write (a[i]:4) ;

writeln;

writeln ('Среднее арифметическое равно=', s1) ;

end;

end.

+5
Ответы (2)
  1. 4 апреля, 05:54
    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

    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.
  2. 4 апреля, 05:58
    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

    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'ы
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Помогите исправить программу. Она должна вычислять среднее арифметическое всех чисел в массиве меньших 50. Вот программа: Program Zadacha; ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы