М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
milenasalikova
milenasalikova
28.10.2021 19:44 •  Информатика

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

👇
Ответ:
лол1628
лол1628
28.10.2021
Алгоритм решения предполагает, что если в массиве не будет найдено элемента, большего 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. 

Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.
4,6(3 оценок)
Открыть все ответы
Ответ:
AbsoJl
AbsoJl
28.10.2021

ответ:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

uses crt;

var

i,n,k:integer;

a:array[1..100] of integer;

begin

writeln('введите числа последовательности. Окончанием ввода будет число 0');

i:=0;

n:=0;

repeat

i:=i+1;

n:=n+1;

read(a[i]);

write(' ');

until (a[i]=0) or (i>1000);

writeln;

k:=0;

writeln('Последовательность:');

for i:=1 to n-1 do

begin

write('a[',i,']=',a[i],' ');

if ((a[i] mod 2)=0) and ((a[i] mod 7)=0) then

k:=k+1;

end;

writeln('кол-во целых чётных чисел кратных 7 - ',k);

end.

Второй вариант : 1

2

3

4

5

6

7

8

9

10

11

12

13

14

uses crt;

var k,n: integer;

begin

write('vvedite chislo ');

readln(n);

if (n mod 7=0) and (n mod 2=0) then inc(k);

while n<>0 do

     begin

     write('vvedite chislo ');

     readln(n);

     if (n mod 7=0) and (n mod 2=0) then inc(k);

     end;

writeln(k-1);

end.

3 ВАРИАНТ :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

const

 lim1=30000;

 lim2=1000;

var

 a,kol,res:integer;

begin

 kol:=0;

 res:=0;

 repeat

   repeat

     readln(a);

     if abs(a)>lim1 then

       writeln('Oshibka vvoda. |a|<=',lim1);

   until abs(a)<=lim1;

   if a<>0 then

     begin

       inc(kol);

       if (a mod 2=0) and (a mod 7=0) then

         inc(res);

     end;

 until (a=0) or (kol=lim2);

 write(res);

end.

4,8(55 оценок)
Ответ:
Cat6661313
Cat6661313
28.10.2021

ответ:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

uses crt;

var

i,n,k:integer;

a:array[1..100] of integer;

begin

writeln('введите числа последовательности. Окончанием ввода будет число 0');

i:=0;

n:=0;

repeat

i:=i+1;

n:=n+1;

read(a[i]);

write(' ');

until (a[i]=0) or (i>1000);

writeln;

k:=0;

writeln('Последовательность:');

for i:=1 to n-1 do

begin

write('a[',i,']=',a[i],' ');

if ((a[i] mod 2)=0) and ((a[i] mod 7)=0) then

k:=k+1;

end;

writeln('кол-во целых чётных чисел кратных 7 - ',k);

end.

Второй вариант : 1

2

3

4

5

6

7

8

9

10

11

12

13

14

uses crt;

var k,n: integer;

begin

write('vvedite chislo ');

readln(n);

if (n mod 7=0) and (n mod 2=0) then inc(k);

while n<>0 do

     begin

     write('vvedite chislo ');

     readln(n);

     if (n mod 7=0) and (n mod 2=0) then inc(k);

     end;

writeln(k-1);

end.

3 ВАРИАНТ :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

const

 lim1=30000;

 lim2=1000;

var

 a,kol,res:integer;

begin

 kol:=0;

 res:=0;

 repeat

   repeat

     readln(a);

     if abs(a)>lim1 then

       writeln('Oshibka vvoda. |a|<=',lim1);

   until abs(a)<=lim1;

   if a<>0 then

     begin

       inc(kol);

       if (a mod 2=0) and (a mod 7=0) then

         inc(res);

     end;

 until (a=0) or (kol=lim2);

 write(res);

end.

4,6(48 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ