Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2011, 22:38   #1
StoneGod
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 15
По умолчанию Задали задачку, совсем не могу понять как нужно наполнять третий массив

"Даны два одномерных массива, создать третий в который поместить сначала четные элементы первых двух массивом затем нечетные."
подскажите как наполнять третий массив, пожалуйста.
StoneGod вне форума Ответить с цитированием
Старый 21.09.2011, 01:20   #2
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Код:
const
  n = 10;
  m = 10;

var
  first: array [1..n] of integer; 
  second: array [1..m] of integer;
  third: array [1..n + m] of integer;
  k: integer;

begin
  {заполнение 1-го и 2-го массива}
  k := 1;
  for i := 1 to n do
    if not odd(first[i]) then begin
      third[k] := first[i];
      inc(k);
    end; 
  for i := 1 to m do
    if not odd(second[i]) then begin
      third[k] := second[i];
      inc(k);
    end;
  
  for i := 1 to n do
    if odd(first[i]) then begin
      third[k] := first[i];
      inc(k);
    end; 
  for i := 1 to m do
    if odd(second[i]) then begin
      third[k] := second[i];
      inc(k);
    end;
  {вывод массива(-ов) на экран}
end.
ввод\вывод доделаешь сам... а так вроде всё
unbanned вне форума Ответить с цитированием
Старый 21.09.2011, 02:17   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Если порядок элементов не важен (в условии ничего не сказано, так что можно считать, что так), то можно за один проход сделать:
Код:
  j := 1;
  k:= m+n;
  for i:= 1 to n do
    if odd(a[i]) then begin
      c[k]:= a[i];
      Dec(k);
    end
    else begin
      c[j]:= a[i];
      Inc(j);
    end;
  for i:= 1 to n do
    if odd(b[i]) then begin
      c[k]:= b[i];
      Dec(k);
    end
    else begin
      c[j]:= b[i];
      Inc(j);
    end;
Четные останутся в изначальном порядке, а нечетные будут переставлены.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 21.09.2011, 19:16   #4
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

можно и так, только тогда второй цикл будет от 1го до m

Код:
  for i:= 1 to m do
    if odd(b[i]) then begin
      c[k]:= b[i];
      Dec(k);
    end
    else begin
      c[j]:= b[i];
      Inc(j);
    end;
unbanned вне форума Ответить с цитированием
Старый 22.09.2011, 07:52   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

unbunned, спасибо за исправление, +1
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив,не могу понять echelone Общие вопросы C/C++ 8 21.03.2011 16:02
не могу понять,что нужно дописать ТатьянаП Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.10.2010 15:43
Не могу понять задачку Чёрный Общие вопросы C/C++ 6 28.09.2009 05:33
задача на массив решите пожалуйста не могу ни как понять LIL_VAdiK Помощь студентам 2 18.02.2009 23:40