IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> 2 задачки, 1-вставка числа в массив, 2-строки
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Еще раз здраствуйте! и еще раз 10000 извинений!
вот тут задали, помогите кто чем может...плиз...
Цитата
Задан отсортированный одномерный массив чисел. Добавить введенное
пользователем число в массив таким образом, чтобы массив остался
отсортированным. Использовать минимальное количество сравнений.

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

2-я залачка, знаю что должна тут быть где-то, но не нашел, уж не ругайте пожалуйста...а в инете, какие то сложные программы...
Помогите плиз... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Volvo
Пасибо огромное за ответы, что все по полочкам разложил, за строки отдельно пасибо... good.gif ...
Только вот как с прогой быть, Я думаю придется условие усложнять, про то как ты писал
Цитата
Или придется усложнять программу проверками, во-первых, вообще, упорядочен ли он, а во-вторых - как именно..

просто как быть с бинарным поиском ума не приложу... dry.gif ...
Поэтому если можешь дай алгоритм как это условие усложнить, или если где процедура завалялась... smile.gif ...
Или мож есть другие варианты, как нибудь бинарный поиск передлать и т.д.
Просто массив 100% преподаватель будет вводить как по убыванию, так и наоборот...и тут надо чтото придумать, чтобы прога работала... mega_chok.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(TOPEHTO @ 24.11.2006 14:00)
Просто массив 100% преподаватель будет вводить как по убыванию, так и наоборот...и тут надо чтото придумать, чтобы прога работала...


Ну, раз будет проверять - пусть проверяет smile.gif Главное - чтобы он вводил (как, собственно, требуется в условии) упорядоченный массив...

Используется очень простой принцип работы - см. комментарии:
var
i,x,j, count: integer;
{ size, }
left, right, center: integer;
is_ascend: boolean;
{ a: array[1 .. 100] of integer; }

const
size = 20;
A: array [1..size+1] of integer = (
(* НЕубывающая последовательность *)
{ 1, 3, 5, 6, 7, 7, 12, 14, 19, 26, }
{ 28, 30, 33, 37, 40, 44, 49, 55, 69, 78, 0 }

(* НЕвозрастающая последовательность *)
78, 69, 55, 49, 44, 40, 37, 33, 30, 28,
26, 19, 14, 12, 7, 7, 6, 5, 3, 1, 0
);

begin
(*
write('vvedite size'); readln(size);
writeln('vvedite elementi');
for i:=1 to size do readln(a[i]);
*)
writeln ('vvedite X');
readln (x);

{
Для начала - найдем 2 различных элемента,
чтобы определить, как отсортирована последовательность...
}
i := 1;
while (i < size) and (a[i] = a[i+1]) do inc(i);
{
Если разные элементы найдены - делаем заключение о том, НЕубывающая это
последовательность или НЕвозрастающая, если не найдены - нам же проще,
значит, вообще ВСЕ элементы - одинаковые, и достаточно сравнить с граничными
}
is_ascend := (a[i] < a[i+1]);

{
А вот начиная отсюда - просто ВСЕ сравнения, которые делаются между элементами
последовательности, надо еще сравнивать с is_ascend, тогда независимо от направления
сортировки мы получим одинаковый (и правильный) результат...
}
if (x>a[size]) = is_ascend then a[size+1]:=x
else
if (x<a[1]) = is_ascend then begin
for j:=size downto 1 do a[j+1]:=a[j];
a[1]:=x;
end
else begin
left := 1; right := size;
repeat

center := (right + left) div 2;
inc(count);
{ "Двойное" сравнение придется разбить на 2 "одинарных" }
if ((a[ center ] > X) = is_ascend) or (a[ center ] = X) then right := center
else left := center;

until (right - left = 1) or (a[ center ] = X);

{ Это добавлено, чтобы пофиксить глючок, который я раньше не заметил... }
while (a[ center ] < X) = is_ascend do inc(center);

for i := size + 1 downto center do a[i] := a[i - 1];
a[ center ] := X;
end;

writeln('count = ', count);
for i:=1 to size+1 do
write (' ',a[i]);
writeln;

readln;
end.


Вот и все... smile.gif Проверялось на двух приведенных массивах (просто закомментируй один и раскомметнируй другой), если надо проверять на вводимой последовательности - убери Const-описания массивов, и раскомментируй описание size и массива A...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
TOPEHTO   2 задачки   23.11.2006 22:15
TOPEHTO   Помогите пожалуйста... :mega_chok: ...   24.11.2006 2:20
klem4   Полагаю, нужно основываться на методе деления отре…   24.11.2006 2:30
-Екатерина-   задача: 42. Дан одномерный упорядоченный по неубыв…   24.11.2006 2:50
volvo   Только примерно... У тебя в программе производится…   24.11.2006 4:03
TOPEHTO   Volvo А мона переделаеть программу, которую дала Е…   24.11.2006 15:08
volvo   Ну, скажем, так: var i,x,j, count: integer; s…   24.11.2006 16:04
TOPEHTO   Volvo Несколько вопросов: 1- А как? Просто Я вообщ…   24.11.2006 16:33
volvo   методом бинарного поиска ищет позицию, на которой …   24.11.2006 16:49
TOPEHTO   Volvo Пасибо огромное за ответы, что все по полочк…   24.11.2006 19:00
volvo   Просто массив 100% преподаватель будет вводить как…   24.11.2006 20:07
TOPEHTO   Volvo СпасиБо, тебе огромное...ВЫручил...сейчас бу…   24.11.2006 20:11
volvo   Не знаю... У меня нормально работает (после того, …   24.11.2006 20:34
TOPEHTO   Ага, спасибо...во всем разобрался... :) ... Тут ещ…   24.11.2006 22:48
volvo   Зааешь, что? Я, конечно, понимаю, что у тебя может…   24.11.2006 22:55


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.05.2024 6:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name