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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2014, 23:03   #1
Tonic1203
Новичок
Джуниор
 
Регистрация: 10.03.2014
Сообщений: 1
По умолчанию Выбрать из символьной строки только те слова,которые можно трактовать как год(например 1951 или 2004)

Ввести любое количество строк с предложениями .В качестве знаков препинания использовать только точки , запятые , восклицательные знаки. Для каждого предложения выполнить задание в соответствии с предложенным вариантом с использованием подпрограмм.В программе предусмотреть варианты отсутствия данных ,удовлетворяющих условию задачи .вывести на экран исходные строки и результат.
-Определить тип подпрограммы решения варианта.

13)Выбрать из символьной строки только те слова,которые можно трактовать как год(например 1951 или 2004).

Помогите,пожалуйста)Очень надо.
Tonic1203 вне форума Ответить с цитированием
Старый 09.04.2014, 23:30   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,602
По умолчанию

Запускаете поиск по форуму с фразой "разбить текст на слова". Или нечто подобное. Получите несколько решений, выберете нужное вам.
Далее сделаете анализ полученных слов, например:
Код:
IsYear:=true;
For i:=1 to length(s) do
  If not (s[i] in ['0'..'9']) then // не цифра (надо проверить правильность написания)
     Begin
         IsYear:=false;
         Break;
     End;
Так вы определите строку, состоящую только из цифр. Дальнейшие проверки:
Строка начинается с 0 или состоит из 0 - отбросить.
Это самый простой случай. Если год пишется в формате 1094 до н.э., 1099 AD, то понадобятся дополнительные проверки.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 10.04.2014, 07:26   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Не проверял..
Код:
var
	a : array [1..100] of string;
	wrd : string;
	n, i, j, k : Integer;
	f, f2 : Boolean;
begin
	ReadLn(n);
	f := FALSE;
	
	for j := 1 to n do begin
		ReadLn(a[j]);
		if f then Continue;
		a[j] := a[j] + ' ';
		wrd := '';
		
		for i := 1 to Length(a[j]) do begin
			if a[j][i] in ['!', ' ', ',', '.'] then begin
				k := 1;
				while (k <= Length(wrd)) and (wrd[k] in ['0'..'9']) do Inc(k);
				
				if k = Length(wrd)+1 then begin
					f := TRUE; Break end;
				wrd := ''
			end
			else
			        wrd := wrd+a[j][i]
		end
	end;
	
	for i := 1 to n do
		WriteLn(a[i]);
		
		
	if f then
		WriteLn(wrd)
	else
		WriteLn('Печалька :(')
end.
Poma][a вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в ряду символов определить слова, которые могут быть получены разворотом другого слова этой строки (Паскаль) Mr. J. Паскаль, Turbo Pascal, PascalABC.NET 9 06.04.2014 08:15
Найти слова, которые встречаются в тексте только 1 раз akademochka Помощь студентам 1 05.10.2012 12:40
datetimepicker выбрать только год Lokos Общие вопросы Delphi 3 22.06.2010 10:27
Из заданной символьной строки, выбрать те символы, которые встречаются в ней только один раз... Banny Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 06:15