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

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

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

 
 Ответить  Открыть новую тему 
> задача со строками
Subaru
сообщение 2.11.2004 18:22
Сообщение #1





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

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


есть строка :'I I I LIVE IN THIS THIS WORLD'
надо чтоб она удалила не-нужные слова (чтоб вышло 'I LIVE IN THIS WORLD')
я не понемаю как проверить есть ли там два одинакового слова один за одним... sad.gif
помогите... rolleyes.gif


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 2.11.2004 18:30
Сообщение #2


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Раздели строку на слова, а потом как в массиве - сравнивай соседние элементы.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 2.11.2004 18:35
Сообщение #3


-
****

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

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


Подсказка: чтоб разделять на слова надо искать пробелы smile.gif


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Subaru
сообщение 2.11.2004 18:39
Сообщение #4





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

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


huh.gif нифига не понел blink.gif


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 2.11.2004 18:40
Сообщение #5


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Что именно не понял?

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


P.S.: Для "не авторов" топика - не спешите выкладывать сразу готовое решение. Давайте человека попытаемся "научить", а не пользоваться "халявой"... ИМХО.

Сообщение отредактировано: APAL - 2.11.2004 18:46


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Subaru
сообщение 2.11.2004 19:02
Сообщение #6





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

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


я не понял как Разделить строку на слова..
это типа первое слово внести и потом enter нажать чтоб второе написать и т.д ? или как ?

Сообщение отредактировано: Subaru - 2.11.2004 19:03


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 2.11.2004 19:56
Сообщение #7


Гость






Нет. Строка (по условию) у тебя уже задана. Тебе ее надо програмно обработать, т.е. разобрать по словам.
Например завести массив, наподобие m : array[1..20] of String[10]
Занести в него слова, а потом и сравнивать элементы массива.



P.S.: Массив на слова - это конечно не оптимально - но зато более наглядно и понятно.
 К началу страницы 
+ Ответить 
APAL
сообщение 2.11.2004 19:57
Сообщение #8


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Какой-то глюк. Предыдущее сообщение - мое.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
P@sh@
сообщение 3.11.2004 12:22
Сообщение #9


Бывалый
***

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

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


а не проще ли безо всяких массивов просто запоминать последнее встреченное слово и сравнивать его с текущим при сканировании строки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 3.11.2004 12:38
Сообщение #10


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Я же говорил:
Цитата
P.S.: Массив на слова - это конечно не оптимально - но зато более наглядно и понятно.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Subaru
сообщение 3.11.2004 22:37
Сообщение #11





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

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


спасибо что всем помогаите но только мне нет.. sad.gif sad.gif
ладно..
буду знать что тут только мне не помогают и больше не приду спрашивать..
большое спасибо !
sad.gif sad.gif sad.gif


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Digitalator
сообщение 3.11.2004 22:44
Сообщение #12


Бывалый
***

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

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


Тебе сказали все что требуется, для того чтобы написать программу к задаче.
От тебя требуются только начальные знания языка! Если что-то не понятно, задавай конкретные вопросы, а не типа "а как сделать?".


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Subaru
сообщение 3.11.2004 23:01
Сообщение #13





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

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


Подойдет ли такое решение этой задачи:

Код

Program I_Live;
Const
 s: String = 'I I I live in this this world world';

Var
 iNext, iPrev: Byte;
 sNext, sPrev: String;
 one_more: Boolean;
Begin
 s := s + ' ';
 one_more := True;

 iPrev := Pos(' ', s);
 sPrev := Copy(s, 1, Pred(iPrev));
 While one_more Do
   Begin
     Repeat
       iNext := Pos(' ', Copy(s, Succ(iPrev), Length(s) - iPrev)) + iPrev;
       one_more := (iNext <> iPrev);
       If not one_more Then Break;

       sNext := Copy(s, Succ(iPrev), Pred(iNext - iPrev));
       If sPrev = sNext Then
         delete(s, iPrev, iNext - iPrev)
     Until sNext <> sPrev;
     sPrev := sNext; iPrev := iNext
   End;

 s[0] := Chr(Pred(Length(s)));
 WriteLn( 's = ', s );
End.


или ее нужно делать как-нибудь по-другому ?

Сообщение отредактировано: Subaru - 3.11.2004 23:50


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Digitalator
сообщение 3.11.2004 23:35
Сообщение #14


Бывалый
***

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

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


эта прога неправильно работает, когда одинаковы два последних слова, например "I live in this world world"

Исправь ошибку и будет ок.


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Subaru
сообщение 3.11.2004 23:50
Сообщение #15





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

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


Исправил... А теперь ?


--------------------
What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 4.11.2004 9:08
Сообщение #16


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Цитата
эта прога неправильно работает, когда одинаковы два последних слова, например "I live in this world world"

эээ... тот код, что представлен выше работает... Или Subaru его отредактировал?

Замечание:
Можно программу еще модернизировать.
В условии не сказанно, что слова разделяются одним пробелом.
Если в строке между словами встретится 2 и более пробелов, то не все лишние слова удалятся.
Это желательно исправить...
что бы не исправлять основной алгоритм, можно перед удалением лишних слов, удалить лишние пробелы...
И еще желательно слелать программу более универсальной - вместо константы строки, лучше вводить ее во время работы программы. Тогда ее можнобудет скомпилировать в загрузочный модуль (EXE) и использовать как полнофункциональную программу.
(кстати такая программа может пригодится при удалении лишних строк из файла.)
Замечание 2
Паскали разные бывают .... smile.gif
такая строка:
Код
s[0] := Chr(Pred(Length(s)));

Будет ошибкой при компилировании в FPC (free pascal)

ЗЫ:
мое первое сообщение тоже было про строки smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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