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

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

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

> Обработка символьных данных и строк
Kiass
сообщение 25.05.2011 22:17
Сообщение #1





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

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


Задав с клавиатуры последовательность символов, реализовать обработку ее, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта.
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству: слово совпадает с конечным отрезком латинского алфавита (z, yz, xyz и т.д.).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Kiass
сообщение 28.05.2011 11:04
Сообщение #2





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

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


Верно, прошу прощения. Только покидать Вас я еще не собираюсь lol.gif
Посмотрите "ПОЖАЛУЙСТА" smile.gif

Множество, как я поняла, должно содержать
M:=['z','yz','xyz','wxyz','vwxyz','uvwxyz','tuvwxyz','stuvwxyz'];

Только все равно "фигня" получается, т.е. не работает.

program Project1;

{$APPTYPE CONSOLE}

var

M:Set Of char;
first, st, st2, st3:string;
i:integer;
begin
M:=['s'..'z'];
first:='';
writeln('vvedite stroku');
readln(st);
st:=' ';
for i:=1 to length(st) do
begin
if (st[i] <> ' ') then st2:=st2+st[i];
if st[i] = ' ' then
begin
if st2[i] in ['M'] then
begin
st3:=st3+st2;
st2:=' ';
end
else
begin
st2:='';
end;
if st2[i] in ['M'] then
st3:=st3+st2;
writeln('Slova: ',st3);
readln;

end;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.05.2011 13:17
Сообщение #3


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

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

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


Цитата(Kiass @ 28.05.2011 12:04) *
Верно, прошу прощения. Только покидать Вас я еще не собираюсь lol.gif
Ну и хорошо ).

Цитата
Множество, как я поняла, должно содержать
M:=['z','yz','xyz','wxyz','vwxyz','uvwxyz','tuvwxyz','stuvwxyz'];
То есть, это слова, составляющие строку ввода? Тогда их можно задать либо в файле, либо по-простому - строковой константой )). Потому что вводить каждый раз при отладке такой в высшей степени осмысленный текст - зафигачишься..


Цитата
Только все равно "фигня" получается, т.е. не работает.
Ну, ессно.. Ты сразу после ввода стираешь входную строку (закладываешь в нее пробел). Ну, и не только это.. Ты довольно сильно отошла от того, что написал Rian. И вставила что-то про 'M' (что явно к делу не относится, следовательно - содрала кусок с чужой задачи)).

Можно вернуться к варианту Rian'а. Это будет лучше еще и с той т.з., что я сейчас отвалюсь в постель (у меня обнаружилась t=101) и буду тихо себе грипповать.. Но у него там не все чисто.. Rian, с твоим кодом могут быть проблемы при длине строки не 32 символа.. Я бы все же работал с Pos. Типа так
const
l= 8;
abc: string[l]= 'abcdefghijklmnopqrstuvwxyz';
s: string= 'z yz xyz wxyz vwxyz uvwxyz tuvwxyz stuvwxyz';

...

// подготовка строки
while (Length(s)>0) and (s[1]=' ') do Delete(s,1,1); // удаляем лидирующие пробелы
while (Length(s)>0) and (s[Length(s)]=' ') do Delete(s,1,1); // удаляем оконечные пробелы
while Pos(' ',s)>0 do Delete(s,Pos(' ',s),1); // удаляем лишние пробелы из середины
s:= s+' '; // добавляем пробел в конец для единообразия обработки

w1:= Copy(s,1,Pos(' ',s)-1); // копируем первое слово в w1
Delete(s,1,Pos(' ',s); // удаляем первое слово из строки
while Length(s)>0 do begin
w:= Copy(s,1,Pos(' ',s)-1); // копируем следующее слово в w
Delete(s,1,Pos(' ',s); // удаляем это слово из строки
if (w<>w1) and (Pos(w,abc)=Length(abc)-Length(w))+1) then // проверка условия вывода
writeln(w);
end;
....

Как-то так.. Очень извиняюсь за сумбурность. Rian, ты либо поправь свой код, либо используй мой кусок. Если что не так - звиняйте, мозги крутятся со скрипом, раз в 5 медленнее, даром что горячие...
Все, я отвалился..

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





Добавлено через 3 мин.
да, еще одно: если все слова по 8 символов, то 50 слов с пробелами это 450. Нужно использовать длинные строки. Kiass, ты правда используешь Delphi или это случайно попало (я имею в виду {$APPTYPE CONSOLE})? Ответь, пожалуйста, какой у тебя компилятор на самом деле.


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





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

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


Мне нужно на делфи.
и 'z yz xyz wxyz vwxyz uvwxyz tuvwxyz stuvwxyz'; это не строка ввода. Строку по-идеи нужно задавать с клавиатуры, а на эти как бы слова должно оканчиваться вводимое слово, и если в слове есть последовательность из этих букв, то слово выводится на экран, если нет то нет.

P.S. Сначала я задание не поняла, теперь я в нем запуталась.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 31.05.2011 18:52
Сообщение #5


Знаток
****

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

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


Цитата(Kiass @ 28.05.2011 14:49) *

Мне нужно на делфи.



вроде все букафки, еще что-то?

procedure TForm1.Button1Click(Sender: TObject);
var
st,abc,sub,first:string;
i,x:integer;
begin
first:='';
abc:='abcdefghijklmnopqrstuvwxyz';
st:='xyz xvn dfghnv stuvwxyz klmn z rthrt xz yzxyz abc yz.';

st:=' '+st; // готовим строку для обработки smile.gif

for i:=1 to length(st) do
if (st[i]<>' ') and (st[i-1]=' ') then begin
for x:=i+1 to length(st) do
if (st[x]=' ') or (st[x]='.') then begin
sub:=copy(st,i,x-i);

if first='' then first:=sub;

if (pos(sub, abc) = length(abc) - length(sub) + 1) //проверяем на конец абс
and (sub<>first) //не равно первому слову
then memo1.Lines.Add(sub); //выодим

break;
end

end;

end;




Цитата

Можно вернуться к варианту Rian'а. Это будет лучше еще и с той т.з., что я сейчас отвалюсь в постель (у меня обнаружилась t=101) и буду тихо себе грипповать.. Но у него там не все чисто.. Rian, с твоим кодом могут быть проблемы при длине строки не 32 символа.. Я бы все же работал с Pos. Типа так


отрезать кусок строки это можно, но не тяжеловат ли метод?
а какие проблемы с длиной больше 32 символа?

ЗЫ конечно только не "грипповать", а набираться сил!!!)


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Kiass   Обработка символьных данных и строк   25.05.2011 22:17
Lapp   Просьба уважать Правила Форума (п.6) Заголовок тем...   26.05.2011 0:14
Rian   С чем у тебя затруднения? показывай, что сделал...   26.05.2011 7:27
Kiass   Теперь вопрос состоит в последующих 40 % решения ...   26.05.2011 8:28
Rian   Теперь вопрос состоит в последующих 40 % решения ...   26.05.2011 8:32
IUnknown   Что, не можешь определить, совпадает ли найденное ...   26.05.2011 8:36
Lapp   в латинском алфавите еще и буквы Q, U и W присутст...   26.05.2011 12:20
Rian   sorry my bad english :)   26.05.2011 8:58
Kiass   А можно было для тех кто в танке написать задачу о...   26.05.2011 17:40
Lapp   А можно было для тех кто в танке написать задачу о...   27.05.2011 0:43
Kiass   Спасибо, помогли. Дай бог вам здоровья.   27.05.2011 4:14
Lapp   Дай бог вам здоровья. А тебе - ума ). Заходи, если...   27.05.2011 7:59
Rian   и смысл идти учица на прогрмиста (ку) если небыло ...   27.05.2011 11:00
Kiass   мне ума, а вам вежливости бы не помешало. На прогр...   27.05.2011 14:18
Lapp   мне ума, а вам вежливости бы не помешало. На прогр...   27.05.2011 23:20
Kiass   Верно, прошу прощения. Только покидать Вас я еще н...   28.05.2011 11:04
Lapp   Верно, прошу прощения. Только покидать Вас я еще н...   28.05.2011 13:17
Kiass   Мне нужно на делфи. и 'z yz xyz wxyz vwx...   28.05.2011 14:49
Rian   Мне нужно на делфи. вроде все букафки, еще чт...   31.05.2011 18:52


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

 



- Текстовая версия 22.06.2025 4:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"