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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2011, 22:21   #1
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
Вопрос сделать из трёх массивов по возрастанию один по возрастанию

Код:
procedure objedinenie(var a:mas; ga:integer; var b:mas; gb:integer; var c:mas; gc:integer);
var ia,ib,ic:integer;
     ela,elb:integer;
    
    procedure ostatok
           (var m:mas; im,gm:integer);
    var i:integer;
    begin
       for i:=im to gm do begin
                                   c[ic]:=m[i];
                                   ic:=ic+1
                                   end
    end;
begin
   gc:=gc+gb;
   ia:=1; ib:=1; ic:=1;
   ela:=a[ia]; elb:=b[ib];
   while (ia<=ga) and (ib<=gb) do
       if ela<elb then begin
                              c[ic]:=ela;
                              ia:=ia+1; ic:=ic+1;
                              ela:=a[ia]
                              end
                     else begin
                              c[ic]:=elb;
                              ib:=ib+1; ic:=ic+1;
                              elb:=b[ib]
                           end;
     if ia<=ga then ostatok(a,ia,ga)
                  else ostatok(b,ib,gb);
     realdn;
end.
добрый вечер. Этот код изначально предназначался к заданию с таким условием- даны 2 массива по возрастанию в правильном порядке.и нужно было составить программу,которая выдаёт третий массив из этих двух тоже в правильном порядке по возрастанию

У меня же такое задание-даны 3 числовых массива и все они в правильном порядке и по возрастанию.Надо сделать из них один в правильном порядке и по возрастанию.
Как переделать этот код? т.к. не компилирует....
или если легче самим написать программу к заданию,чем переделывать этот код-то давайте так. Как будет Вам удобнее.
Заранее спасибо.
ПС:очень срочно нужно до 24:00 по Московскому времени!!!! Сегодная дождна отправить преподоватулю+ кроме этого задания есть ещё одно-два
Novenkaja вне форума Ответить с цитированием
Старый 22.03.2011, 23:14   #2
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

очень нужно это задание
и вот ещё одно

3 числовых массива,2 по возрастанию,один по убыванию.из них сделать один во возратснаию(числа идут по порядку)
Novenkaja вне форума Ответить с цитированием
Старый 23.03.2011, 00:16   #3
romec1
Пользователь
 
Регистрация: 04.02.2010
Сообщений: 50
По умолчанию

а в чем сложность то? на сколько я понимаю:
- создаешь массив размерностью (размер первого массива + размер 2 массива + размер 3 массива) добавляешь элементы массивов в твой, потом уже группируешь по возрастанию, или как тебе уже там нужно...
Я не волшебник.. я только учусь
romec1 вне форума Ответить с цитированием
Старый 23.03.2011, 00:54   #4
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

на словах это легко,а на деле???
я на листке с цифрами это прокрутила,а тоже самое в программе мне уже сложнее
Novenkaja вне форума Ответить с цитированием
Старый 23.03.2011, 08:28   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
потом уже группируешь по возрастанию, или как тебе уже там нужно...
это не нужно делать. Раз элементы в исходных массивах уже отсортированы - то сразу при добавлении можно ( И НУЖНО ) добавлять их в правильном порядке.


Novenkaja, вторая задача решается аналогично первой - только по третьему массиву надо двигаться от последней записи к первой...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2011, 21:18   #6
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Примерно так
1)
Код:
procedure objedinenie(var a:mas; a_size:integer; var b:mas; b_size:integer; var c:mas; c_size:integer; var out:mas);
var ia,ib,ic,iout:integer;
    index:integer;
Begin
  ia := 1;
  ib := 1;
  ic := 1;
  iout = 1;
  while ( (ia<=a_size) or (ib<=b_size) or (ic<=c_size) ) do Begin
    index := 0; { Номер массива из которого брать следующий элемент }

    if ( ia<=a_size ) then index := 1;

    if ( ib<=b_size ) then Begin
      if (index=0) then
        index := 2;
      if (index=1) then
        if (b[ib]<a[ia]) then index := 2;
    end;

    if ( ic<=c_size ) then Begin
      if (index=0) then
        index := 3;
      if (index=1) then
        if (c[ic]<a[ia]) then
          index := 3;
      if (index=2) then
        if (c[ic]<b[ib]) then
          index := 3;
    end;

    if (index = 1) then Begin
      out[iout] := a[ia];
      ia := ia+1;
    End;
    if (index = 2) then Begin
      out[iout] := b[ib];
      ib := ib+1;
    End;
    if (index = 3) then Begin
      out[iout] := c[ic];
      ic := ic+1;
    End;
    iout := iout+1;
  End;
End;
2)
Код:
procedure objedinenie(var a:mas; a_size:integer; var b:mas; b_size:integer; var c:mas; c_size:integer; var out:mas);
var ia,ib,ic,iout:integer;
    index:integer;
Begin
  ia := 1;
  ib := 1;
  ic := c_size;
  iout = 1;
  while ( (ia<=a_size) or (ib<=b_size) or (ic>0) ) do Begin
    index := 0; { Номер массива из которого брать следующий элемент }

    if ( ia<=a_size ) then index := 1;

    if ( ib<=b_size ) then Begin
      if (index=0) then
        index := 2;
      if (index=1) then
        if (b[ib]<a[ia]) then index := 2;
    end;

    if ( ic>0 ) then Begin
      if (index=0) then
        index := 3;
      if (index=1) then
        if (c[ic]<a[ia]) then
          index := 3;
      if (index=2) then
        if (c[ic]<b[ib]) then
          index := 3;
    end;

    if (index = 1) then Begin
      out[iout] := a[ia];
      ia := ia+1;
    End;
    if (index = 2) then Begin
      out[iout] := b[ib];
      ib := ib+1;
    End;
    if (index = 3) then Begin
      out[iout] := c[ic];
      ic := ic-1;
    End;
    iout := iout+1;
  End;
End;


Здесь a,b,c входные массивы. out выходной массив. во 2м задании a,b по возрастанию, с по убыванию.

Ну естественно это только процедуры работы с массивами (у вас ещё должен быть основной текст программы и обьяление типа mas, добавти их в код).

И ещё. Писал без проверки (в лом искать комплятор). Поэтому могут быть ошибки. Проверти сами.
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."

Последний раз редактировалось val_nnm; 23.03.2011 в 21:20.
val_nnm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массивов слов по возрастанию их длин felixXx Помощь студентам 4 30.12.2009 00:41
Сортировка по возрастанию в Stringgride Китти Помощь студентам 2 22.12.2009 23:42
Паскаль.Двумерные массивы,объединить два массива в один с сортировкой столбцов по возрастанию. valord Помощь студентам 6 02.06.2009 11:13
Упорядочить по возрастанию элементы.. TemaTim Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 19:00
как из двух отсортированных по возрастанию одномерных массивов сформировать третий Тоха Рыжов Общие вопросы C/C++ 1 07.10.2007 01:43