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

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

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

Цикл while - C++

20.01.2011, 19:10. Просмотров 380. Ответов 6
Метки нет (Все метки)

Написал код, если Х изначально взять двойку, то программа пишет, что она не является степенью двойки. Как это иправить ? Она же вроде как является степенью =)

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>
 
int main(){
        
        setlocale(LC_ALL,"Russian");
        
        double x; 
        
        std::cout << "Введите число x: ";
        std::cin >> x;
 
        while(x > 2){
            x /= 2;
            if(x == 2){
                std::cout << "\n\n\tЧисло является степенью двойки.\n\n\n";
                return 0;
            }
        }
                
        std::cout << "\n\n\tЧисло не является степенью двойки.\n\n\n";
         
        return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2011, 19:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл while (C++):

Цикл: цикл for вообще никак не воспринимается транслятором - C++
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая проблема: цикл for вообще никак не...

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0&lt;=x&lt;=П,...

Цикл с параметром и цикл с условием - C++
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и некоторое число &quot;епсила&quot;. Найти сумму...

Изменить цикл for на цикл do-while - C++
помогите передать программу с цикла FOR в цикл DO-WHILE #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

6
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.01.2011, 19:11 #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
#include    <iostream>
 
int main(){
        
        setlocale(LC_ALL,"Russian");
        
        double x; 
        
        std::cout << "Введите число x: ";
        std::cin >> x;
 
        while(x >= 2){
           if(x == 2){
                std::cout << "\n\n\tЧисло является степенью двойки.\n\n\n";
                return 0;
            }
            x /= 2;
        }
                
        std::cout << "\n\n\tЧисло не является степенью двойки.\n\n\n";
         
        return 0;
 
}
1
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.01.2011, 19:11 #3
Цитата Сообщение от SynaptyC Посмотреть сообщение
while(x > 2){
попробуйте x >= 2, кстати единица это тоже степень двойки, так сказать частный случай.
1
SynaptyC
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 31
20.01.2011, 19:15  [ТС] #4
Спасибо, всё работает =)
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.01.2011, 19:21 #5
А вот так единица учитывается, да и работать побыстрее деления будет
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int foo(unsigned int n) {
    int i = 0;
    while(i < sizeof(n) * 8) {
        if(1 << i++ == n)
            return 1;
    }
    return 0;
}
 
int main()
{
    int n = 256;
    printf("Число %d %sявляется степенью двойки\n", n, foo(n) ? "" : "не ");
    return 0;
}
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.01.2011, 19:38 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    const int n=64;
    std::vector<unsigned long long> vec;
    int one=1;
    vec.push_back(one);
    std::generate_n(std::back_inserter(vec), n, [&one]() {return one<<=1;});
    unsigned long long hel=0;
    std::cout<<"Enter number: ";
    std::cin>>hel;
    std::cout<<"Number "<< hel << (std::find(vec.begin(), vec.end(), one) != vec.end() ? " is " : " is not ")
    <<"degree of 2\n";
    system("pause");
    return 0;
}
0
silent_1991
21.01.2011, 11:17     Цикл while
  #7

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
так сказать частный случай
Ну почему частный, вполне обычный случай)))

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2011, 11:17
Привет! Вот еще темы с ответами:

заменить цикл for на цикл while - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, M, sum; cout &lt;&lt; &quot;Введите число N:&quot; &lt;&lt; endl; ...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием... - Turbo Pascal
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Как реализовать бесконечный цикл While, но чтобы этот цикл не грузил процессор? - Visual C++
Допустим есть цикл: while (1) { ... } Как сделать так, чтобы бесконечный цикл не грузил процессор. Избавиться от...

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста - Turbo Pascal


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

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

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