annasavchenko5
10.11.2022 13:04

Как удалить вопрос
.. . .. . . .. ..

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Vera2200
23.02.2021 02:42
1)  k:=k mod 3+k*cos(5);
В правой части стоит функция косинус, которая определена только для вещественных чисел и операция mod, которая определена только для целых чисел. Если k целочисленное, то правая часть будет вещественной и попытка присвоить вещественное значение целочисленной переменной недопустима. Надо ставить явное преобразование, например  k:=Trunc(k mod 3+k*cos(5)); или  k:=Round(k mod 3+k*cos(5));
Если же k - вещественное, то операция k mod 2 недопустима.
2) x:=x*2 div 6+x/4
Тут в правой части смешаны операция div, которая определена только для целых и операция деления, которая определена для вещественных. Такое смешивание вещественных и целый запрещено. В Паскале нет функции перевода целых в вещественные, только процедура, но её в выражение не встроишь. Поэтому можно только говорить о переводе результата х/4 к целому значение посредством Trunc(х/4) или Round(x/4). Либо о замене х/4 на x div 4. Само собой, х надо объявлять целым.
0,0(0 оценок)
Ответ:
dashavchinnik
05.03.2022 16:15

задача 1

program ProcArray;

procedure GetMax (A: array of Integer; var imax: Integer);

var

 i: Integer;

begin

 imax := Low (A);

 for i := Low (A) to High (A) do

   if A [i] > A [imax] then

     imax := i;

end;

procedure GetMin (A: array of Integer; var imin: Integer);

var

 i: Integer;

begin

 imin := Low (A);

 for i := Low (A) to High (A) do

   if A [i] < A [imin] then

     imin := i;

end;

procedure Repl (var A: array of Integer; OldValue, NewValue: Integer);

var

 i: Integer;

begin

 for i := Low (A) to High (A) do

   if A [i] > OldValue then

     A [i] := NewValue;

end;

var

 A: array [0..49] of Integer;

 i, imax, imin: Integer;

begin

 Randomize;

 for i := Low (A) to High (A) do begin

     A [i] := Random (21) - 10;

     Write (A [i] :3, ' ');

 end;

 WriteLn;

 GetMax (A, imax);

 WriteLn ('Максимальное значение = ', A [imax]);

 GetMin (A, imin);

 WriteLn ('Минимальное значение = ', A [imin]);

 Repl (A, 1, 0);

 WriteLn ('Замена >1 на 0');

 for i := Low (A) to High (A) do

     Write (A [i] :3, ' ');

 ReadLn;

end.

задача 2

program ProcArray1;

procedure Multi (A: array of Integer; var Prod: LongInt);

var

 i: Integer;

begin

 Prod := 1;

 for i := Low (A) to High (A) do

   Prod := Prod * A [i];

end;

procedure Repl (var A: array of Integer; OldValue, NewValue: Integer);

var

 i: Integer;

begin

 for i := Low (A) to High (A) do

   if A [i] > OldValue then

     A [i] := NewValue;

end;

var

 A: array [0..29] of Integer;

 i: Integer;

 p: LongInt;

begin

 Randomize;

 for i := Low (A) to High (A) do begin

     A [i] := Random (3) + 1;

     Write (A [i] :3, ' ');

 end;

 WriteLn;

 Multi (A, p);

 WriteLn ('Произведение = ', p);

 Repl (A, 5, 1);

 WriteLn ('Замена >5 на 1');

 for i := Low (A) to High (A) do

     Write (A [i] :3, ' ');

 ReadLn;

end.

Объяснение:

Во задаче №2 при заполнении массива значениями больше 5 начинает возникать переполнение LongInt из за чего значение произведения становится отрицательным

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