19.02.2020, 06:27 [+3 UTC]
в нашей команде: 4 219 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.81 (18.02.2020)
JS-v.1.35 | CSS-v.3.37

Общие новости:
06.01.2020, 22:45

Форум:
12.02.2020, 12:22

Последний вопрос:
19.02.2020, 01:29
Всего: 151631

Последний ответ:
19.02.2020, 01:11
Всего: 259783

Последняя рассылка:
18.02.2020, 20:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
14.02.2020, 17:19 »
dar777
Это самый лучший ответ!!! [вопрос № 197726, ответ № 279459]
18.05.2011, 15:30 »
Гречко Альберт Алексеевич
Это именно то, что нужно! Спасибо! [вопрос № 183214, ответ № 267212]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Gluck
Статус: Студент
Рейтинг: 253
Асмик Гаряка
Статус: Советник
Рейтинг: 159
puporev
Статус: Профессор
Рейтинг: 121

Перейти к консультации №:
 

Консультация онлайн # 143221
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Miracle
Отправлена: 06.09.2008, 18:00
Поступило ответов: 1

Добрый вечер! Помогите, пожалуйста, найти ошибку в решении задачи. Задача следующая: есть два упорядоченных по возрастанию массива, один длины M, другой длины N. Из этих массивов нужно составить новый упорядоченный по возрастанию массив, длины M + N. (соединить два массива в один, а затем его упорядочить нельзя).
Решать эту задачу нам нужно следующим образом: берём первый элемент из одного из массивов (того массива, в котором содержится максимальный элемент из всех чисел, входящих в первый и во второй массивы) и все числа, которые меньше его или равны ему (если есть) переписываем в новый массив, затем берём второй элемент из первого массива и т.д…
Вот код задачи, мне кажется, что у меня ошибка в цикле с while, но исправит не могу.

if arrayM[M] > arrayN[N] then begin
for i:= 1 to M do begin
while arrayM[i] >= arrayN[j]do begin
newarray[k]:= arrayN[j];
inc(k);
inc(j);
end;
end;
newarray[k]:= arrayM[i];
inc(k);
end;

end else begin
for i:= 1 to N do begin
while arrayN[i] >= arrayM[j] do begin
newarray[k]:= arrayM[j];
inc(j);
inc(k);
end;
newarray[k]:= arrayN[i];
inc(k);
end;
end;

Состояние: Консультация закрыта

Ответ # 228694 от Delph

Здравствуйте, Miracle!

Можно поступить так: просматриваем в цикле for первый массив, вложенным циклом While идёт по второму. Сначала выбираем все непросмотренные ещё элементы второго массива, не превосходящие текущий элемент первого. Потом выбираем текущий элемент из первого массива... и так до конца первого. Поскольку есть вероятность, что во втором массиве ещё что-то осталось, отдельным циклом смотрим весь этот остаток. Программа в приложении.

Приложение:


Консультировал: Delph
Дата отправки: 06.09.2008, 21:46

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14381 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.81 от 18.02.2020
Версия JS: 1.35 | Версия CSS: 3.37