Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 15:22   #1
eduard.80@mail.ru
Пользователь
 
Регистрация: 12.12.2011
Сообщений: 15
По умолчанию ТурбоПаскаль. Выделение чисел из слов.

Задача такова:
Составить программу, которая будет выводить числа с которых начинается слово. 23февраля = 23, фвраля23=0.
Написал следующее:
function f:string;
begin
for i:=1 to length(s) do
if (s[i] in ['0'..'9']) or (s[i]=' ') then
s1:=s1+s[i]

end;

Проблема: для одного слова она прокатит 23февраля=23, но она также будет выводить все цифры, которые встречаются в словах, если вводить предложение(23фев апр5 5 выо5смв=23 5 5 5), а это не есть гут(((
Подскажите пожалуйста алгоритм действий для предложения.
eduard.80@mail.ru вне форума Ответить с цитированием
Старый 14.12.2011, 15:36   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Есть оператор Break, что бы принудительно завершить цикл.
По вашему решению есть замечания. Если вы хотите вынести решение в отдельную функцию, то переменная i должна быть локальной в этой функции, а s передаваться как параметр.
Arigato вне форума Ответить с цитированием
Старый 14.12.2011, 15:41   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я бы предложил Вам такой подход.

Взять любой подходящий Вам алгоритм, который выделяет из строки слова (разделителем может быть пробел, а может быть и любой знак пунктуации).
Таких алгоритмов на форуме полно (да и самому написать несложно).

после получения выделенного слова (пусть это будет строковая переменная W) выделить цифры в начале слова.
например, так:
Код:
var
   W : string
   i, kErr, NN : integer;
...

   ... выделили очередное слово в строке ...
   i:=1;
   while (i<=Length(W)) and (W[i] in ['0'..'9'] do Inc(i);
   if i>1 then begin  {значит есть цифры в начале слова и их ровно i-1}
      Val(Copy(W,1,i-1), NN, kErr );
      if kErr=0 then WriteLn(' в слове ',W, ' в начале строки целое число ',NN);
   end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2011, 16:07   #4
eduard.80@mail.ru
Пользователь
 
Регистрация: 12.12.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
переменная i должна быть локальной в этой функции, а s передаваться как параметр.
А вот здесь если можно поподробнее, а то по книгам чего то не доходит(((
Тоесть мне записать (function f(i:byte,???):string; как записать s как параметр?
И ещё потом в программе ставлю f;, а он меня материть начинае всякими ошибками.
Как енту функцию описывать потом в программе? По идее я должен записать то, что вычисляет функция, примерно так f(i,s,s1) - всёравно материт((
В общем одни вопросы, второй день голову ламаю.
И подскажите пожалуйста книженцию по турбопаскаль с изложением понятным простому смертному, а не: функция Pos возвращает курсор в позицию...бла,бла,бла, пока я понял что такое возвращает три часа прошло((( (извините за офтоп)
eduard.80@mail.ru вне форума Ответить с цитированием
Старый 14.12.2011, 16:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
функция Pos возвращает курсор в позицию...бла,бла,бла, пока я понял что такое возвращает три часа прошло((( (извините за офтоп)
мда... функция Pos ищет позицию подстроки в строке и возвращает, соответственно индекс вхождения одной подстроки в строку или ноль, если ничего не нашла.. К курсору и его позиции эта функция отношения не имеет...
Извините за оффтоп..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2011, 18:21   #6
eduard.80@mail.ru
Пользователь
 
Регистрация: 12.12.2011
Сообщений: 15
По умолчанию

спасибо всем, разобрался)))
eduard.80@mail.ru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение зарезервированых слов в редакторе текста PVD Компоненты Delphi 5 02.02.2010 17:11
RichEdit - Выделение цветом слов fakir9999 Компоненты Delphi 3 15.06.2009 15:39
RichEdit - Выделение цветом слов fakir9999 Помощь студентам 11 29.05.2009 09:30
Выделение слов цветом в Memo Костян Пират Общие вопросы Delphi 9 05.03.2009 08:52
Выделение слов из строки // Pascal Rifler Паскаль, Turbo Pascal, PascalABC.NET 4 02.07.2008 08:22