|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
26.11.2011, 02:33 | #1 (permalink) |
Новичок
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Строковой тип, Pascal
Пользователь вводит предложение, которое помимо слов содержит целые числа, принадлежащие диапазону от 1 до 500. Известно, что последнее число во введенном предложении – это количество дней. Найти данное число и перевести его к виду недели/дни. Заменить найденное число в исходной строке на выражение вида ’HH недель MM дней’ с учетом корректных окончаний выводимых по-русски слов. Например, было ’прошло 22 после’, стало ’прошло 3 недели 1 день после’. Составить программу, которая выделяет отдельные слова и числа из введенной пользователем строки. Словом считается последовательность букв, разделяемых одним или несколькими пробелами или знаками препинания. Числом считается последовательность цифр, разделяемых одним или несколькими пробелами, которая может включать точку в качестве разделителя целой и дробной части и знак минус, стоящий в начале. Слова поместить в массив слов, числа поместить массив чисел. Найти в массивах самое длинное слово и минимальное число. Вывести на экран слова в столбик. Например, если исходная строка ’Длина пути равна 1 метр.’, то на экран будет выведено: Д п р м л у а е и т в т н и н р а а а |
26.11.2011, 02:33 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно, ваш вопрос уже получил решение на форуме Pascal Pascal |
26.11.2011, 20:06 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Const Nmb=['0','1','2','3','4','5','6','7','8','9']; Var S,Sn,Days,Week,Day:String; i,W,D,mW,mN:Byte; Code:Integer; N:Word; BEGIN Writeln('Enter the string:'); Readln(S); i:=0; REPEAT Repeat Inc(i); Until (S[i] in Nmb) or (i=Length(S)); If i<Length(S) then begin Sn:=''; Dec(i); repeat Inc(i); If (S[i] in Nmb) then Sn:=Sn+S[i]; until (Not(S[i] in Nmb)) or (i=Length(S)); If i<Length(S) then Dec(i); end; UNTIL i=Length(S); VAL(Sn,N,Code); W:=N div 7; D:=N mod 7; mW:=W mod 10; mN:=N mod 10; If (N>4) and (N<21) then Days:='дней' else Case mN of 0,5,6,7,8,9: Days:='дней'; 1 : Days:='день'; else Days:='дня'; end; If (W>4) and (W<21) then Week:='недель' else Case mW of 0,5,6,7,8,9: Week:='недель'; 1 : Week:='неделя'; else Week:='недели'; end; Case D of 0,5,6: Day:='дней'; 1 : Day:='день'; 2,3,4: Day:='дня'; end; Writeln(N,' '+Days+' или ',W,' '+Week+' и ',D,' '+Day); Readln END. |
|
26.11.2011, 20:39 | #4 (permalink) |
Новичок
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо. Придется еще разбираться...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|