Ребята, помогите пожалуйста написать программу в паскале. 10 класс баллов дам не мало)

0 голосов
55 просмотров

Ребята, помогите пожалуйста написать программу в паскале. 10 класс
баллов дам не мало)


image

Информатика (1.0k баллов) | 55 просмотров
0

Неверно поставлен вопрос. A[i]<=0 означает, что некий i-й элемент неположительный. И в этом случае КАЖДЫЙ элемент "умножить на квадрат..."

0

Хорошо, но я не знаю тогда, как сама программа будет выглядеть

0

Тут либо речь о том, что если хотя бы один элемент неположительный то все "умножить", но это глупо: такой элемент наверняка найдется в массиве с заполнением от -110 до 110

0

Либо речь о том, что только те элементы умножать, которые неотрицательные.

0

Так что Вам надо выбрать одно из двух.

0

А вы как сами думаете, что здесь всё-таки подразумевается найти? мне кажется, речь о тех элментах, которые неотрицательные.

0

Мне тоже

Дано ответов: 2
0 голосов
Правильный ответ

Const n = 10;
var i,max: integer;
a:array[1..10] of integer;
begin
  max :=-110;
  for i:=1 to n do begin
    a[i]:= random(221) - 110;
    if a[i]>max then max:=a[i];
    write(a[i]:5);
  end;
  writeln;
  for i:=1 to n do begin
    if a[i]<=0 then a[i]:=a[i]*sqr(max);<br>    write(a[i]:5);
  end;
end.

(13.9k баллов)
0

спасибо большое, а можете пожалуйста объяснить некоторые строчки. а то не совсем поняла : 1) а[i]:=random(221)-110; 2) write (a[i]:5); и if a[i]<=0 then a[i]:=a[i]*sqr(max);

0

1. Заполнение массива сл. числами в диапазоне от -110 до 110 2. a[i]:5 Форматный вывод. Выделяется 5 знакомств для вывода на экран одного элемента a[i] 3. если a[i] меньше или равно 0, то в a[i] умножаем на квадрат максимального (sqr(max))

0 голосов

// PascalABC.NET 3.1, сборка 1201 от 18.03.2016
begin
  var a:=ArrRandom(ReadInteger('n='),-110,110);
  a.Println;
  var max2:=sqr(a.Max);
  for var i:=0 to a.Length-1 do
    if a[i]<=0 then a[i]*=max2;<br>  a.Println
end.

Тестовое решение:
n= 10
52 -62 106 -110 33 87 46 107 -62 6
52 -709838 106 -1259390 33 87 46 107 -709838 6

(142k баллов)
0

Если цель - показывать возможности нового Паскаля, то и цикл можно поменять на нечто вроде a.Select(x -> x > 0 ? x : x * max2).Println;

0

В Паскале НЕТ тернарного оператора.

0

но pascalabc такое проглатывает, хотя я не могу найти это в доках.

0

И еще: в задании было требование "умножить элемент....", т.е. я то понимаю, как модификацию исходного массива. Её эффективнее делать в цикле, чем указывать a:=f(a) - это с ленивыми вычислениями плохо сочетается.

0

По поводу тернарного оператора есть мнение, что это в любой момент может оказаться неработоспособым и лучше не привыкать

0

Надо будет на форуме поднять вопрос, будет ответ "официальный"