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

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

Войти
Регистрация
Восстановить пароль
 
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 48
#1

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

10.12.2013, 23:20. Просмотров 1029. Ответов 11
Метки нет (Все метки)

Задание:
Вводишь число, а компьютер должен дописать к нему рублей или рубля или рубль, вобщем правильно просклонять.
Код:
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 - всеравно РУБЛЯ, вобщем не работает последний цикл, подскажите пожалуйста, что не так.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 23:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Склонение существительных в зависимости от количества единиц (C++):

Склонение слова рубль в зависимости от числа - C++
Написал программу по склонению слова рубль при помощи if else, правда я тут я не учел числа от 11 до 19, но не в этом проблема. Хочу...

Определения количества единиц в числе - C++
Как решить? Вводится число n. Определить количество единиц в записи числа n.

Intrinsic функция для определения количества единиц в блоке - C++
Есть блок, скажем типа __m256 и между всеми его байтами нужно выполнить xor. Или, что аналогично, посмотреть, четно ли количество единиц в...

Написать программу для перевода единиц измерения количества информации - C++
Я недавно начал изучать С++. Хотел попробовать написать программу для перевода единиц измерения количества информации. Но почему то она не...

Подскажите функцию для нахождения количества единиц в битовом массиве - C++
Ребят, подскажите функцию для нахождения количества единиц в битовом массиве.

Упорядочить массив по возрастанию количества единиц в двоичном разложении чисел - C++
Создать случайный массив размера n. Упорядочить его по возрастанию количества единиц в двоичном разложении чисел.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
}
0
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 43
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;
}
Как раз пять минут назад написал
0
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 48
10.12.2013, 23:42  [ТС] #4
а можно это реализовать через if else?
0
Jack Wade
63 / 36 / 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;
0
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 )
               ....
0
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 43
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() чтобы было понятно
1
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 48
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;
}
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)
1
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 48
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;
}
0
VANYOK
1 / 1 / 0
Регистрация: 05.12.2013
Сообщений: 43
11.12.2013, 01:37 #11
Цитата Сообщение от Darthriddikc Посмотреть сообщение
else if (a%10 >= 2 && a%10 <=4)
О, а ведь тоже эту ошибку сделал...
Прошу прощения, буду внимательно проверять свой код.
Но светчем проще и понятнее, у меня-то условий не было, написал как удобней....
0
dvaperca
1 / 1 / 1
Регистрация: 10.12.2013
Сообщений: 48
11.12.2013, 03:01  [ТС] #12
Цитата Сообщение от VANYOK Посмотреть сообщение
О, а ведь тоже эту ошибку сделал...
Прошу прощения, буду внимательно проверять свой код.
Но светчем проще и понятнее, у меня-то условий не было, написал как удобней....
просто я всего 2й день учу с++, ну так сказать только начал, и поэтому хотелось сделать задачу именно на закрепление if else.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 03:01
Привет! Вот еще темы с ответами:

Массивы. Упорядочить элементы заданного массива целых чисел по убыванию количества единиц... - C++
Задание 1 Упорядочить элементы заданного массива целых чисел по убыванию количества единиц, содержащихся в двоичном представлении...

Определить окончание существительного в зависимости от введенного количества - C++
Доброго времени суток. Прошу небольшей помощи с вашей стороны. Вот в чем суть Задача: Для натурального числа К напечатать фразу &quot;мы нашли...

Как выровнять столбец чисел в зависимости от количества цифр в числах? - C++
Есть ли у кого-нибудь универсальный алгоритм, который позволяет делать ширину столбца одинаковой в не зависимости от количество...

Как инициализировать глобальную переменную в зависимости от количества строк в файле - C++
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная. После неё, тоже не в mаin, объявлены структуры ex: struct...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.12.2013, 03:01
Ответ Создать тему
Опции темы

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