Помощь - Поиск - Пользователи - Календарь
Полная версия: Интересный аспект решения задачи о позиционном выводе слов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
volvo
Условие задачи смотрите здесь: string, разбор по словам


!smoke2.gif

Предложение участникам форума (Показать/Скрыть)



Я очень извиняюсь за вторжение, но я взял на себя смелость выделить этот разговор в отдельную тему. В основном, чтобы не мешать автору решать свои изначальные проблемы. В оригинальной теме также делаю ссылку на эту ветку..
- Lapp
volvo
Все "ова" выровнены, одно под другим.
-TarasBer-
За один проход (то есть прямо во время считки с клавиатуры, не запоминая слова) вывести все слова ровно невозможно. А хранить массив сдвигов, а потом при выводе его учитывать - это уже 2 прохода.
Volvo, может ты просто в условии кой-чего мелким шрифтом написал, чего мы не заметили, типа что-то считается двойным проходом, а что-то нет? Юридические игры мне не интересны, если что.
volvo
Цитата
За один проход (то есть прямо во время считки с клавиатуры, не запоминая слова) вывести все слова ровно невозможно
Если кто-то чего-то не умеет - это не значит, что оно в принципе невозможно. С тобой разговор окончен.

P.S. Задачка выходит за рамки сортировки пузырьком, да, TarasBer? Ну ничего, скоро очередной наплыв студентов и школьников, кто-нибудь да задаст тот вопрос, который даже ты сможешь решить...
-TarasBer-
> P.S. Задачка выходит за рамки сортировки пузырьком, да, TarasBer? Ну ничего, скоро очередной наплыв студентов и школьников, кто-нибудь да задаст тот вопрос, который даже ты сможешь решить...

Не понял, это ты подначиваешь так?
Не, не поведусь...

Ааа, я понял, это всё шутка в стиле Сэма Лойда (который обещал 1 000 000 баксов тому, кто поменяет 14 и 15 в игре в 15, не поменяв остальные фишки)...
Unconnected
Соорудил прогу, по немного другому принципу.. volvo в ЛС не ответил что-то, наверное, она не подходит под критерии, поэтому кладу сюда )

const mc=60;

var words:array[1..mc] of string;
s,sam,buf:string;
i,p,d,bd,j,k:integer;
lets:set of char=['a'..'z']+['A'..'Z'];
begin
writeln('Type in a text');
readln(s);
writeln('Type in a sample');
readln(sam);
p:=0;
d:=0;
bd:=0;
buf:='';
s:=s+' ';
for i:=1 to length(s) do begin
if (s[i] in lets) then buf:=buf+s[i] else begin
d:=pos(sam,buf);
if d>0 then begin
inc(p);
words[p]:=buf;
if d>bd then begin
for j:=1 to p do
for k:=1 to (d-pos(sam,words[j])) do words[j]:=' '+words[j];
bd:=d;
end else begin
for k:=1 to bd-d do words[p]:=' '+words[p];
end;
buf:='';
end;
end;
end;
for i:=1 to p do writeln(words[i]);
readln;
end.




(подразумевается, что слова разделены только пробелами. Писал в делфи, но в паскале тоже должно работать.)
-TarasBer-
> наверное, она не подходит под критерии

Для последовательности
Код

ова
аова
ааова
аааова
ааааова

итд

у тебя будет даже не 2 прохода, а целых n
Unconnected
Цитата
(нет двух явных проходов - первого для нахождения indent-а, и второго - для печати),


У меня нет двух явных проходов - поиска максимального indent-а и печати. Не думаю, что тут имеется в виду сделать все в одном цикле.
-TarasBer-
Ну, слушай, явный, неявный... Я же сказал, что в юридические игры не играю.
К тому же у тебя алгоритмическая сложность квадратом стала.
Unconnected
Никаких игр, тут жирным шрифтом было выделено, в чем соль) А дело не в сложности (скорости выполнения), а алгоритме.

PS: эмм, извиняюсь за дезинформацию, сейчас получил ЛС от другого пользователя, и во входящих увидел мессагу от volvo, ещё днем пришедшую. Но оповещения не было, блин!
Lapp
Володь, уточни, плз: за один проход без использования массивов?

Надо бы эту тему все же разделить. Негоже мешать человеку. Я сделаю сегодня попозже, OK?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.