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

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; - C++

Восстановить пароль Регистрация
 
KattyBelka
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 10
17.06.2013, 12:00     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; #1
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается.

Дано натуральное число N (N<20), определяющее сумму денег в рублях. Дать для этого числа наименование: "рубль", "рубля", "рублей";
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 12:00     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
Посмотрите здесь:

C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" C++
C++ Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол"
C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
Правильно ли написано программа про "Рубля, рублей, рубль" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
17.06.2013, 12:23     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; #2
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
#include <functional>
#include <iostream>
 
class money : public std::unary_function<short, const wchar_t*>
{
public:
    const wchar_t* operator () (short m)
    {
        switch (m)
        {
        case 1:
            return L"рубль";
        case 2:
        case 3:
        case 4:
            return L"рубля";
        default:
            break;
        }
        return L"рублей";
    }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    money m;
    std::wcout << m(10) << std::endl;
    return 0;
}
KattyBelka
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 10
18.06.2013, 10:04  [ТС]     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; #3
Спасибо большое!!!

Правда программа работает не совсем так как надо(просто выводит слово, не относя к числу и вообще не запрашивает число), но это я думаю не долго исправить.

Можно попросить еще об одном, объяснить поподробней текст программы

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
#include <functional>
#include <iostream>
using namespace std; 
class money : public unary_function<short, const wchar_t*>
{
public:
    const wchar_t* operator () (short m)
    {
        switch (m)
        {
        case 1:
            return L"рубль";
        case 2:
        case 3:
        case 4:
            return L"рубля";
        default:
            break;
        }
        return L"рублей";
    }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    money m;
    wcout << m(10) << "\n";
    return 0;
}

Почему только от 1 до 4 рублей или мне просто самой доделать по принципу?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.06.2013, 11:06     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; #4
KattyBelka, От 5 и до 20 окончание будет "рублей", что хэндлит дефолтный кейс.
Соответственно разница только для 1 (рубль), и 2,3,4 (рубля).
Yandex
Объявления
18.06.2013, 11:06     Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
Ответ Создать тему
Опции темы

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