Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737

Программа постоянно печатает степени целого числа 2

22.08.2011, 22:51. Показов 5084. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая постоянно печатает степени целого числа 2,
соответственно 2, 4, 8, 16, 32, 64 и т.д. Число повторений вашего цикла не должно,
быть определено (т.е. вы должны создать бесконечный цикл). Что случилось,
когда вы выполнили эту программу?


Ничего не выводит, где я не прав ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main()
{
    int num = 0;
    while (true) 
    {     
          cout << num << endl;  
          return num^2; 
   
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.08.2011, 22:51
Ответы с готовыми решениями:

Посчитать 2 в степени целого длинного числа
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { int i; double long N,a; a=2;//Возводимое...

Найти значение суммы используя рекурсию нахождения целого степени числа а
Найти значение суммы ряда используя рекурсию нахождения целого степени числа а

Написать рекурсивную функцию для вычисления натуральной степени заданного целого числа
Рекурсия. Помогите исправить программу: Напишите рекурсивную функцию для вычисления натуральной степени заданного целого числа. ...

24
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 22:55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    double num = 0;
    while (true) 
    {     
          cout << (int)pow(num,2) << endl;  
   
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
22.08.2011, 23:00  [ТС]
При этом варианте, выводит бесконечно нули
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 23:12
Исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int y=0;
    while (true) 
    {     
          cout << (int)pow(2,y++) << endl;  
   
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
22.08.2011, 23:18  [ТС]
не работает
Миниатюры
Программа постоянно печатает степени целого числа 2  
0
32 / 32 / 2
Регистрация: 07.08.2011
Сообщений: 89
22.08.2011, 23:37
Цитата Сообщение от TBIKC Посмотреть сообщение
не работает
Возведение в степень, pow

А конкретнее, оно не знает к какому виду привести аргумент у функции pow.

Попробуйте заменить строку на
C++
1
cout << (int)pow(2.0,num++) << endl;
1
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 23:41
TBIKC, используйте в аргументах 2. вместо 2
1
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
22.08.2011, 23:43
нули у тебя выводятся, потому что очень быстро происходит переполнение int. сделай ограничение на количество выводимых значений и получишь свои степени двойки.
и зачем так заморачиваться, если можно в этом же цикле после вывода просто умножать на 2?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
int num = 2; 
while (true) {
    cout<<num<<endl;
    num=num*2;
    if (num>100000) break;
}            
}
2
32 / 32 / 2
Регистрация: 07.08.2011
Сообщений: 89
22.08.2011, 23:47
Цитата Сообщение от Paporotnik Посмотреть сообщение
нули у тебя выводятся, потому что очень быстро происходит переполнение int. сделай ограничение на количество выводимых значений и получишь свои степени двойки.
и зачем так заморачиваться, если можно в этом же цикле после вывода просто умножать на 2?
Не поверите, вариант с pow() не нули выводит, а -2147483648, компилил из-под minGW. А ваш вариант - будет выводить нули. Так что разница есть.
0
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
22.08.2011, 23:49  [ТС]
спасибо, всё заработало )
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    int num = 1;
    while (true)
    {     
          cout << num << endl;
          num *=2;
          if(num>500) break;
    }
}
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
22.08.2011, 23:53
Не поверите, вариант с pow() не нули выводит, а -2147483648, компилил из-под minGW. А ваш вариант - будет выводить нули. Так что разница есть.
а вы пробовали "мой вариант" скомпилить и посмотреть?
тот же MinGW с NetBeans:
Миниатюры
Программа постоянно печатает степени целого числа 2  
0
32 / 32 / 2
Регистрация: 07.08.2011
Сообщений: 89
23.08.2011, 00:27
Цитата Сообщение от Paporotnik Посмотреть сообщение
а вы пробовали "мой вариант" скомпилить и посмотреть?
тот же MinGW с NetBeans:
а где 1073741824?
Плюс не красиво константы в коде расставлять. Не культурно это.

Вообще в задаче стояло - сделать БЕСКОНЕЧНЫЙ цикл, поэтому мы его и делали.
Ваш вариант вот в таком виде лучше в плане переносимости между платформами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
    int num = 1;
    while (true) 
    {
        num=num*2;
        cout<<(int)num<<endl;
//В этой строке заменить -2 на -1 если unsigned - как это отследить не помню.
        if (  num>=(1<<(sizeof(num)*8-2))  ) break;
    }
}
В таком варианте можно спокойно заменять тип int на char, short int по надобности. Разве что << не поддерживает long long int на х32 процессорах по крайней мере, надо переопределять, да и в задачу это не входило.

или отслеживанием флага переполнения(это уже ассемблер, но способ, ИМХО, намного эффективнее)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
23.08.2011, 00:37
Цитата Сообщение от TBIKC Посмотреть сообщение
не работает
потому что нет функции pow с int
double float пожалуйста но куда приводить int
посему
Цитата Сообщение от almazsr Посмотреть сообщение
int y=0;
поменяй на double y
во втором посте было правильно

Добавлено через 2 минуты
Цитата Сообщение от Paporotnik Посмотреть сообщение
не нули выводит, а -2147483648,
а unsigned int уже отменили
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
23.08.2011, 07:20
Если нужны степени двойки, то зачем умножать, когда есть битовые операции:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
const int N = 10000;
 
int main()
{
    int i = -1, num = 1;
    while (++i < N)
    {
 
       cout << num << endl;
       num <<= 1;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Путешественник вселенной
 Аватар для Просто лис
189 / 161 / 119
Регистрация: 01.03.2011
Сообщений: 664
23.08.2011, 08:58
Вот с счетчиком до 1000 (т.к при бесконечном цикле значения вываливаются в inf)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    double i=1.0;
    for (;i!=1000.0;)
    {
        cout<<pow(2.0,i)<<"\n";
        i++;
        }
        system("pause");
        return 0;
        }
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
23.08.2011, 09:56
Если кто за красоту кода (а сам в программе break использует), то лучше уж так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    unsigned long num = 1;
    int i = (sizeof(num) << 3) - 1;
    while (i--)
       cout << (num <<= 1) << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 10:04
C++
1
for (int i = 1 ; ; ( usleep(90000), std::cout << (1ll << i++) << std::endl) );
2
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
23.08.2011, 10:11
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
for (int i = 1 ; ; ( usleep(90000), std::cout << (1ll << i++) << std::endl) );
А цикл бесконечный
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 10:30
Цитата Сообщение от Olga_ Посмотреть сообщение
А цикл бесконечный
Так задание такое =\
Зато при переполнении последовательность просто начинает выводиться заново.
0
 Аватар для Olga_
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
23.08.2011, 10:33
Да, точно, такое задание Ну раз автору темы так надо, пусть будет так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2011, 10:33
Помогаю со студенческими работами здесь

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Программа, вычисляющая корень четвертой степени от числа
Доброго времени суток. Народ, кому не сложно, создайте программу, вычисляющую корень четвертой степени от числа.

Программа, которая выводит на экран код двухбайтового целого числа
Программа, которая выводит на экран код двухбайтового целого числа.

Программа, которая выводит на экран код однобайтового целого числа
Программа, которая выводит на экран код однобайтового целого числа.

Программа перевода целого числа без знака в двоичную систему счисления
Здравствуйте . Помогите , пожалуйста , реализовать программу перевода целого числа без знака в двоичную систему счисления , при этом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru