Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 666
от 11.09.2008, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 222, Экспертов: 38
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


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

Вопрос № 143.221
Добрый вечер! Помогите, пожалуйста, найти ошибку в решении задачи. Задача следующая: есть два упорядоченных по возрастанию массива, один длины 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;

en d 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;

Отправлен: 06.09.2008, 18:00
Вопрос задал: Miracle (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Delph
Здравствуйте, Miracle!

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

Приложение:

---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.

Ответ отправил: Delph (статус: Практикант)
Ответ отправлен: 06.09.2008, 21:46
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное