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

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

Войти
Регистрация
Восстановить пароль
 
denfox_pro
0 / 1 / 0
Регистрация: 30.10.2012
Сообщений: 113
#1

Зацикливает при вводе чётного числа. While - C++

07.06.2013, 19:03. Просмотров 303. Ответов 4
Метки нет (Все метки)

Условие:
Дано целое число N (> 0). С помощью операций деления нацело
и взятия остатка от деления определить, имеются ли в записи числа N
нечетные цифры. Если имеются, то вывести TRUE, если нет — вывести
FALSE.

Код:
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
#include <iostream> 
using namespace std; 
int N,i; /
bool f;
int main() 
{
    setlocale(LC_ALL,""); //подключение русской кодировки для DEV-C++
    cout<<"Введите целое положительное число N (N>0):\n"; 
    cin>>N; 
    f=false;
    while (N!=0 && !f)
    {
        if ((N%10%2)==1)
        {
            f=true;
            N/=10;     
        }
    }
    if (f) 
        cout<<"true";
    else
        cout<<"false";
    return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 19:03     Зацикливает при вводе чётного числа. While
Посмотрите здесь:

Прекратить работу калькулятора при вводе любого символа, кроме числа C++
C++ Получить косинус из числа при вводе cos
почему то при вводе числа не выдает сумму C++
Зацикливает, при считывании строки C++
C++ Ввести числа и из них при вводе 0 вывести минимальное
При вводе массива, на консоль выводятся совершенно одинаковые большие числа C++
При вводе слишком большого числа программа зацикливается C++
C++ Ошибка -1.#IND при вводе не целого числа
C++ Ошибка при вводе числа
C++ Вылет программмы при вводе числа
Некорректная работа программы,при вводе отрицательного числа C++
Ошибка времени исполнения при вводе букв вместо числа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
6471 / 3669 / 460
Регистрация: 29.11.2010
Сообщений: 9,675
07.06.2013, 19:06     Зацикливает при вводе чётного числа. While #2
Цитата Сообщение от denfox_pro Посмотреть сообщение
while (N!=0 && !f)
* * {
* * * * if ((N%10%2)==1) // если остаток от деления N на 20 равен 1, т.е. при N = 1, 21, 41, 61, ...
* * * * {
* * * * * * f=true;
* * * * * * N/=10; * *
* * * * }
* * }
У вас программа ни разу не зайдет в условие if, если N не равно одному из перечисленных выше чисел. И при этом условие выхода из цикла while - неизменное число.
Expocooky
56 / 56 / 2
Регистрация: 06.06.2013
Сообщений: 112
07.06.2013, 19:12     Зацикливает при вводе чётного числа. While #3
Если число не попадет в тело условия, то цикл будет бесконечным
Нужно описать, что происходит при непопадании в эти условия
sm1992
2 / 2 / 0
Регистрация: 27.05.2013
Сообщений: 8
07.06.2013, 23:46     Зацикливает при вводе чётного числа. While #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
#include <iostream> 
using namespace std; 
int N; 
bool f;
int main() 
{
    setlocale(LC_ALL,""); //подключение русской кодировки для DEV-C++
    cout<<"Введите целое положительное число N (N>0):\n"; 
    cin>>N; 
    f=false;
    while ((N!=0) && (!f))
    {
        if ((N%10%2)==1)
        {
            f=true;
            N/=10;     
        }
        else
        {
            f=false;
            goto l;
        }
    }
    l:
    if (f) 
        cout<<"true";
    else
        cout<<"false";
    system("Pause");
    return 0; 
}
или так на мой взгляд проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using namespace std; 
int N; 
int main() 
{
    setlocale(LC_ALL,""); //подключение русской кодировки для DEV-C++
    cout<<"Введите целое положительное число N (N>0):\n"; 
    cin>>N; 
    
    if (N!=0)
        if (((N%10)%2)==0)
            cout<<"false"<<endl;
        else
            cout<<"true"<<endl;
    else
        cout<<"введен 0"<<endl;
    system("Pause");
    
   
    return 0; 
}
MrGluck
Ворчун
Эксперт CЭксперт С++
6471 / 3669 / 460
Регистрация: 29.11.2010
Сообщений: 9,675
09.06.2013, 03:01     Зацикливает при вводе чётного числа. While #5
Цитата Сообщение от sm1992 Посмотреть сообщение
if (N!=0)
* * * * if (((N%10)%2)==0)
* * * * * * cout<<"false"<<endl;
* * * * else
* * * * * * cout<<"true"<<endl;
* * else
* * * * cout<<"введен 0"<<endl;
C++
1
cout << (N ? (N % 20 ? "true" : "false") : "введен 0") << endl;
только это все равно не верно

Добавлено через 9 минут
Так правильно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <clocale>
 
bool hasOdd(const int x)
{
    return !x || (x % 2 == 0 ? false : hasOdd(x/10));
}
 
int main()
{
    int N;
    setlocale(LC_ALL, ""); //подключение русской кодировки
    do
    {
        std::cout << "Введите целое положительное число N (N>0):\n";
        std::cin >> N;
    } while (N <= 0);
    std::cout << (hasOdd(N) ? "True\n" : "False\n");
}
Yandex
Объявления
09.06.2013, 03:01     Зацикливает при вводе чётного числа. While
Ответ Создать тему
Опции темы

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