Ввести одномерный массив X(N). Определить в нем среднее арифметическое отрицательных элементов, стоящих после первого элемента, большего 10 и среднее арифметическое всех элементов до этого элемента. Выдать на печать массив и вы...

Ввести одномерный массив X(N). Определить в нем среднее арифметическое отрицательных элементов, стоящих после первого элемента, большего 10 и среднее арифметическое всех элементов до этого элемента. Выдать на печать массив и вычисленные средние арифметические значения или сообщения о невозможности их вычислить с указанием конкретных причин.
Гость
Ответ(ы) на вопрос:
Гость
Алгоритм решения предполагает, что если в массиве не будет найдено элемента, большего 10, то позиции этого элемента не существует и средние арифметические членов, располагающихся как после этой позиции, так и до нее, тоже не могут существовать. "Современное решение" // PascalABC.NET 3.0, сборка 1076 begin   var n:=ReadInteger('Количество элементов в массиве: ');   var x:=ArrRandom(n,-20,20);   Writeln('Массив Х'); x.Println;   Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');   var a1:=x.SkipWhile(x->x<=10).Where(x->x<0);   if a1.Count=0 then Writeln('пусто')   else Writeln(a1.Average);   Write('Ср. арифм. всех элементов до первого, большего 10: ');   a1:=x.TakeWhile(x->x<=10);   if a1.Count=0 then Writeln('пусто')   else Writeln(a1.Average) end. Тестовые просчеты: Количество элементов в массиве: 15 Массив Х -11 11 16 -7 11 -8 10 -16 15 -15 -10 -8 -6 -13 -17 Ср. арифм. отрицательных элементов после первого, большего 10: -11.1111111111111 Ср. арифм. всех элементов до первого, большего 10: -11 Количество элементов в массиве: 13 Массив Х 14 -9 1 2 12 -15 0 16 -19 16 -11 -15 -12 Ср. арифм. отрицательных элементов после первого, большего 10: -13.5 Ср. арифм. всех элементов до первого, большего 10: пусто Количество элементов в массиве: 5 Массив Х -11 2 0 15 7 Ср. арифм. отрицательных элементов после первого, большего 10: пусто Ср. арифм. всех элементов до первого, большего 10: -3 Количество элементов в массиве: 3 Массив Х 15 10 8 Ср. арифм. отрицательных элементов после первого, большего 10: пусто Ср. арифм. всех элементов до первого, большего 10: пусто "Школьный вариант решения" // PascalABC.NET 3.0, сборка 1076 const   nmax=50; { максимальное кол-во элементов } var   i,n,p,s1,s2,k2:integer;   x:array[1..nmax] of integer; begin   Write('Количество элементов в массиве: '); Read(n);   Randomize;   Writeln('Массив Х');   p:=0;   for i:=1 to n do begin     x[i]:=Random(41)-20;     Write(x[i],' ');     if p=0 then       if x[i]>10 then p:=i;     end;   Writeln;   Write('Ср. арифм. отрицательных элементов после первого, большего 10: ');   if p=0 then Writeln('пусто')   else begin     s2:=0; k2:=0;     for i:=p+1 to n do       if x[i]<0 then begin s2:=s2+x[i]; Inc(k2) end;     if k2=0 then Writeln('пусто')     else Writeln(s2/k2)   end;   Write('Ср. арифм. всех элементов до первого, большего 10: ');   if p=0 then Writeln('пусто')   else begin     s1:=0;     for i:=1 to p-1 do s1:=s1+x[i];     Writeln(s1/(p-1))   end end.  Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы