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

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

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

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

07.06.2013, 19:03. Просмотров 315. Ответов 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; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 19:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зацикливает при вводе чётного числа. While (C++):

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? - C++
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

Зацикливает, при считывании строки - C++
Даже не запрашивает ввод, сразу зацикливает. Что не так? case 3: { char* r = new char; int i, z = 0, n...

Ошибка при вводе числа - C++
Подозреваю, что где-то нужно обнулить переменную rows. Потому что (как показано на скрине) число &quot;45&quot; всегда состоит из первой цифры кол-ва...

Вылет программмы при вводе числа - C++
Сделал прогу, которая может искать символ в тексте, вычленять часть текста и заменять регистр первых букв. Обработал все случаи &quot;тупого...

почему то при вводе числа не выдает сумму - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include &quot;locale.h&quot; #include &lt;windows.h&gt; using...

Ошибка -1.#IND при вводе не целого числа - C++
После ввода дробного числа для b в консоли пишется ошибка -1.#IND. При вводе целого числа все считается. В чем причина? При использовании...

4
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
07.06.2013, 19:06 #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 - неизменное число.
0
Expocooky
56 / 56 / 2
Регистрация: 06.06.2013
Сообщений: 112
07.06.2013, 19:12 #3
Если число не попадет в тело условия, то цикл будет бесконечным
Нужно описать, что происходит при непопадании в эти условия
0
sm1992
2 / 2 / 0
Регистрация: 27.05.2013
Сообщений: 8
07.06.2013, 23:46 #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; 
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
09.06.2013, 03:01 #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");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 03:01
Привет! Вот еще темы с ответами:

Получить косинус из числа при вводе cos - C++
Как сделать чтобы я вводил cos и добывался косинус из числа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include...

При вводе слишком большого числа программа зацикливается - C++
При вводе слишком большого числа идет зацикливание(вроде так)помогите исправить #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...

Некорректная работа программы,при вводе отрицательного числа - C++
Здравствуйте.Есть некий // { int c; char array; printf( &quot;Vvod: &quot; ); scanf( &quot;%d&quot;, &amp;c ); printf(...

Циклы: при вводе числа <=0 запрашивать другое число - C++
Только начал осваивать азы, так что уж извините за глупый вопрос. Как в приведенном ниже коде сделать так, что бы при вводе числа ,...


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

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

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