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

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

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

 
 Ответить  Открыть новую тему 
> Обработка символьных данных и строк
сообщение
Сообщение #1





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

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


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


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

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

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


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



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

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


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


Знаток
****

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


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


Знаток
****

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

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


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

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

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


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


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

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


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


Знаток
****

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

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


sorry my bad english smile.gif


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


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

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

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


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


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





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

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


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


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

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


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

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

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


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

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

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

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


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





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

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


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


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

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

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


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

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


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


Знаток
****

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

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


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


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





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

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


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

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


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

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

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


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

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

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

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

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

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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18





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

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


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

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


Знаток
****

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

Репутация: -  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

 





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