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

С++ для начинающих

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

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

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

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

Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести строку-описание указанного возраста, обеспечив правильное со- гласование числа со словом «год», например: 20 — «двадцать лет», 32 — «тридцать два года», 41 — «сорок один год».
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 16:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести возраст прописью (C++):

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

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

Вывести цифру прописью - C++
Сделайте вектор проведение десяти строк значения "ноль" , "один" , .. "девятку" . Используйте это в программе, которая преобразует цифру в...

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

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

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

15
bigredcat
28.11.2011, 16:42
  #2

Не по теме:

попутал.

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

Вывести день недели прописью - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using std::cout; using std::cin; using...

Вывести корни уравнения прописью - C++
Ребят,помогите пожалуйста!А то в С++ ни бум-бум:( Вычислить корни квадратного уравнения ax^2+bx+c (где а,b,c вводит пользователь) и...

Вывести трехзначное число прописью - C++
Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа, например: 256 — «двести пятьдесят шесть», 814 — «восемьсот...

Вывести денежную сумму прописью - C++
можете написать программу в с++ пожалуйста,очень надо:( Записать число, заданное в формате *.??, в строку (словами) и перевести на...


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

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

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