Задать вопрос
9 августа, 09:59

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

+4
Ответы (2)
  1. 9 августа, 12:20
    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'ы
  2. 9 августа, 12:37
    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.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Помогите исправить программу. Она должна вычислять среднее арифметическое всех чисел в массиве меньших 50. Вот программа: Program Zadacha; ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Как сделать теперь без массива (паскале) ? var nm:array of integer; j, l:integer; begin nm: = new integer[3] (random (20), random (20), random (20)) ; writeln ('nm[0] = ', nm[0]) ; writeln ('nm[1] = ', nm[1]) ; writeln ('nm[2] = ', nm[2]) ;
Ответы (1)
Выдаёт ошибку: операнды имеют неприводимые типы. Где я ошиблась? (Программа написана на языке Pascal ABC) Program Home; Uses CRT; Var a: integer; b: real; Begin WriteLn ('Введите еденицу измереня: килограмм, миллиграмм, грамм, тонна, центнер') ;
Ответы (1)
Перевести с турбо паскаля в паскаль абс program z1; uses crt; type TTmas=array[1 ... 1] of real; Tmas=^TTmas; var a:Tmas; n, i, j:integer; f:real; begin clrscr; write ('Размер массива n=') ; readln (n) ; getmem (a, sizeof (TTmas) * n) ;
Ответы (1)
Program z6_2; uses crt; const n=6; var a:array[1 ... 6]of real; i:integer; begin clrscr; Writeln ('введите элемент массива') ; for i:=1 to 6 do readln (a[i]) ; if min min:=a[i]; writeln ('min=', min:7:3) ; Repeat until keypressed; end.
Ответы (1)
Что не так? (процедура обязательна) procedure random (k:integer) ; var a:array[1 ... 100] of integer; var l:integer; begin for l:=1 to k do begin a[l]:=random (100) ; writeln (a[l]) ; end; end; var v:integer; begin write ('Сколько будет чисел?
Ответы (2)