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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.05.2011 0:14
Сообщение #2


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

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

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


М
Просьба уважать Правила Форума (п.6)
Заголовок темы отредактирован



Цитата(Kiass @ 25.05.2011 23:17) *
Задав с клавиатуры последовательность символов, реализовать обработку ее, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта.
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству: слово совпадает с конечным отрезком латинского алфавита (z, yz, xyz и т.д.).

Kiass, ты забыл задать вопрос. С чем у тебя затруднения? показывай, что сделал, и говори, что не получается.


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


Знаток
****

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

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


Цитата(Lapp @ 26.05.2011 0:14) *

С чем у тебя затруднения? показывай, что сделал, и говори, что не получается.

видимо не знает с чего начать)
60% решения

var
st,abc,sub,first:string;
i,x:integer;
begin
first:='';
abc:='abcdefghijklmnoprstvxyz';
st:=' xyz xvn dfghnv klmn rthrt xz xyz abc .';

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]=' ' then begin
sub:=copy(st,i,x-i);
...



--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kiass
сообщение 26.05.2011 8:28
Сообщение #4





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

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


Теперь вопрос состоит в последующих 40 % решения rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 26.05.2011 8:32
Сообщение #5


Знаток
****

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

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


Цитата(Kiass @ 26.05.2011 8:28) *

Теперь вопрос состоит в последующих 40 % решения rolleyes.gif

и какие действия должна делать эта часть?


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 26.05.2011 8:36
Сообщение #6


a.k.a. volvo877
*****

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

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


Что, не можешь определить, совпадает ли найденное слово с конечными символами алфавита?

     if pos(sub, abc) = length(abc) - length(sub) + 1 then // является. Иначе - нет
При условии, что выделил слово в переменную subs правильно, разумеется.


Добавлено через 15 мин.
Кстати, Rian, в латинском алфавите еще и буквы Q, U и W присутствуют, ага. Их всего 26, а не 23 как у тебя...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rian
сообщение 26.05.2011 8:58
Сообщение #7


Знаток
****

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

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


sorry my bad english smile.gif


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.05.2011 12:20
Сообщение #8


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

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

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


Цитата(IUnknown @ 26.05.2011 9:36) *
в латинском алфавите еще и буквы Q, U и W присутствуют, ага. Их всего 26, а не 23 как у тебя...
Хотя, по условию задачи нужны только 8 последних.. но именно в них сидит львиная доля выпавших букавог ))


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





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

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


А можно было для тех кто в танке написать задачу от начала до конца, чтоб вбить ее в Делфи, нажать на F8 и бабац, она что то напишет, чтоб потом пойти к преподу и сдать эту оочень хорошую лабу. ммммм?


Так есть вариант что кто нибудь напишет полное решение задачи?

Сообщение отредактировано: Kiass - 26.05.2011 23:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.05.2011 0:43
Сообщение #10


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

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

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


Цитата(Kiass @ 26.05.2011 18:40) *
А можно было для тех кто в танке написать задачу от начала до конца
А тем, кто в танке - им ничего не надо. Главное - маршировать в ногу.

Этот форум не для тех, кто в танке. Он для тех, кто не хочет в танк. И кто готов сделать усилие вникнуть и пожертвовать своим драгоценным временем и постараться понять.

Говори, что конкретно неясно.

Добавлено через 5 мин.
Упс, только сейчас заметил, что пол поменялся.. Так что танк тебе не грозит )). Но подход остается прежним - либо ты проявляешь желание чему-то научиться, либо ты вряд ли найдешь поддержку здесь.


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





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

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


Спасибо, помогли. Дай бог вам здоровья.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.05.2011 7:59
Сообщение #12


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

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

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


Цитата(Kiass @ 27.05.2011 5:14) *
Дай бог вам здоровья.

А тебе - ума ).
Заходи, если будут серьезные виды на обучение (а не на спихивание заданий).


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


Знаток
****

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

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


и смысл идти учица на прогрмиста (ку) если небыло желания даже 2+2 научится складывать?
и буфером обмена пользоваться...
берешь первую часть добавляешь то что volvo дал и энды проставляешь скок нуна...


--------------------
Objective-C, Unity3d
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Kiass
сообщение 27.05.2011 14:18
Сообщение #14





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

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


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

Добавлено через 2 мин.
Вам лишь бы только всех пообсирать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.05.2011 23:20
Сообщение #15


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

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

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


Цитата(Kiass @ 27.05.2011 15:18) *
мне ума, а вам вежливости бы не помешало. На программиста никто и не собирался учиться. Без вас разберусь, высокомерные люди.

Добавлено через 2 мин.
Вам лишь бы только всех пообсирать.

"мне не помогли, когда я просила все за меня написать - значит, всех обсираете,"- так что ли? smile.gif

Вежливости, говоришь? А ты сказала спасибо за ответы тебе? хоть одно? (сарказм в конце не считается) А ты сказала "пожалуйста", когда спрашивала? хоть раз?

Kiass, дорогая, я с удовольствием тебе первый помогу научиться. Ну, хотя бы притворись, что тебя это интересует, в конце-то концов! Ну как можно приходить и говорить "мне это на фиг не нужно, вы мне напишите, я сдам и пойду"?.. Ну, сама посуди - оно нам надо? А потом еще все удивляются - почему это весь софт такой кривой и глючный? Да потому, что так вот "учатся"..

Ты загляни в другие темы. Тут с великим удовольствием помогают тем, кто хочет научиться. Ну или просто решить и не возвращаться - но сам (с помощью)! От этого тоже есть польза. Тем, кто приходит и говорит "напишите мне", я лично прямым текстом говорю: желаю тебе не сдать.

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

Последний раз тебе говорю: захочешь написать программу сама (с нашей помощью) и получить удовольствие - приходи, мы обязательно поможем.
Успехов тебе.


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





Группа: Пользователи
Сообщений: 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
Сообщение #17


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

Группа: Модераторы
Сообщений: 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
Сообщение #18





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

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


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

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


Знаток
****

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 

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

 



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