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

Ответы 1

  • Алгоритм решения предполагает, что если в массиве не будет найдено элемента, большего 10, то позиции этого элемента не существует и средние арифметические членов, располагающихся как после этой позиции, так и до нее, тоже не могут существовать."Современное решение"// PascalABC.NET 3.0, сборка 1076begin  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, сборка 1076const  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))  endend.  Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.
    • Автор:

      urielqqjj
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years