СРОЧНО! 40 БАЛЛОВ! Паскаль, информатика 1) Дан массив из 10-ти случайных чисел....

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

СРОЧНО! 40 БАЛЛОВ! Паскаль, информатика
1) Дан массив из 10-ти случайных чисел. Напечатать его и определить сумму элементов, стоящих на нечетных местах.
2) Дан массив из 10-ти случайных чисел. Напечатать его и определить, есть ли в массиве два соседних четных элемента


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

Девушка, и если поставить 10, задачка решится?

0

То есть, просто поменять местами?

0

Заменить 4 на 10?

0

То есть, вторая задача решается в точности также? Только вместо 4-х будет 10, правильно я понял?

0

Блин

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

Const
  n=10;
var
  x:array[1..n] of integer;
  i,s:integer;
  found:boolean;
begin
  { инициализация массива }
  Randomize;
  Writeln('Элементы массива');
  for i:=1 to n do
  begin
    x[i]:=Random(50);
    Write(x[i]:3);
  end;
  Writeln;
  { задание 1 }
  s:=0; i:=1;
  while i<=n do<br>  begin s:=s+x[i]; i:=i+2 end;
  Writeln('Cумма элементов на нечетных местах равна ',s);
  { задание 2 }
  for i:=1 to n-1 do
  begin
    found:=(x[i] mod 2 = 0) and (x[i+1] mod 2 = 0);
    if found then break
  end;
  if found then Writeln ('Пара соседних четных элементов: ',x[i],', ',x[i+1])
  else Writeln('Нет пары соседних четных элементов')
end.

Тестовое решение:
Элементы массива
  3 11 42 38 36 47  8 15 15 13
Cумма элементов на нечетных местах равна 104
Пара соседних четных элементов: 42, 38



(142k баллов)
0 голосов

1)
var a:array[1..10] of integer;
i,n:integer;
begin
n:=0;
write ('Массив: ');
for i:=1 to 10 do
begin
a[i]:=random(10);
if i mod 2 <> 0 then n:=n+a[i];
end;
for i:=1 to 10 do
begin
write (a[i],' ');
end;
writeln;
writeln ('Сумма элементов стоящих на нечётных местах = ',n);
end.

2)
var a:array[0..10] of integer;
i,n:integer;
begin
n:=0;
write ('Массив: ');
for i:=1 to 10 do
begin
a[i]:=random(10);
write (a[i],' ');
end;
repeat
i:=1;
if (a[i] mod 2 = 0) and (a[i-1] mod 2 =0) then n:=1;
i:=i+1;
until n=1;
WRITELN;
if n<>0 then writeln ('Есть') else writeln ('Нету');
end.

(10.7k баллов)
0

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

0

А не подскажите, как выйти из цикла, если мы нашли 2 соседних чётных числа (т.е. значение n сменилось)?

0

Либо, как у меня по break, либо сделать цикл вида while/repeat

0

Можно ещё добавить цикл - repeat, ну смысла добавлять его не было, ведь от того что проверятся пару лишних элементов массива ничего не изменится)

0

А если массив размером в 100 000 элементов? Мы же алгоритм рассматриваем, а не конкретную задачу.

0

Этим как раз и отличаются решения школьников от решений профессиональных программистов: школьник пишет программу под решение конкретной задачи, а профессионалу лень каждый раз программы переписывать и он делает общее решение с тем, чтобы "малой кровью" приспособить его к любым изменившимся условиям.