Массивы

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Elin
Сообщения: 1
Зарегистрирован: 18 окт 2009, 12:42

18 окт 2009, 14:09

Помогите плз решить задачу.
задача (Pascal): Дано два одномерных массива , объеденить их в третий, так чтобы числа с каждого массива чередовались по одному.
Я тут сделала, массивы объеденины, только не знаю как сделать чтобы они чередовалисть

Код: Выделить всё

program lalala;
uses crt;
type al=array[1..100] of integer;
var mas1,mas2,mas3:al;
n1,n2,n3,i:integer;
 
   procedure vvod;
   begin
   randomize;
   write('Введите кол-во эл-тов в 1-м массиве ');
   readln(n1);
   write('Введите кол-во эл-тов в 2-м массиве ');
   readln(n2);
     for i:=1 to n1 do
     mas1[i]:=random(100);
     for i:=1 to n2 do
      mas2[i]:=random(100);
   end;
 
      procedure obrabotka;
      begin
      n3:=n1+n2;
       for i:=1 to n1 do begin
       mas3[i]:=mas1[i];
       end;
        for i:=n1+1 to n3 do begin
        mas3[i]:=mas2[i-n1]
        end;
      end;
      
       procedure vivod;
       begin
        gotoxy(10,1);
       writeln('Массив 1');
        for i:=1 to n1 do begin
        gotoxy(i*4,2);
        write(mas1[i]);
        end;
       gotoxy(10,3);
       writeln('Массив 2');
         for i:=1 to n2 do begin
         gotoxy(i*4,4);
         write(mas2[i]);
         end;
       gotoxy(10,5);
       writeln('Полученный массив');
          for i:=1 to n3 do begin
          gotoxy(i*4,6);
          write(mas3[i]);
          end;
       end;
       
begin
vvod;
clrscr;
obrabotka;
vivod;
end.
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

19 окт 2009, 11:08

вы вписали их подряд.
цикл по первому массиву расписать в нечётные элементы нового массива, а цикл по второму - в чётные
Изображение
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

21 окт 2009, 20:44

Вот только размерности первого и второго массивов в моем примере должны быть одинаковыми, тогда можно так:

Размерность mas3:=mas1+mas2;

procedure obrabotka;
begin
k:=1;
for i:=1 to n1 do
begin
mas3[k]:=mas1;
mas3[k+1]:=mas2
k:=k+2; либо 2 либо 3 не проверял....
end;
end;

Код нарисовал только что, не тестил, возможно с ошибкой где-то...
Главное суть - в 3-й массив записывать сразу по каждому элементу из 1 и 2 массива и передвигать шаг на два уже записанных элемента вперед.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить