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

Склонение существительных в зависимости от количества единиц - C++

Восстановить пароль Регистрация
 
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 46
10.12.2013, 23:20     Склонение существительных в зависимости от количества единиц #1
Задание:
Вводишь число, а компьютер должен дописать к нему рублей или рубля или рубль, вобщем правильно просклонять.
Код:
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
#include <iostream>
using namespace std;
int main ()
{
    setlocale (0,"");
    int a=255;
    cout <<"Введите число: ";
    cin >> a;
    int c=a%10;
        if (c == 1) {
            cout << "рубль" << endl;
        } else {
            if (c == 2,3,4) {
            cout << "рубля" << endl;
        } else {
            if (c == 5,6,7,8,9,0) {
            cout << "рублей" << endl;
            } else {
            }
            }
            }
    
        system ("pause");
        return 0;
}
Что получилось:
К примеру вводи 101 - рубль, 103 - рубля, 107 - всеравно РУБЛЯ, вобщем не работает последний цикл, подскажите пожалуйста, что не так.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 23:20     Склонение существительных в зависимости от количества единиц
Посмотрите здесь:

Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д C++
Определить окончание существительного в зависимости от введенного количества C++
Массивы. Упорядочить элементы заданного массива целых чисел по убыванию количества единиц... C++
C++ Вывести на экран оценку тестируемого в зависимости от набранного количества баллов
Вывести на экран оценку тестируемого в зависимости от набранного количества баллов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 23:30     Склонение существительных в зависимости от количества единиц #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
switch ( c )
{
case 1:
     cout << "Рубль" << endl;
    break;
case 2:
case 3:
case 4:
    cout << "Рубля" << endl;
    break;
case 5:
case 6:
case 7:
case 8:
case 9:
    cout << "Рублей" << endl;
    break;
default:
    break;
}
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 42
10.12.2013, 23:35     Склонение существительных в зависимости от количества единиц #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
31
32
33
34
35
36
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int r;
    
    cout << "Введите кол-во рублей: ";
    cin >> r;
    if (r < 0)
    {
        cout << "Значение отрицательное";
        _getch();
        return -1;
    }
    cout << "У вас " << r << " ";
    if ((r % 100) >= 11 && (r % 100) <= 19)
        cout << "Рублей\n";
    else
    {
        switch (r % 10)
        {
        case 1: cout << "Рубль\n"; break;
        case 2:
        case 3:
        case 4: cout << "Рубля\n"; break;
        default: cout << "Рублей\n";
        }
    }
    _getch();
    return 0;
}
Как раз пять минут назад написал
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 46
10.12.2013, 23:42  [ТС]     Склонение существительных в зависимости от количества единиц #4
а можно это реализовать через if else?
Jack Wade
61 / 34 / 6
Регистрация: 24.02.2013
Сообщений: 250
10.12.2013, 23:46     Склонение существительных в зависимости от количества единиц #5
dvaperca, естественно, можно.
Взамен switch() пишите что то примерно следующее:
Кликните здесь для просмотра всего текста

C++
1
2
3
if (r%10==1) cout<<"Рубль"<<endl;
else if (r%10)==4) cout<<"Рубля"<<endl;
else cout<<"Рублей"<<endl;
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
10.12.2013, 23:47     Склонение существительных в зависимости от количества единиц #6
dvaperca, можно, в чём проблема? Условие грамотно пропишите только.
C++
1
2
3
4
if ( c == 1 )
           ....
    else if ( c == 2 || c == 3 || c == 4 )
               ....
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 42
11.12.2013, 00:03     Склонение существительных в зависимости от количества единиц #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if ((r % 100) >= 11 && (r % 100) <= 19)
        cout << "Рублей\n";
    else
    /*
        switch (r % 10)
        {
        case 1: cout << "Рубль\n"; break;
        case 2:
        case 3:
        case 4: cout << "Рубля\n"; break;
        default: cout << "Рублей\n";
        }
        */
    if (r % 10 == 1)
        cout << "Рубль\n";
    else if (r % 10 >= 2 && r <= 4))
        cout << "Рубля\n";
    else cout << "Рублей\n";
Добавлено через 10 минут
Цитата Сообщение от VANYOK Посмотреть сообщение
else if (r % 10 >= 2 && r <= 4))
уберите одну скобку после 4
и будет Вам счастье
для сравнения закомментировал switch() чтобы было понятно
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 46
11.12.2013, 00:24  [ТС]     Склонение существительных в зависимости от количества единиц #8
если набрать 1024, то вместо рубля, он пишет рублей
от 0 до 9 склоняет правильно, большие цифры, уже неправильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main ()
{
    setlocale (0,"");
    int a=255;
    cout <<"Введите число: ";
    cin >> a;   
        if (a%10 == 1)
            cout << "рубль" << endl;
        else if (a%10 >= 2 && a <=4)
            cout << "рубля" << endl;
        else cout <<"рублей" << endl;
            system ("pause");
        return 0;
}
Darthriddikc
10 / 10 / 0
Регистрация: 23.12.2012
Сообщений: 45
11.12.2013, 00:38     Склонение существительных в зависимости от количества единиц #9
Цитата Сообщение от dvaperca Посмотреть сообщение
else if (a%10 >= 2 && a <=4)
else if (a%10 >= 2 && a%10 <=4)
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 46
11.12.2013, 00:43  [ТС]     Склонение существительных в зависимости от количества единиц #10
дошло наконец)
З.Ы. спапсибо за указание на ошибку)
та часть кода, которая закоментированна - это мой изначальный вариант с исправлением и тоже заработавший, ну и не закоментированный это тоже рабочий, но с исправленной ошибкой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int main ()
{
    setlocale (0,"");
    int a=255;
    cout <<"Введите число: ";
    cin >> a;   
    /*int c=a%10;
    if (c == 1)
        cout << "рубль" << endl;
    else if (c >=2  && c <=4)
        cout << "рубля" << endl;
    else 
        cout <<"рублей" << endl;*/
        if (a%10 == 1)
            cout << "рубль" << endl;
        else if (a%10 >= 2 && a%10 <=4)
            cout << "рубля" << endl;
        else cout <<"рублей" << endl;
            system ("pause");
        return 0;
}
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 42
11.12.2013, 01:37     Склонение существительных в зависимости от количества единиц #11
Цитата Сообщение от Darthriddikc Посмотреть сообщение
else if (a%10 >= 2 && a%10 <=4)
О, а ведь тоже эту ошибку сделал...
Прошу прощения, буду внимательно проверять свой код.
Но светчем проще и понятнее, у меня-то условий не было, написал как удобней....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 03:01     Склонение существительных в зависимости от количества единиц
Еще ссылки по теме:

Как инициализировать глобальную переменную в зависимости от количества строк в файле C++
C++ Написать программу для перевода единиц измерения количества информации
Intrinsic функция для определения количества единиц в блоке C++

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

Или воспользуйтесь поиском по форуму:
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 46
11.12.2013, 03:01  [ТС]     Склонение существительных в зависимости от количества единиц #12
Цитата Сообщение от VANYOK Посмотреть сообщение
О, а ведь тоже эту ошибку сделал...
Прошу прощения, буду внимательно проверять свой код.
Но светчем проще и понятнее, у меня-то условий не было, написал как удобней....
просто я всего 2й день учу с++, ну так сказать только начал, и поэтому хотелось сделать задачу именно на закрепление if else.
Yandex
Объявления
11.12.2013, 03:01     Склонение существительных в зависимости от количества единиц
Ответ Создать тему
Опции темы

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