Составьте программу, которая заполняет массив a[1..10] случайными целыми числами в...

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

Составьте программу, которая заполняет массив a[1..10] случайными целыми числами в диапазоне от 1 до 10, затем меняет местами первый элемент со вторым, третий с четвертым и т. д. Выведите на экран исходный и полученный массивы.
Program shist;
Var a:array[1..10] of integer;
i, z, max: integer;
Begin
For i:=1 to 10 do
a[i]:=Random(11);
writeln ('Исходный массив');
For i:=1 to 10 do
write (a[i], ' ');
writeln;
For i:=1 to 10 do
if i mod 2 <> 0 then
begin
z:=a[i];
a[i]:=a[i+1];
a[i+1]:=z;
end;
writeln('Полученный массив');
For i:=1 to 10 do
write (a[i], ' ');
End.
Отныне эта программа является правильной и может использоваться как памятка.


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

Сейчас нет возможности на компьютере проверить, но первое что бросилось в глаза For i:=1 to 10 do .... a[i]:=a[i+1];... Пытаетесь к десятому элементу прибавить одиннадцатый, которого нет

0

всея сам догадался в чем ошибка

0

ща

0

енадо было бегин и енд вставить еще)

0

Тебе надо менять местами элементы массива, зачем ты проверяешь их на четность?? if i mod 2 <> 0 then

0

я исправил уже смотри)

0

работает

0

нужно было подставить бегин перед замещениями и енд после замещений

0

а затем что в задаче нужно менять местами нечетные числа с нечетными числами + 1 думать надо

0

все, увидел, там первый со вторым, третий с четвертым, и так далее.. я просто невнимательно прочитал, думал 1 с 2, потом 2 с 3, потом 3 с 4... и тд

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

//Зачем прикручивать дополнительный if, когда можно сделать while?
var ar:array[1..10] of integer;i:integer;

procedure swap(var a,b:integer);
var c:integer;
begin;
c:=a;
a:=b;
b:=c;
end;

begin;
randomize;
writeln('Array:');
for i:=1 to 10 do
 begin;
  ar[i]:=random(11);
  write(ar[i]:4);
 end;
i:=1;
while i<10 do<br>begin;
swap(ar[i],ar[i+1]);
i:=i+2;
end;
writeln;
writeln('Final array:');
for i:=1 to 10 do
write(ar[i]:4);
end.

(38.6k баллов)