Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 09.01.2018
Сообщений: 12
1

Проверка количества цифр в числе

25.01.2018, 14:37. Показов 1354. Ответов 7
Метки нет (Все метки)

Доброго времени суток) Возникла проблема с программой, помогите, пожалуйста
Уверен, что ошибка простая, но не могу понять

Как всё должно работать:
  1. Вводится пятизначное число
  2. Проверяется, пятизначное ли число введено
  3. Если да - запускается программа, вызывается функция, там всё нормально
  4. Если нет - выводится сообщение об ошибке, мол, не пятизначное число, надо чёт решать

Но в итоге, какое бы число не вводилось, появляется сообщение об ошибке -- введено не пятизначное число

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cmath>
#include "palendrom.h"
using namespace std;
 
int main(int argc, char** argv) {
    setlocale(LC_ALL, "");
    int in_number;
    int score = 0;
    int menu;
    int number_check;
    
    //Этот цикл перезапускает программу, чтобы она не завершалась после первой проверки палендром-не палендром
    for(int i = 0; i <= 1;){
    
        cout << "Введите пятизначное число: ";
        cin >> in_number;
        
        //Это проверка, пятизначное ли введено число. Тут и возникает проблема
        for(int i =0; in_number > 0 ; i++){
            in_number /= 10;
            number_check = i;
        }
        //Если число равно пяти, начинается работа программы. Тут всё как надо, всё работает
        if(number_check == 5){
        
        
            if(palendrom_2(in_number)){
                cout << "Число " << in_number << " -- палендром. "; 
            }
            else{
                cout << "Это не палендром";
            }
            
            cout << "Продолжить?\n1.Y\n2.N\n";
            cin >> menu;
            
            if(menu == 1){
                i = 0;
            }
            else{
                i = 2;
            }
        }
        else{
            //Почему-то выводится вот это, вне зависимости от того, пятизначное введено число или нет :(
            cout << "Это не пятизначное число!";
        }
    }
    
    return 0;
}


Если это может чем-то помочь(хотя скорее всего я просто что-то не так сделал в условии проверки количества цифр), вот код функции palendrom_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
bool palendrom_2(int number){
    int balance1;
    int balance2;
    int balance4;
    int balance5;
    
    balance1 = number % 10;
    number /= 10;
    
    balance2 = number % 10;
    number /= 100;
    
    balance4 = number % 10;
    number /= 10;
    
    balance5 = number %10;
    
    if((balance1 == balance5) && (balance2 == balance4)){
        return true;
    }
    else{
        return false;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2018, 14:37
Ответы с готовыми решениями:

Определение количества цифр в восьмеричном числе
Помогите сделать программу, пожалуйста! Алгоритм определения кол-ва цифр в восьмеричном числе

Определение количества цифр в целом числе
Помогите плиз) Вот вариант что нужно сделать! написать подпрограмму-функцию определения...

Подсчет количества цифр в вещественном числе
Насколько я понял, сделать это можно лишь с переводом в строковый тип, а вот сделать никак не могу....

Алгоритм определения количества цифр в шестнадцатиричном числе
Привет, у меня постала задача создать программу на с++, связану с определениям количества цифр в...

7
1743 / 1336 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
25.01.2018, 14:56 2
Как вариант, на пятизначность легко можно проверить так:
C++
1
if (in_number > 9999 && in_number <= 99999)
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
25.01.2018, 17:32 3
Цитата Сообщение от mrpes Посмотреть сообщение
Уверен, что ошибка простая, но не могу понять
для начала узнайте что такое палиндром - может и вопрос снимется
0
0 / 0 / 0
Регистрация: 09.01.2018
Сообщений: 12
25.01.2018, 22:01  [ТС] 4
Hitoku, не могу понять, как это работает. Объясните?

Yetty, слово, которое одинаково читается с обеих сторон) Просто перенёс это на числа. ПРоблема-то не в этом
0
1743 / 1336 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
25.01.2018, 22:04 5
mrpes, ну если число больше 9999 и меньше 100000, то оно пятизначное
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
25.01.2018, 22:05 6
Можно чуть по-другому) Возвращает количество разрядов.
C++
1
2
3
4
5
6
#include <cmath>
...
int digitCount(int value)
{
    return std::log10(value) + 1;
}
0
6447 / 4385 / 2512
Регистрация: 18.12.2017
Сообщений: 13,705
25.01.2018, 22:39 7
Цитата Сообщение от mrpes Посмотреть сообщение
Yetty, слово, которое одинаково читается с обеих сторон
можно и так сказать. просто Вы в теме указали проверку количества цифр, а сбросили программу на палиндром. сбросьте полное условие задачи, если не сложно и в программе исправьте ошибку в слове палиндром
0
0 / 0 / 0
Регистрация: 09.01.2018
Сообщений: 12
27.01.2018, 10:47  [ТС] 8
Hitoku, понял, спасибо)

lArtl, о, вот это интересно. Спасибо)

Yetty, ну ведь проблема с проверкой количества цифр возникает в отдельной части программы на палиндром. Полное условие - просто проверить, является ли введённое число палиндромом. В стиле 44044, что-то такое. После решил добавить вот такое условие с проверкой на пятизначность, тут и возникли проблемы)

Исправлять слово лень, от этого работоспособность точно не зависит
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2018, 10:47

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Рекурсивный подсчет количества нечетных цифр в числе
Всем привет. Есть работающая программа, которая считает все цифры в числе рекурсивно. А по...

Проверка на различность цифр в числе
Дано четырехзначное целое число. Определить все ли цифры числа различны. Пример входных данных...

Функция: подсчёт количества цифр после запятой в дробном числе
Нужно написать функцию подсчёта количества цифр после запятой в дробовом числе и при этом не...

Проверка наличия определенных цифр в числе
int n,kn = 0,kc = 0,a,b; cout&lt;&lt;&quot;Введите натуральное число:&quot;; cin &gt;&gt;n; cout &lt;&lt;&quot;Введите...


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

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

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