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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 19:14   #1
Bonio
 
Регистрация: 27.02.2010
Сообщений: 3
По умолчанию Окончание слова, в зависимости от числа.

Есть число n, надо вывести фразу "мы выпили n бутылок пива", согласовав окончание слова "бутылка" с числом n.
Например: мы выпили 1 бутылку пива, мы выпили 2 бутылки пива, мы выпили 18 бутылок пива, мы выпили 31 бутылку пива, и т.д.
Как такое реализовать?
Bonio вне форума Ответить с цитированием
Старый 27.02.2010, 19:29   #2
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Ну смотри, окончание в нашем языке определяется по последней цифре, т.е. что 8 бутылок, что 18 бутылок, что 108 бутылок и т.д.
Определяешь последнюю цифру числа и по ней выбираешь окончание... Вот так это можно реализовать в консоли:

Код:
var
buf: string;
n: integer;
begin
write('Мы выпили ', n, 'бутыл');
buf:=inttostr(n);
case buf[length(buf)] of
'0','5','6','7','8','9': write('ок');
'1': write('ку');
'2','3','4': write('ки');
end;
writeln(' пива.');
readln;
end;
Помогли тебе - помоги другому.

Последний раз редактировалось Alt; 27.02.2010 в 19:35. Причина: добавлен код
Alt вне форума Ответить с цитированием
Старый 27.02.2010, 19:33   #3
Bonio
 
Регистрация: 27.02.2010
Сообщений: 3
По умолчанию

А можно примерчик, в delphi я не силён.
Bonio вне форума Ответить с цитированием
Старый 27.02.2010, 19:35   #4
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Length(Edit1.Text) = 1) or (Edit1.Text[Length(Edit1.Text)-1] <> '1') then begin
    case Edit1.Text[Length(Edit1.Text)] of
      '1' : Label1.Caption := Edit1.Text+' бутылка';
      '2'..'4' : Label1.Caption := Edit1.Text+' бутылки';
      else
        Label1.Caption := Edit1.Text+' бутылок';
    end;
  end else
    Label1.Caption := Edit1.Text+' бутылок';
end;
Karabash вне форума Ответить с цитированием
Старый 27.02.2010, 19:40   #5
Bonio
 
Регистрация: 27.02.2010
Сообщений: 3
По умолчанию

Благодарю вас за помощь. Разобрался
Bonio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат числа в зависимости от погрешности sumoru SQL, базы данных 2 14.12.2009 12:26
[Delphi] Правильное окончание слова Derol Помощь студентам 2 01.06.2009 07:50
Окрашивание текста в зависимости от длинны слова(подскажите как) LAZER Помощь студентам 15 10.05.2009 20:59
Вывод данных в зависимости от числа sklins Помощь студентам 4 11.03.2008 21:56
Консолидация в зависимости от числа месяца Smile E Microsoft Office Excel 6 11.09.2007 21:24