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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2012, 18:09   #1
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
Подмигивание

Подскажите пожалуйста. Как осуществляется вот такая задача:
Ввожу число в Edit от 0 до 99, после нажатия кнопки в мемо выводится сообщение "Я прочитал n книг". Как сделать, чтобы менялось окончание у слова "книг(у;и)".

Код:
case a of 
1..99: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книг';
То есть как мне определять, что в числе последняя цифра 1-книгу; 2,3,4-книги; 5,6,7,8,9,0-книг.

Заранее благодарен.

Так, какое-то просветление, но не получается.
Код:
a:=StrToInt(Edit1.Text);
n:=a div 10;
case n of 
1: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книгу';
2..4: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книги';
5..9,0: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книг';
Что не правильно?

Последний раз редактировалось Stilet; 24.10.2012 в 20:52.
Jeraldino74 вне форума Ответить с цитированием
Старый 24.10.2012, 18:27   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
n:=a div 10;
Может все-таки mod вместо div?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 24.10.2012, 18:27   #3
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Ну я всё) Стоило только прочитать про mod.

Код:
a:=StrToInt(Edit1.Text);
n:=a mod 10;
case n of 
1: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книгу';
2..4: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книги';
5..9,0: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книг';
Так всё работает.
Jeraldino74 вне форума Ответить с цитированием
Старый 24.10.2012, 18:29   #4
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Вместе написали сообщение. Допёрло до меня. Тебе спасибо, что отреагировал. А мне спасибо, что сам разобрался )))
Jeraldino74 вне форума Ответить с цитированием
Старый 24.10.2012, 18:48   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Интересно, что вы будете делать с числами второго десятка?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 25.10.2012, 09:22   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

рискну предложить и свой вариант, лишённый ограничений, на которые Вам намекают форумчане...

Код:
  a:=StrToInt(Edit1.Text);
  if a <= 0 then Memo1.Text:='Я прочитал 0 книг'
  else begin
    n := a mod 100;
    if (n >= 10) and (n <= 20) then Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книг';
    else
      case (a mod 10) of
        1: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книгу';
        2..4: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книги';
        5..9, 0: Memo1.Text:='Я прочитал ' + IntToStr(a)+ ' книг';
      end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2012, 12:38   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Сергей, можно было n задать от 11 до 19 - 10 и 20 попадают под другое условие. Но это не суть важно.

Кстати, совсем недавно (на той неделе) подобная задача была, только там вместо книг грибы считали... до чего ж ленивые студенты пошли...
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 25.10.2012, 12:55   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv, а вы думаете, я свой код писал? я же страшно ленивый! я взял старый пример с форума, чуток переделал (вместо WriteLn - Memo1.Text, вместо лет/год/года поставил "книг/книги/книгу" и вуаля, программа написана!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос замены цифры на символ Talier Microsoft Office Excel 2 24.09.2012 12:50
запрет на минус не вначале цифры в edit 13xXx13 Помощь студентам 2 21.09.2012 22:37
Цифры в Edit(delphi) CAMOBAP Помощь студентам 4 25.01.2011 22:17
Первый символ в Edit-e artemavd Общие вопросы Delphi 2 24.09.2009 21:35
Вывод ошибки при вводе цифры 1..5 в поле Edit prikolist Общие вопросы C/C++ 2 16.03.2009 00:22