В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
суперкот14
суперкот14
14.01.2020 00:03 •  Информатика

1. Какой ответ выдаст программа, если в массиве несколько элементов, удовлетворяющих условию задачи? Почему? 2. Что нужно изменить в программе, чтобы выдавался не первый из найденных элементов, а последний? 3. Измените условие цикла while, так чтобы использовалась логическая операция not.

Показать ответ
Ответ:
sonalazaryan
sonalazaryan
10.04.2023 00:13

Program z2_65;

uses crt;

Label a1,a2,a3,a4,a5,a6,a7;

var a,s,h,rv,ro,p:real;

n:integer;

begin

clrscr;

Writeln('Укажите номер пункта:');

writeln('1. Дана сторона треугольника.');

writeln('2. Дана площадь треугольника.');

writeln('3. Дана высота треугольника.');

writeln('4. Дан радиус вписанной окружности треугольника.');

writeln('5. Дан радиус описанной окружности треугольника.');

read(n);

case n of

1:Begin Write('a=');read(a);goto a1;end;

2:begin Write('s=');read(s);goto a2;end;

3:Begin Write('h=');read(h);goto a3;end;

4:Begin Write('r=');read(rv);goto a4;end;

5:Begin Write('R=');read(ro);goto a5;end;

else

begin

write('Такого номера пункта нет.');

goto a7;

end;

end;

a1: rv:=a/2;

ro:=a/Sqrt(3);

s:=sqrt(3)*sqr(a)/4;

h:=2*s/a;

goto a6;

a2: a:=sqrt(4*s/sqrt(3));

h:=2*s/a;

rv:=a/2;

ro:=a/Sqrt(3);

goto a6;

a3: a:=2*h/sqrt(3);

s:=a*h/2;

rv:=a/2;

ro:=a/Sqrt(3);

goto a6;

a4: a:=2*rv;

ro:=a/Sqrt(3);

s:=sqrt(3)*sqr(a)/4;

h:=2*s/a;

goto a6;

a5: a:=sqrt(3)*ro;

s:=(a*a*a)/(4*ro);

h:=2*s/a;

rv:=a/2;

a6: writeln('a=',a:2:2);

writeln('s=',s:2:2);

writeln('h=',h:2:2);

writeln('R=',ro:2:2);

writeln('r=',rv:2:2);

a7: readkey;

end.

0,0(0 оценок)
Ответ:
olesjaozs5is
olesjaozs5is
27.12.2021 11:03
Алгоритм решения предполагает, что если в массиве не будет найдено элемента, большего 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. 

Этот вариант существенно длиннее, но главное, что нужно долго вглядываться в текст программы, чтобы понять, что именно она делает.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота