Помогите с программированием, пожалуйста. Pascal 1. Массив А (одномерный) задан случайным...

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

Помогите с программированием, пожалуйста. Pascal
1. Массив А (одномерный) задан случайным образом. Найти сумму его элементов с четными номерами, произведение отрицательных элементов, количество нечетных элементов.
2. Дан одномерный массив, значения элементов которого вводятся с клавиатуры. Отрицательные элементы данного массива заменить их модулями, нулевые остаются неизменными, а положительные - их квадратами. На экран вывести исходный массив и полученный результат.
3. Дан массив. Поменять местами первый элемент массива и максимальный. Вывести оба массива.


Информатика (478 баллов) | 56 просмотров
0

В третьем задании, если максимальных значений несколько? Что тогда делать?

0

Тут, наверное, нужно чтоб с клавиатуры ввод был, и, соответственно, одно максимальное.

Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
  var se:=a.Where((x,i)->i.IsOdd).Sum;
  var pn:=a.Where(x->x<0).Aggregate(BigInteger(1),(p,q)->p*q);
  var ko:=a.Where(x->x.IsOdd).Count;
  Writeln('Сумма элементов с четными номерами: ',se);
  Writeln('Произведение отрицательных элементов: ',pn);
  Writeln('Количество нечетных элементов: ',ko)
end.

Пример
n= 17
7 -60 -7 -96 -14 97 7 -68 -89 -87 -50 49 77 -52 -36 -15 99
Сумма элементов с четными номерами: -232
Произведение отрицательных элементов: -417286023598080000
Количество нечетных элементов: 10

begin
  var a:=ReadArrInteger('Вводите:',ReadInteger('n='));
  a.Println;
  a.Transform(x->x<0?abs(x):x>0?x*x:x); a.Println
end.

Пример
n= 17
Вводите: 7 -60 -7 -96 -14 97 7 -68 -89 -87 -50 49 77 -52 -36 -15 99
7 -60 -7 -96 -14 97 7 -68 -89 -87 -50 49 77 -52 -36 -15 99
49 60 7 96 14 9409 49 68 89 87 50 2401 5929 52 36 15 9801

begin
  var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
  var im:=a.IndexMax;
  swap(a[0],a[im]); a.Println;
end.

Пример
n= 16
-73 -46 76 92 -57 -57 81 -96 -92 18 -76 89 13 -83 69 56
92 -46 76 -73 -57 -57 81 -96 -92 18 -76 89 13 -83 69 56
(150k баллов)
0 голосов

Первое задание. Скоро сделаю остальное

var
a:array[1..15] of integer;
i,sum,pr,k:integer;
begin
sum:=0;
pr:=1;
k:=0;
for i:=1 to 15 do
begin
a[i]:=random(201)-100;
writeln('a[',i,']=',a[i]);
if i mod 2 = 0 then sum:=sum+a[i];
if a[i]<0 then pr:=pr*a[i];<br>if a[i] mod 2 <> 0 then k:=k+1;
end;
writeln('Summa elementov s chetnimi nomerami = ',sum);
writeln('Proizvedenie otritsatelnih elementov = ', pr);
writeln('Kol-vo nechetnih elementov = ',k);
end.

Второе

var
a:array[1..5] of integer;
b:array[1..5] of integer;
i:integer;
begin
writeln('Zapolnite massiv');
for i:=1 to 5 do
begin
read(a[i]);
if a[i]<0 then b[i]:=abs(a[i]);<br>if a[i]>0 then b[i]:=sqr(a[i]);
if a[i]=0 then b[i]:=a[i];
end;
writeln;
for i:=1 to 5 do
writeln('a[',i,']=',a[i]);
writeln;
for i:=1 to 5 do
writeln('b[',i,']=',b[i]);
end.

Третье

var
a:array[1..5] of integer;
b:array[1..5] of integer;
ibuf,i,max,q:integer;
begin
max:=0;
writeln('Zapolnite massiv');
writeln;
for i:=1 to 5 do
begin
readln(a[i]);
if a[i]>max then max:=a[i];
end;
for i:=1 to 5 do
if a[i]=max then ibuf:=i;
for i:=1 to 5 do
b[i]:=a[i];
b[ibuf]:=a[1];
b[1]:=max;
writeln;
for i:=1 to 5 do
writeln('a[',i,']=',a[i]);
writeln;
for i:=1 to 5 do
writeln('b[',i,']=',b[i]);
end.

(328 баллов)
0

Второе задание

0

Третье задание