Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Pascal
Перезагрузить страницу Конкатенация двух численных массивов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Amputator Amputator вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.02.2006
По умолчанию Конкатенация двух численных массивов - 07.04.2006, 23:38

Я по поводу конкатенации двух целочислительных (символьных, вещественных......) массивов. Как часто советуют, изобразил всё на бумажке. массив Х с индексами 0, 1, 2 ... n-1. массив Y с индексами 0, 1, 2 ... n-1. и, наконец, выходной массив, объединяющий X и Y: сначала массив X, потом Y. индексы выглядят так: 0, 1, 2, ..., n-1, n, n+1, n+2, ..., 2n-1. Как мне теперь записать функцию? Не хватает опыта

ps это вариант, где массив Z объединяет X и Y. Наверное, можно, чтобы массив X ВКЛЮЧИЛ В СЕБЯ массив Y?
Ответить с цитированием
  (#2 (permalink)) Старый
imported_Olga_ imported_Olga_ вне форума
Member
 
Сообщений: 279
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.03.2006
По умолчанию Re: Конкатенация - 08.04.2006, 00:27

Цитата:
Originally posted by Amputator
[b]Я по поводу конкатенации двух целочислительных (символьных, вещественных......) массивов. Как часто советуют, изобразил всё на бумажке. массив Х с индексами 0, 1, 2 ... n-1. массив Y с индексами 0, 1, 2 ... n-1. и, наконец, выходной массив, объединяющий X и Y: сначала массив X, потом Y. индексы выглядят так: 0, 1, 2, ..., n-1, n, n+1, n+2, ..., 2n-1. Как мне теперь записать функцию? Не хватает опыта

ps это вариант, где массив Z объединяет X и Y. Наверное, можно, чтобы массив X ВКЛЮЧИЛ В СЕБЯ массив Y?
Объединять надо сортируя элементы массивов?
1) Сортируешь массив Х
2) Сортируешь массив Y
3) Нужно объявить индекс k для массива Z (вне цикла) и обнулить(задать значение с которого начинается индексация массива)
4) Делаешь цикл с условием для продолжения цикла:
(I < N1) And (J < N2)
N1,N2 - кол-во элементов в массивах
I, J- индексы массивов
4) В цикле делаешь if/else в котором проверяешь какой из элементов нужно загнать в мас. Z (X[I] или Y[J]), и в зависимости от этого делаешь инкремент для индекса I or J
Код:
 if X[I] < Y[J] then begin
    Z[k] := X[I];
    I := I + 1;
  else
    Z[k] := Y[J];
    J := J + 1;
  end;
  k := k + 1;{для k на протяжении цикла всегда нужен инкремент , т.к. всегда добавляем в Zэлемент  }
5) По окончании цикла проверяешь значение индексов I и J, и если(if) не дошли до конца одного из массиво значит (then) заполняешь недостающие элементы в массив Z линейно без всяких проверок, т.к. массивы ( X, Y ) у же были отсортированы.

У нас так делали
Ответить с цитированием
  (#3 (permalink)) Старый
Amputator Amputator вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.02.2006
По умолчанию 11.04.2006, 17:16

нет, сортировка необязательна
в целом (вернее, конкретно), я понял, что делать
СПАСИБО
Ответить с цитированием
  (#4 (permalink)) Старый
imported_Olga_ imported_Olga_ вне форума
Member
 
Сообщений: 279
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.03.2006
По умолчанию 12.04.2006, 01:16

Цитата:
Originally posted by Amputator
[b]нет, сортировка необязательна
в целом (вернее, конкретно), я понял, что делать
СПАСИБО
Вообще то я виновата : в принцепе описала тебе как объединить два упорядоченных массива сохраняя сортировку.
Если речь идет о простом соединении честно говоря я не помню как нас учили, но на мой взгляд это не сложно:
Есть 2 массива х,y и их размеры len1 и len2. Нужно их объединить в массиве z, значит длинна z равна len1+len2. Можно сделать 2 цикла:
в первом цикле переписать элементы из 1-го массива, а во втором из 2-го массива. А если массивы x и y равны, и последовательность переписанных элементов в z не имеет значения тогда можно все сделать в 1-ом цикле:
Код:
j := 1
for i := 1 to N begin
z[j] := x[i];
j := j + 1;
z[j] := y[i];
j := j + 1;
end;
Ответить с цитированием
  (#5 (permalink)) Старый
Loid Loid вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.11.2004
По умолчанию 16.04.2006, 20:01

Код:
for i := 1 to x_N+y_N 
begin
   if(i<= x_N) then z[i] = x[i]
   else z[i] = y[i-y_N];
end;
x_N и y_N - длинна массива х и у соответственно.
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти наибольшую общую последовательность для двух числовых массивов viktorr C++ Builder 4 22.05.2010 18:10
С помощью какой стандартной компоненты можно нарисовать график из двух массивов qqeeaaddzzcc C++ Builder 5 12.01.2009 23:05
Быстрый Алгоритм сравнения двух массивов AcerExtensa С/С++ 6 21.07.2008 11:38
Создание двух динамических массивов qqeeaaddzzcc С/С++ 6 23.05.2008 17:27
Объединение двух массивов Horror Алгоритмы 6 27.11.2007 18:01
Сравнение двух массивов в Excel'e edgar Visual Basic 2 20.08.2007 17:33
TFileStream создание двух динамических массивов Ал-леша C++ Builder 3 01.06.2005 10:38
Свёртка списка размытых численных структур rdim Prolog 9 17.12.2004 22:17
Объектная схема для численных методов Старостин А.Б. Общие вопросы создания ПО 1 01.10.2004 13:35
Индекс каждая строка может быть представлена как конкатенация двух своих половин Иван FXS Алгоритмы 2 27.09.2004 11:28
Несовместимость указателей двух- и одномерных массивов EiTRoN С/С++ 18 03.06.2004 13:26
Написание численных методов на С++ Anonymous Вопросы начинающих программистов 2 24.05.2004 11:58



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов