Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
srtonger
 Аватар для srtonger
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 16:32     Вывести возраст прописью #1
Помогите решить задачку,вот условие заранее спасибо

Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное со- гласование числа со словом «год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год».
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bigredcat
28.11.2011, 16:42
  #2

Не по теме:

попутал.

Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:00     Вывести возраст прописью #3
А при чём тут case? Или 49 кейсов писать? .)
srtonger
 Аватар для srtonger
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:02  [ТС]     Вывести возраст прописью #4
ну я незнаю просто у нас тема case switch ,и такая задача,помогите пожалуйста)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 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;
}
srtonger
 Аватар для srtonger
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:06  [ТС]     Вывести возраст прописью #6
ну если так подумать ,то и правда что-то слишком много будет,а какой нибудь еще способ возможен?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:08     Вывести возраст прописью #7
Возможен.
srtonger
 Аватар для srtonger
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
28.11.2011, 17:12  [ТС]     Вывести возраст прописью #8
и какой же?) если не затруднит)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.11.2011, 17:24     Вывести возраст прописью #9
ифами по диапазонам, например.
bigredcat
364 / 311 / 3
Регистрация: 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;
    }
}
srtonger
 Аватар для srtonger
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
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.11.2011, 15:42     Вывести возраст прописью #12
srtonger, что ж вы так, инструмент свой нужно знать. Вам практически готовый код дали (пять строк осталось добавить), а вы его скомпилировать не можете.
Насчет кодировки как у вас получится - уж не знаю.
Вложения
Тип файла: 7z age.7z (415.9 Кб, 15 просмотров)
bigredcat
364 / 311 / 3
Регистрация: 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;
}
srtonger
 Аватар для srtonger
0 / 0 / 0
Регистрация: 28.11.2011
Сообщений: 18
12.12.2011, 20:12  [ТС]     Вывести возраст прописью #14
А ну вот спасибо,но все равно она почему то не работает...ошибки находит
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
13.12.2011, 06:57     Вывести возраст прописью #15
Какие ошибки? В проекте из сообщения #12 замените содержимое функции main на то, что в сообщении #13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2011, 08:51     Вывести возраст прописью
Еще ссылки по теме:

Вывести оценку прописью C++
Вывести число прописью C++
C++ Вывести денежную сумму прописью

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.12.2011, 08:51     Вывести возраст прописью #16
Оптимизировать код
Yandex
Объявления
13.12.2011, 08:51     Вывести возраст прописью
Ответ Создать тему
Опции темы

Текущее время: 22:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru