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

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

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

 
 Ответить  Открыть новую тему 
> string, разбор по словам, и позиционный вывод
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Анастасия

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


помогите решить задачу, или подскажите
смысл.
дан список слов, максимум слов может быть 60.
и в зависимости оттого есть ли в слове сочетание букв ова нужно записать слова в таком порядке
например:
список который задан

немцова
корова
оваоова
овал

результат

немцова
_корова
____оваоова
оваоова
____овал

только вместо '_' будет пробел
максимальная длина рядка например 170

заранее спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(superseal @ 5.12.2010 3:22) *
в зависимости оттого есть ли в слове сочетание букв ова нужно записать слова в таком порядке
Правильно я понимаю, что слова, в которых нет этого семпла, нужно опускать?
В любом случае, задача не из самых простых. Делать нужно в два прохода, поскольку заранее неизвестен максимальный индент. Так что надо сначала все просмотреть и определить его. А потом на втором проходе уже печатать.
Я написал полное решение. Там, правда только английские буквы, русских нет. Работает вот так:
Type in a text: abcdef snabcsnnn abchjhjhhjhjhjhjh mnabcnmabcnmabcnmabcnm asdabc
Type in a sample: abc
abcdef
snabcsnnn
abchjhjhhjhjhjhjh
mnabcnmabcnmabcnmabcnm
mnabcnmabcnmabcnmabcnm
mnabcnmabcnmabcnmabcnm
mnabcnmabcnmabcnmabcnm
asdabc
Hit Enter..


Настя, как у тебя с Паскалем дела? Можешь начать это делать? Я не хочу давать тебе полное решение, ведь ты же так ничему не научишься - верно? Могу подкинуть тебе для затравки некоторое начало, в котором есть function for getting next word из заданной строки. Попробуешь продолжить?

const
Letters: set of char= ['A'..'Z']+['0'..'9'];

var
s: string;


function GetNextWord: string;
var
w: string;
begin
while (Length(s)>0) and not (UpCase(s[1]) in Letters) do Delete(s,1,1);
w:= '';
while (Length(s)>0) and (UpCase(s[1]) in Letters) do begin
w:= w+s[1];
Delete(s,1,1)
end;
GetNextWord:=w
end;

var
Text,Sample,w,v: string;
p,Max,i: integer;

begin
Write('Type in a text: ');
ReadLn(Text);
Write('Type in a sample: ');
ReadLn(Sample);
s:= Text;
Max:=0;
repeat
w:=GetNextWord;
...

Все, что непонятно - спрашивай.


М
На будущее: делай нормальный заголовок



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Анастасия

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


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


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

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


А можно пояснить, от чего зависит количество пробелов перед словами с нужным сочетанием? Что-то из примера в первом посте не понял..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Анастасия

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


Цитата(Unconnected @ 5.12.2010 14:25) *

А можно пояснить, от чего зависит количество пробелов перед словами с нужным сочетанием? Что-то из примера в первом посте не понял..


в первом слове ова-эт о последние три буквы
последущие слова мы записываем так, что бы ова были все время под собой.
а пробелы занимают то пространство на которое подвинули слово.
я может не оч корректно выражаюсь, но это аля кросворда,который выглядит так
_____ова___
_____ова_
ова____
_____ова
_____ова___
(ова в один столбик записаны)
где за ___ ты вставляешь недостающие буквы,котторые нам известны

Сообщение отредактировано: superseal -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Хотелось бы уточнить, в каком виде стоит ожидать ввод слов ? Надо понимать это файл ? В строку Pascal 60 слов поместится не очень длинных)


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Разговор про решение за один просмотр выделен в отдельную тему: Интересный аспект решения задачи о позиционном выводе слов


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 4
Пол: Женский
Реальное имя: Анастасия

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


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(superseal @ 7.12.2010 2:19) *
задача была решина.
спасибо за помощь, и за советы, они мне действительно помогли усвоить и понять где делала ошибки в своем решение

Хорошо. Заходи еще.
На всякий случай выкладываю свое решение (только для английских букв).
const
Letters: set of char= ['A'..'Z']+['0'..'9'];

var
s: string;

function GetNextWord: string;
var
w: string;
begin
while (Length(s)>0) and not (UpCase(s[1]) in Letters) do Delete(s,1,1);
w:= '';
while (Length(s)>0) and (UpCase(s[1]) in Letters) do begin
w:= w+s[1];
Delete(s,1,1)
end;
GetNextWord:=w
end;

var
Text,Sample,w,v: string;
p,Max,i: integer;

begin
Write('Type in a text: ');
ReadLn(Text);
Write('Type in a sample: ');
ReadLn(Sample);
s:= Text;
Max:=0;
repeat
w:=GetNextWord;
while Pos(Sample,w)>0 do begin
p:=Pos(Sample,w);
if p>Max then Max:=p;
w[p]:=#0
end
until w='';
s:=Text;
repeat
w:=GetNextWord;
v:=w;
while Pos(Sample,w)>0 do begin
p:=Pos(Sample,w);
w[p]:=#0;
for i:=1 to Max-p do Write(' ');
WriteLn(v)
end
until w='';
WriteLn('Hit Enter..');
ReadLn
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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