Найти количества положительных элементов в массивах A,B,C, а затем - их среднее арифметическое - PascalABC.NET
Формулировка задачи:
Задание к работе:
Ввод исходных данных и их контрольный вывод оформить как процедуры, а обработку - в виде функции или процедуры. Привести как минимум два тестирующих примераА вот и сама задачка:
Найти количества положительных элементов в массивах A,B,C, а затем - их среднее арифметическое Я не могу понять, где у меня ошибка
Листинг программы
- var i , n , sum: integer;
- sr : real;
- //----------------------------------------------------
- procedure work (r:integer; var s:integer; var s1:real);
- var mas : array [1..5] of integer ;
- j : integer;
- begin
- s:=0;
- for j:=1 to r do begin
- write(' Введите элемент - ', j,': ') ;
- read (mas[j]);
- for j:=1 to N do
- if mas[j]>0 then Inc(k1);
- end;end;
- //-----------------------------------
- begin
- for i:=1 to 3 do begin
- write ('Введите размер ',i, ' массива: ');
- readln(n);
- work (n, sum, sr);
- writeln ('Положительные = ',k1);
- writeln ('Среднее арифмитическое = ',sr);
- end;end.
Решение задачи: «Найти количества положительных элементов в массивах A,B,C, а затем - их среднее арифметическое»
textual
Листинг программы
- type mas = array of integer;
- procedure InMas (var m:mas; n:integer; mas_name:char);
- var i:integer;
- begin
- writeln('Введите массив ', mas_name, ' из ', n, ' элементов:');
- SetLength(m, n);
- for i:=0 to n-1 do
- m[i] := ReadLnInteger(mas_name + '[' + (i+1).ToString + '] =');
- end;
- procedure OutMas (m:mas; mas_name:char);
- begin
- writeln('массив ',mas_name,': ', m);
- end;
- function Positiv(m:mas):integer;
- begin
- Result := 0;
- foreach var n in m do
- if n > 0 then
- Result += 1;
- end;
- function PositivSum(m:mas):integer;
- begin
- Result := 0;
- foreach var n in m do
- if n > 0 then
- Result += n;
- end;
- var a,b,c:mas;
- begin
- InMas (a, 5, 'A'); InMas (b, 5, 'B'); InMas (C, 5, 'C');
- var All := 0; var allSum := 0; var Pos := 0;
- WriteLn;
- OutMas(a, 'A'); Pos := Positiv(a); All += Pos; allSum += PositivSum(a);
- WriteLn('Количество положительных элементов: ', Pos);
- WriteLn;
- OutMas(b, 'B'); Pos := Positiv(b); All += Pos; allSum += PositivSum(b);
- WriteLn('Количество положительных элементов: ', Pos);
- WriteLn;
- OutMas(c, 'C'); Pos := Positiv(c); All += Pos; allSum += PositivSum(c);
- WriteLn('Количество положительных элементов: ', Pos);
- WriteLn;
- WriteLn('Среднее арифметическое положительных элеметов = ', allSum / (All = 0 ? 1 : All));
- end.
Объяснение кода листинга программы
- Тип данных
mas
определен как массив целых чисел. - Функция
InMas
принимает массив и количество элементов для ввода пользователем. - Функция
OutMas
выводит массив на экран. - Функция
Positiv
считает количество положительных элементов в массиве. - Функция
PositivSum
считает сумму положительных элементов в массиве. - Объявлены три массива
a
,b
иc
типаmas
. - Вызваны функции
InMas
для заполнения массивовa
,b
иc
. - Объявлены четыре переменные
All
,allSum
,Pos
иAll
и инициализированы нулем. - Вывод на экран первого массива, подсчет и вывод количества положительных элементов.
- Вывод на экран второго массива, подсчет и вывод количества положительных элементов.
- Вывод на экран третьего массива, подсчет и вывод количества положительных элементов.
- Подсчет и вывод на экран среднего арифметического положительных элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д