Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
20 / 17 / 20
Регистрация: 25.01.2012
Сообщений: 66

Напечатать фразу: «Вам столько-то лет» с правильным окончанием

28.01.2012, 16:16. Показов 3064. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скачал учебник по паскалю наткнулся на такую задачу.
Пусть пользователь введет число – свой возраст в годах. Ваша программа
должна напечатать фразу: «Вам столько-то лет» с правильным окончанием,
например: «Вам 20 лет», или «Вам 34 года», или «Вам 41 год».
Вот как я её решил, но выдает ошибку "операнды имеют неприводимые типы".
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program Primer1;
 
var a: integer;
     b: integer;
 
begin
     writeln('Введите Ваш возраст');
     readln(a);
     b:=a mod 10;
     if a=11 or a=12 or a=13 or a=14 or a=15 or a=16 or a=17 or a=18 or a=19
        then writeln('Вам ',a,' лет');
     if b=1
        then writeln('Вам ',a,' год');
     if b=2 or b=3 or b=4
        then writeln('Вам ',a,' года');
     if b=5 or b=6 or b=7 or b=8 or b=9 or b=0
        then writeln ('Вам ',a,' лет');
end.
.Не знаю как выразить по другому, подскажите что не так. Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2012, 16:16
Ответы с готовыми решениями:

Программа запросит у пользователя его возраст и должна вывести "вам столько-то лет" с правильным окончанием
Программа запросит у пользователя его возраст и должна вывести "вам столько-то лет" с правильным окончанием.

Дано число к — возраст человека в годах. В соответствии с правилами русского языка напечатать на экране фразу: "Вам к лет"
Прошу меня заранее извинить за такую задачу, но у меня уже совсем мозги отказались работать ,раз уж я не могу сама такое решить. ...

Ввести свой возраст. Если возраст больше 18 лет, то напечатать фразу «ты- совершеннолетний», иначе напечатать – «до совершеннолетия осталось столько-т
Ввести свой возраст. Если возраст больше 18 лет, то напечатать фразу «ты- совершеннолетний», иначе напечатать – «до совершеннолетия...

25
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:32
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Много лишних действий.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
Program Primer1;
var a: integer;
b:real;
begin
writeln('Введите Ваш возраст');
readln(a);
b:=round(frac(a/10)*10);
if ((b>4) and (b<10)) 
or (b=0) 
or ((a>10) and (a<19)) then writeln('Вам ',a,' лет');
if b=1 then writeln('Вам ',a,' год');
if (b>1) and (b<5) then writeln('Вам ',a,' года');
end.
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
28.01.2012, 16:36
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Gorev Посмотреть сообщение
Много лишних действий
думаю у вас не меньше...
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
 k: integer;
begin
 readln(k);
 write('Вам ');
  case (k mod 10) of
   1: write(k, ' год');
   2..4: write(k, ' года');
   5..9, 0: write(k, ' лет');
  end;
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.01.2012, 16:38
Цитата Сообщение от s1lver Посмотреть сообщение
подскажите что не так.
Скобки нужно ставить если несколько условий
Pascal
1
 if (a=11) or (a=12) or (a=13) or (a=14) or (a=15) or (a=16) or (a=17) or (a=18) or (a=19)
хоть и тупость это. Для чисел от 0 до 255 проще писать
Pascal
1
if a in[11..19] then
0
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:38
думаю у вас не меньше...
Зато у меня правильней!!!
У вас не правильно пишет, при этом условии
if ((a>10) and (a<19)), так что я выиграл
1
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
28.01.2012, 16:40
Gorev, пропустил строку..
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var
 k: integer;
begin
 readln(k);
 write('Вам ');
  if k in [11..19] then write(k, ' лет') else
   case (k mod 10) of
    1: write(k, ' год');
    2..4: write(k, ' года');
    5..9, 0: write(k, ' лет');
   end;
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.01.2012, 16:41
Pascal
1
2
3
4
5
6
7
8
case k of
11..14:write('лет');
else case k mod 10 of
   1: write(k, ' год');
   2..4: write(k, ' года');
   5..9, 0: write(k, ' лет');
  end;
end;
0
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:41
Внимательней надо быть)
0
Mobile Software Engineer
Эксперт С++
 Аватар для Ev[G]eN
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
28.01.2012, 16:42
ну или как ув. Puporev
1
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:43
Кстати, по сжиранию памяти и времени, моя прога ни в чем не уступает.

Добавлено через 31 секунду
Я просто использовал ветвление, а вы другие методы.
1
28.01.2012, 16:45

Не по теме:

s1lver, Не скачивай больше ничего, а то подеремся...

1
28.01.2012, 16:46

Не по теме:

:rofl:

0
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:47
Ev[G]eN, Это вы мне?

Добавлено через 19 секунд
Точнее надо мной?
0
28.01.2012, 16:49

Не по теме:

Цитата Сообщение от Puporev Посмотреть сообщение
Не по теме:
s1lver, Не скачивай больше ничего, а то подеремся...
перечитайте внимательно сообщение Puporev'a и может поймете над чем :)

0
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:52
Ясн, просто я немного не так подумал))А как ставить "не по теме". Просто я тут раньше давно не бывал и забыл уже
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.01.2012, 16:54
Над окном сообщений кнопка OFF
0
28.01.2012, 16:55

Не по теме:

Ок)))

0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
28.01.2012, 18:36
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Как-то давно попалась подобная задачка, решил вот так)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a: integer;
b: string;
begin
writeln('Введите кол-во лет в диапазоне 1-150');
readln(a);
case a of
1,21,31,41,51,61,71,81,91,101,121,131,141: begin b:='год'; end;
2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104,122..124,132..134,142..144: begin b:='года'; end;
5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..100,105..120,125..130,135..140,145..150: begin b:='лет'; end;
else writeln('Error');
end;
if (a>0) and (a<151) then
writeln('Вам ',a,' ',b)
else
writeln('Ошибка! Число не входит в диапазон 1-150!');
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.01.2012, 18:43
Севак, Это одно из лучших решений этого дня...
1
 Аватар для Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 18:46
Цитата Сообщение от Puporev Посмотреть сообщение
Севак, Это одно из лучших решений этого дня...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.01.2012, 18:46
Помогаю со студенческими работами здесь

Для целого числа R (1…99) напечатать фразу « Мне R лет »
Для целого числа R (1…99) напечатать фразу « Мне R лет », при некоторых значениях R слово «лет» заменить словом «год» или «года».

Для целого числа напечатать фразу «Мне k лет»
если не в напряг помогите решить задачку Составьте прогу, которая для целого числа k (от 1 до 99), введенного вами, напечатает фразу...

Для целого числа k от 1 до 99 напечатать фразу: "мне k лет"
доброго часа. уже вконец сломав голову, прошу помощи в доработке задачи. условие: написать программу, которая для целого числа k...

При вводе числа в диапазоне от 0 до 50 программа должна выдать сообщение о количестве слоников(с правильным окончанием)
Составить программу &quot;считывающую&quot; слоников. При вводе числа в диапазоне от 0 до 50 программа должна выдать сообщение о количестве...

Напечатать фразу мне n лет
Дано целое число n (1 &lt;= n &lt;= 99), определяющее возраст человека в годах, для этого числа напечатать фразу мне n лет, учитывая при этом,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru