Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
s1lver
20 / 17 / 20
Регистрация: 25.01.2012
Сообщений: 66
1

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

28.01.2012, 16:16. Просмотров 1407. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2012, 16:16
Ответы с готовыми решениями:

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

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

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

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

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

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

Решение

Много лишних действий.
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
Ev[G]eN
iOS/Android Developer
Эксперт С++
5117 / 1555 / 950
Регистрация: 23.01.2011
Сообщений: 3,185
Завершенные тесты: 1
28.01.2012, 16:36 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от 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
Модератор
54686 / 42104 / 29072
Регистрация: 18.05.2008
Сообщений: 99,362
28.01.2012, 16:38 4
Цитата Сообщение от 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 5
думаю у вас не меньше...
Зато у меня правильней!!!
У вас не правильно пишет, при этом условии
if ((a>10) and (a<19)), так что я выиграл
1
Ev[G]eN
iOS/Android Developer
Эксперт С++
5117 / 1555 / 950
Регистрация: 23.01.2011
Сообщений: 3,185
Завершенные тесты: 1
28.01.2012, 16:40 6
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
Модератор
54686 / 42104 / 29072
Регистрация: 18.05.2008
Сообщений: 99,362
28.01.2012, 16:41 7
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 8
Внимательней надо быть)
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5117 / 1555 / 950
Регистрация: 23.01.2011
Сообщений: 3,185
Завершенные тесты: 1
28.01.2012, 16:42 9
ну или как ув. Puporev
1
Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:43 10
Кстати, по сжиранию памяти и времени, моя прога ни в чем не уступает.

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

Не по теме:

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

1
Ev[G]eN
28.01.2012, 16:46
  #12

Не по теме:

:rofl:

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

Добавлено через 19 секунд
Точнее надо мной?
0
Ev[G]eN
28.01.2012, 16:49
  #14

Не по теме:

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

0
Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 16:52 15
Ясн, просто я немного не так подумал))А как ставить "не по теме". Просто я тут раньше давно не бывал и забыл уже
0
Puporev
Модератор
54686 / 42104 / 29072
Регистрация: 18.05.2008
Сообщений: 99,362
28.01.2012, 16:54 16
Над окном сообщений кнопка OFF
0
Gorev
28.01.2012, 16:55
  #17

Не по теме:

Ок)))

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

Решение

Как-то давно попалась подобная задачка, решил вот так)
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
Модератор
54686 / 42104 / 29072
Регистрация: 18.05.2008
Сообщений: 99,362
28.01.2012, 18:43 19
Севак, Это одно из лучших решений этого дня...
1
Gorev
135 / 132 / 30
Регистрация: 08.12.2009
Сообщений: 565
Записей в блоге: 3
28.01.2012, 18:46 20
Цитата Сообщение от Puporev Посмотреть сообщение
Севак, Это одно из лучших решений этого дня...
0
28.01.2012, 18:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 18:46

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

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

Перечислимые и интервальные типы: программа печатающая для целого от 1 до 99 фразу: мне ,,, лет
Задание: Составить программу печатающую для целого числа k от 1 до 99 фразу:...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru