Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
1

Вывести возраст прописью

28.11.2011, 16:32. Показов 2897. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите решить задачку,вот условие заранее спасибо

Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное со- гласование числа со словом «год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год».
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 16:32
Ответы с готовыми решениями:

Вывести возраст прописью
Дано натуральное число N (100 ≤ N), определяющее возраст человека (в годах). Дать для этого числа...

Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью
Приветствую форумчан, прошу момочь с задачей : Сложить две денежные суммы в рублях и копейках,...

Вывести оценку прописью
Всем привет! Задачка такая - вводим с клавиатуры оценку, он нам пишет ее текстово, т.е. если ввели...

Вывести число прописью
Ввести чотиризначне число, вивести його текстом на екран(5243 – пять тисяч двісті сорок три)

15
bigredcat
28.11.2011, 16:42
  #2

Не по теме:

попутал.

0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:00 3
А при чём тут case? Или 49 кейсов писать? .)
0
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:02  [ТС] 4
ну я незнаю просто у нас тема case switch ,и такая задача,помогите пожалуйста)
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:04 5
C++
1
2
3
4
5
6
7
switch( age )
{
     case 20: cout << age << " лет"; break;
     case 21: cout << age << " год"; break;
     ...
     case 69: cout << age << " лет"; break;
}
1
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:06  [ТС] 6
ну если так подумать ,то и правда что-то слишком много будет,а какой нибудь еще способ возможен?
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:08 7
Возможен.
1
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:12  [ТС] 8
и какой же?) если не затруднит)
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:24 9
ифами по диапазонам, например.
1
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.11.2011, 09:04 10
Ну, если подумать, то 49 кейсов совсем даже не нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch (age % 10)
{
case 1:
    cout << age << " год";
    break;
case 2:
case 3:
case 4:
    cout << age << " года";
    break;
default:
    cout << age << " лет";
    break;
}
Добавлено через 33 минуты
Но вопрос стоял еще и о выводе прописью числа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void PrintAge(int age)
{
    string s0[] =
    {
        "один",
        "два",
        "три",
        "четыре",
        "пять",
        "шесть",
        "семь",
        "восемь",
        "девять"
    };
 
    string s1[] =
    {
        "двадцать",
        "тридцать",
        "сорок",
        "пятьдесят",
        "шестьдесят"
    };
 
    int a0 = age % 10; // количество единиц
    int a1 = age / 10; // количество десятков
 
    // -1  -  поправка индекса для s0, т.к. начинается с одного.
    // -2  -  поправка индекса для s1, т.к. начинается с двадцати.
    switch (a0)
    {
    case 0:
        cout << s1[a1 - 2] << " лет";
        break;
    case 1:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " год";
        break;
    case 2:
    case 3:
    case 4:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " года";
        break;
    default:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " лет";
        break;
    }
}
2
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
29.11.2011, 11:24  [ТС] 11
bigredcat спасибо,выложи пожалуйста полностью всю рабочую задачу вторую с прописными числами
а то пытался запустить ,у нас Visual studio 2008 и выходят ошибки
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib asdfasdf
Error 2 fatal error LNK1120: 1 unresolved externals 1 asdfasdf
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.11.2011, 15:42 12
srtonger, что ж вы так, инструмент свой нужно знать. Вам практически готовый код дали (пять строк осталось добавить), а вы его скомпилировать не можете.
Насчет кодировки как у вас получится - уж не знаю.
Вложения
Тип файла: 7z age.7z (415.9 Кб, 23 просмотров)
1
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
12.12.2011, 17:45 13
srtonger, здесь спрашивай.

Текст
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <string>
#include <iostream>
 
using namespace std;
 
void PrintAge(int age)
{
    string s0[] =
    {
        "один",
        "два",
        "три",
        "четыре",
        "пять",
        "шесть",
        "семь",
        "восемь",
        "девять"
    };
 
    string s1[] =
    {
        "двадцать",
        "тридцать",
        "сорок",
        "пятьдесят",
        "шестьдесят"
    };
 
    int a0 = age % 10; // количество единиц
    int a1 = age / 10; // количество десятков
 
    // -1  -  поправка индекса для s0, т.к. начинается с одного.
    // -2  -  поправка индекса для s1, т.к. начинается с двадцати.
    switch (a0)
    {
    case 0:
        cout << s1[a1 - 2] << " лет";
        break;
    case 1:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " год";
        break;
    case 2:
    case 3:
    case 4:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " года";
        break;
    default:
        cout << s1[a1 - 2] << " " << s0[a0 - 1] << " лет";
        break;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int age = 0;
    do
    {
        cout << "Введите возраст (от 20 до 69): ";
        cin >> age;
        if (cin.fail())
        {
            cin.clear();
            char c;
            cin >> c;
        }
        if (19 < age && age < 70)
        {
            system("CLS");
            cout << age << " ";
            PrintAge(age);
            cout << endl << endl;
        }
    }
    while (19 < age && age < 70);
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
12.12.2011, 20:12  [ТС] 14
А ну вот спасибо,но все равно она почему то не работает...ошибки находит
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
13.12.2011, 06:57 15
Какие ошибки? В проекте из сообщения #12 замените содержимое функции main на то, что в сообщении #13
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
13.12.2011, 08:51 16
https://www.cyberforum.ru/post2065762.html
0
13.12.2011, 08:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2011, 08:51
Помогаю со студенческими работами здесь

Вывести число прописью
Задание преобразовать числа в слова, чтобы если пользователь вводит число 10 - то выводилось &quot;Numx...

Вывести число прописью
Я бы тоже внес свою лепту в форумский FAQ. Есть у меня программа которая конвертирует число от 1 до...

Вывести число прописью
С клавиатуры вводится натуральное число, не превосходящее 1000. Представить его в виде...

Вывести оценку прописью
К количество баллов полученных студентом на экзамене. Выведите эту оценку словам: 1 плохо .........


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru