Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 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
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно, ваш вопрос уже получил решение на форуме

Pascal
Pascal

Старый 26.11.2011, 19:21   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Сейчас попробую первую поковырять. Со второй - не знаю: уж очень много возни.
Vladimir_S вне форума   Ответить с цитированием
Старый 26.11.2011, 20:06   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Сова Посмотреть сообщение
Пользователь вводит предложение, которое помимо слов содержит целые числа, принадлежащие диапазону от 1 до 500. Известно, что последнее число во введенном предложении – это количество дней. Найти данное число и перевести его к виду недели/дни. Заменить найденное число в исходной строке на выражение вида ’HH недель MM дней’ с учетом корректных окончаний выводимых по-русски слов. Например, было ’прошло 22 после’, стало ’прошло 3 недели 1 день после’.
Вот, ловите:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 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
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:06.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.