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

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

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

 
 Ответить  Открыть новую тему 
> строка
chel09
сообщение 6.01.2010 11:22
Сообщение #1





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

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


какая функция используется для нахождения буквы в последнем слове строки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 6.01.2010 11:35
Сообщение #2


Гуру
*****

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

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


Сначала нужно разбить строку на слова
Разбиение на слова. Все способы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
chel09
сообщение 6.01.2010 11:54
Сообщение #3





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

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


разбил

function GetWords(s: string; var L: TWordList; delimiters: TDelimiter): Byte;
var i, p: Byte;
begin
	for i := 1 to Length(s) do
		if s[i] In delimiters then s[i] := #32;

далее что?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.01.2010 12:54
Сообщение #4


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

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

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


Я думаю, что речь идет о функции Pos . Хотя вопрос поставлен так, что может быть, что угодно..


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





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

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


Цитата(Lapp @ 6.01.2010 12:54) *

Я думаю, что речь идет о функции Pos . Хотя вопрос поставлен так, что может быть, что угодно..


задача вообще такова
Дана строка символов. Найти в данной строке последнее слово, начинающееся с
латинской буквы ‘a’.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 6.01.2010 13:20
Сообщение #6


Гуру
*****

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

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


Цитата(chel09 @ 6.01.2010 13:07) *

задача вообще такова
Дана строка символов. Найти в данной строке последнее слово, начинающееся с
латинской буквы ‘a’.

Вариант 1: бежать по строке из начала в конец и запоминать последнее вхождение двухсимвольной последовательности ' a'.
Вариант 2: бежать по строке из конца в начало до того, как встретим первое вхождение ' a'.
Примечание: если результат не найден, проверить, не начинается ли первое слово с 'a', если да - оно и есть искомое.
Примечание 2: можно сначала добавить в начало пробел и не делать в конце никаких проверок.
Т.е. уже, как минимум, 4 варианта решения - даже не разбивая строку на отдельные слова.

Сообщение отредактировано: andriano - 6.01.2010 13:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
chel09
сообщение 6.01.2010 13:23
Сообщение #7





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

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


Цитата(andriano @ 6.01.2010 13:20) *

Вариант 1: бежать по строке из начала в конец и запоминать последнее вхождение двухсимвольной последовательности ' a'.
Вариант 2: бежать по строке из конца в начало до того, как встретим первое вхождение ' a'.
Примечание: если результат не найден, проверить, не начинается ли первое слово с 'a', если да - оно и есть искомое.


блин если бы я тебя ещё понел а так я вообще в этом несоображаю ты лучше бы пример привел
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 6.01.2010 14:14
Сообщение #8


Гуру
*****

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

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


Цитата(chel09 @ 6.01.2010 13:23) *

блин если бы я тебя ещё понел а так я вообще в этом несоображаю ты лучше бы пример привел

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


Гость






Цитата
Вариант 1: бежать по строке из начала в конец и запоминать последнее вхождение двухсимвольной последовательности ' a'.
Вариант 2: бежать по строке из конца в начало до того, как встретим первое вхождение ' a'.
Это все сработает только при условии, что слова разделяются пробелами и ничем больше, никаких знаков препинания. Если со знаками препинания (пример - 'xor,or,and,not operators') - то в этот алгоритм придется добавить еще один пункт...

 К началу страницы 
+ Ответить 
chel09
сообщение 6.01.2010 14:44
Сообщение #10





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

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


Цитата(andriano @ 6.01.2010 14:14) *

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


короче я сделал то что посоветовали ранее разбил строку на слова
А как букву найти незнаю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 6.01.2010 16:09
Сообщение #11


Гуру
*****

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

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


Цитата(volvo @ 6.01.2010 14:16) *

Это все сработает только при условии, что слова разделяются пробелами и ничем больше, никаких знаков препинания. Если со знаками препинания (пример - 'xor,or,and,not operators') - то в этот алгоритм придется добавить еще один пункт...
Это было бы существенно, если бы речь шла о чем-то в конце слова.
В правильно записанном предложении после каждого разделителя следует пробел (номер ГОСТа не помню, но при желании можно посмотреть). Поэтому перед началом слова (кроме первого) всегда присутствует пробел.


Добавлено через 4 мин.
Цитата(chel09 @ 6.01.2010 14:44) *

короче я сделал то что посоветовали ранее разбил строку на слова
А как букву найти незнаю

"не" и "знаю" пишется раздельно. Аккуратность нужна, каким бы языком: русским или Паскалем, ты ни выражал свои мысли.

Ладно. Первый этап задачи - разбить строку на отдельные слова, у тебя сделан. Теперь перед тобой лист бумаги, на котором в столбик записаны слова. Нужно решить задачу (самому, без компьютера). Опиши подробно, как ты будешь это делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.01.2010 16:22
Сообщение #12


Гость






Цитата
В правильно записанном предложении после каждого разделителя следует пробел (номер ГОСТа не помню, но при желании можно посмотреть). Поэтому перед началом слова (кроме первого) всегда присутствует пробел.
Плевать я хотел на "правильность по ГОСТу", я живу в другой стране, и пишу на ИНОСТРАННОМ языке, латиницей, между прочим. Это раз. А два - где-то в первом или последующих постах было сказано, что "дано предложение, соответствующее ГОСТу №..."? Не было. Не надо додумывать задачу, договорились? Как хочу, так и ввожу. Я - пользователь программы, и не надо мне ставить условия "Введи строку согласно ГОСТу". Задача программиста - сделать так, чтобы ЛЮБОЙ мой ввод был обработан корректно. Если что, я могу ввести и 255 символов, и обломаешься ты добавить первый пробел... Это так, на всякий случай.
 К началу страницы 
+ Ответить 
andriano
сообщение 6.01.2010 17:02
Сообщение #13


Гуру
*****

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

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


Цитата(volvo @ 6.01.2010 16:22) *
Задача программиста - сделать так, чтобы ЛЮБОЙ мой ввод был обработан корректно.
Это задача невыполнима.
От программы можно лишь требовать, чтобы:
1. Любой корректный ввод был корректно обработан.
2. Любой некорректный ввод был обработан.
Во втором случае, естественно, возможно два варианта:
2а. При обработке некорректного ввода пользователю выдается сообщение о некорректности.
2б. Некорректный ввод обрабатывается "как получится".
Но гарантировать ВЕРНЫЙ ответ при НЕВЕРНЫХ исходных данных принципиально невозможно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 7.01.2010 2:54
Сообщение #14


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

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

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


Цитата(chel09 @ 6.01.2010 14:44) *
короче я сделал то что посоветовали ранее разбил строку на слова
А как букву найти незнаю
попробуй как-то так (без русских букв):
const
  Letters: set of char=['A'..'Z']+['a'..'z'];
...
  i:=Length(s);
  w:='';
  while (i>0)and(w='') do
    if s[i]='a' then if (i=1)or not(s[i-1] in Letters) then
      while (i<=Length(s))and(s[i] in Letters) do begin
        w:=w+s[i];
        Inc(i)
      end
    else Dec(i);


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

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

 

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