0 / 0 / 0
Регистрация: 25.01.2009
Сообщений: 9
1

Слияние массивов в один упорядоченный массив

28.01.2009, 09:41. Показов 4737. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите.
Имеются три упорядоченных в порядке возрастания массива. Выполните слияние их в один упорядоченный массив.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2009, 09:41
Ответы с готовыми решениями:

слияние двух упорядоченных массивов в один упорядоченный
это слияние двух упорядоченных массивов в один упорядоченный, программу я сама напишу, тока...

Слияние двух упорядоченных списков в один упорядоченный
Даны два списка упорядоченные по не убыванию.Объединить их в третий список упорядоченный по не...

Слияние массивов в один массив по убыванию
Даны три целочисленных массива A, B и С размера NA, NB, NC соответсвенно, элементы которых...

Программа для объединения двух упорядоченных линейных массивов в один упорядоченный
Составьте программу с использованием процедуры для решения следующей задачи: Напишите программу с...

4
35 / 35 / 6
Регистрация: 01.01.2009
Сообщений: 141
28.01.2009, 09:57 2
Цитата Сообщение от 55555 Посмотреть сообщение
Помогите.
Имеются три упорядоченных в порядке возрастания массива. Выполните слияние их в один упорядоченный массив.
Ну тут нужно цикл организовать. Проверяются три крайних числа. Какое меньше, такое и записываем в новый массив, а число затираем (или удаляем).
А можно просто все запихнуть в один массив и отсортировать8).
0
0 / 0 / 0
Регистрация: 25.01.2009
Сообщений: 9
29.01.2009, 19:43  [ТС] 3
Может с решением поможите?
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
29.01.2009, 21:04 4
AlexQ, хм, ты думаешь так всё просто ?
нужно организовать цикл с использованием while, в котором будут заданы условия окончания 3-х массивов, а вот внутри него делать проверку на то какое меньшее и кстати для каждого массива нужен свой "указатель" (я имею ввиду типа a[i] b[j] m[k]) и изменять эти указатели...
Ещё надо не забыть сделать проверку на то, что массивы упорядоченны по возврастанию, прога по сути простая...

Добавлено через 1 час 7 минут 58 секунд
Короче держи свою программу, до конца не тестил, посмотришь, если что не так напишешь тут...
Код
Program xa;
var
 a,b,c:array[1..100] of integer;
 d:array[1..300] of integer;
 i,k,l, m,n,h,de:integer;
 p:array[1..3] of boolean;
begin
 repeat
  Writeln('BBedute kolu4ectBo eleMeHToB B 1-om MaccuBe');
  readln(m);
  Writeln('BBedute cam MaccuB');
  for i:=1 to m do
  begin
   Write('A[' ,i, ']=');
   readln(a[i]);
  end;
  writeln;
  Writeln('BBedute kolu4ectBo eleMeHToB B 2-om MaccuBe');
  readln(n);
  Writeln('BBedute cam MaccuB');
  for k:=1 to n do
  begin
   Write('b[' ,k, ']=');
   readln(b[k]);
  end;
  writeln;
  Writeln('BBedute kolu4ectBo eleMeHToB B 3-em MaccuBe');
  readln(h);
  Writeln('BBedute cam MaccuB');
  for l:=1 to h do
  begin
   Write('c[' ,l, ']=');
   readln(c[l]);
  end;
  writeln;
  for i:=1 to 3 do
   p[i]:=true;
  i:=1;
  k:=1;
  l:=1;
  while ((i<=m) or (k<=n) or (l<=h)) and (p[1] and p[2] and p[3]) do
  begin
   if (a[i]>a[i+1]) and (i<m) then
    p[1]:=false
  else
   inc(i);
  if (b[k]>b[k+1]) and (k<n) then
    p[2]:=false
  else
   inc(k);
  if (c[l]>c[l+1]) and (l<h) then
    p[3]:=false
  else
   inc(l)
  end;
 until p[1] and p[2] and p[3];
 Writeln;
 Writeln('MaccuBbl do Clu9Hu9');
 for i:=1 to m do
  Write(a[i], ' ');
 Writeln;
 for i:=1 to n do
  Write(b[i], ' ');
 Writeln;
 for i:=1 to h do
  Write(c[i], ' ');
 i:=1;
 k:=1;
 l:=1;
 de:=1;
 while (i<=m) or (k<=n) or (l<=h) do
 begin
  if (i<=m) and (k<=n) and (l<=h) then
  begin
   if a[i]<b[k] then
    if a[i]<c[l] then
    begin
     d[de]:=a[i];
     inc(de);
     inc(i)
    end
    else
    begin
     d[de]:=c[l];
     inc(de);
     inc(l)
    end
   else
    if b[k]<c[l] then
    begin
     d[de]:=b[k];
     inc(de);
     inc(k)
    end
    else
     if c[l]<b[k] then
     begin
      d[de]:=c[l];
      inc(de);
      inc(l)
     end
     else
     begin
      d[de]:=a[i];
      inc(de);
      inc(i)
     end;
  end
  else
   if (i<=m) and (k<=n) and (l>h) then
   begin
    if a[i]<b[k] then
    begin
     d[de]:=a[i];
     inc(de);
     inc(i)
    end
    else
     if b[k]>a[i] then
     begin
      d[de]:=b[k];
      inc(de);
      inc(k)
     end
     else
     begin
      d[de]:=a[i];
      inc(de);
      inc(i)
     end
   end
   else
    if (i<=m) and (k>n) and (l<=h) then
    begin
     if a[i]<c[l] then
     begin
      d[de]:=a[i];
      inc(de);
      inc(i)
     end
     else
      if c[l]>a[i] then
      begin
       d[de]:=c[l];
       inc(de);
       inc(l)
      end
      else
      begin
       d[de]:=a[i];
       inc(de);
       inc(i)
      end
    end
    else
     if (i>m) and (k<=n) and (l<=h) then
     begin
      if b[k]<c[l] then
      begin
       d[de]:=b[k];
       inc(de);
       inc(k)
      end
      else
       if c[l]>b[k] then
       begin
        d[de]:=c[l];
        inc(de);
        inc(l)
       end
       else
       begin
        d[de]:=b[k];
        inc(de);
        inc(k)
       end
     end
     else
      if (i>m) and (k<=n) and (l>h) then
      begin
       d[de]:=b[k];
       inc(k);
       inc(de)
      end
      else
       if (i>m) and (k>n) and (l<=h) then
       begin
        d[de]:=c[l];
        inc(l);
        inc(de)
       end
       else
        if (i<=m) and (k>n) and (l>h) then
        begin
         d[de]:=a[i];
         inc(i);
         inc(de)
        end
 end;
 Writeln;
 Writeln;
 Writeln('noLy4uBLLieUc9 maCCub');
 for i:=1 to de-1 do
  Write(d[i], ' ');
 readln;
end.
Добавлено через 1 минуту 59 секунд
Комментарии не писал, т.к. там одни if-ы, не вижу смысла расписывать что они означают в данный момент, захочешь разберёшься
0
35 / 35 / 6
Регистрация: 01.01.2009
Сообщений: 141
29.01.2009, 23:06 5
Цитата Сообщение от lexus_ilia Посмотреть сообщение
AlexQ, хм, ты думаешь так всё просто ?
нужно организовать цикл с использованием while...
Я не сказал, что все так просто, я лишь предложил варианты решения. Хотя, хочу сказать, что тут больше времени уйдет, чем напряга мозга (особенно если просто объединить все в массив и отсортировать). Тут другое дело, на какую тему задача.
0
29.01.2009, 23:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2009, 23:06
Помогаю со студенческими работами здесь

Слияние массивов в упорядоченный массив
выполнить слияние упорядоченного по возрастанию А(m) и неупорядоченного(n) массивов(n&lt;&lt;m) в...

Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию
Даны два упорядоченных по убыванию массива W и G. Получите из них путем слияния упорядоченный по...

Слияние двух упорядоченных по убыванию массивов в один, упорядоченный по убыванию
Даны два упорядоченных по убыванию массива W и G. Получите из них путем слияния упорядоченный по...

Получить за один просмотр упорядоченный массив С(К), путем слияния упорядоченных массивов A(N) и B(M)
У меня такой вопрос возник: как складывать одномерные массивы разных размеров? В интернете пишут...

Выполнить слияние упорядоченного и неупорядоченного массивов в упорядоченный
Выполнить слияние упорядоченного по возрастанию A (m) и неупорядоченного B (n) массивов (n &lt;&lt; m) в...

Слияние 2х массивов в один с сортировкой
Дали задание слить 2 массива в 3й, таким образом, что б конец первого был началом второго и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru