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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 22:51     Программа постоянно печатает степени целого числа 2 #1
Напишите программу, которая постоянно печатает степени целого числа 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 22:51     Программа постоянно печатает степени целого числа 2
Посмотрите здесь:

Составить программу,которая для любого натурального числа печатает количество цифр в записи этого числа C++
C++ Программа с объединением, место целочисленного или вещественного числа,выдает постоянно одну и ту же цифру
C++ Программа, которая вводит с клавиатуры три целых числа и печатает сумму, среднее значение, произведение, меньшее и большее из этих чисел
Программа перевода целого числа без знака в двоичную систему счисления C++
Программа перевода целого числа без знака в двоичную систему счисления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 22:55     Программа постоянно печатает степени целого числа 2 #2
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;
}
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 23:00  [ТС]     Программа постоянно печатает степени целого числа 2 #3
При этом варианте, выводит бесконечно нули
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 23:12     Программа постоянно печатает степени целого числа 2 #4
Исправил:
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;
}
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 23:18  [ТС]     Программа постоянно печатает степени целого числа 2 #5
не работает
Миниатюры
Программа постоянно печатает степени целого числа 2  
Teravisor
30 / 30 / 3
Регистрация: 07.08.2011
Сообщений: 89
22.08.2011, 23:37     Программа постоянно печатает степени целого числа 2 #6
Цитата Сообщение от TBIKC Посмотреть сообщение
не работает
возведение в степень, pow

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

Попробуйте заменить строку на
C++
1
cout << (int)pow(2.0,num++) << endl;
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 23:41     Программа постоянно печатает степени целого числа 2 #7
TBIKC, используйте в аргументах 2. вместо 2
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
22.08.2011, 23:43     Программа постоянно печатает степени целого числа 2 #8
нули у тебя выводятся, потому что очень быстро происходит переполнение 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;
}            
}
Teravisor
30 / 30 / 3
Регистрация: 07.08.2011
Сообщений: 89
22.08.2011, 23:47     Программа постоянно печатает степени целого числа 2 #9
Цитата Сообщение от Paporotnik Посмотреть сообщение
нули у тебя выводятся, потому что очень быстро происходит переполнение int. сделай ограничение на количество выводимых значений и получишь свои степени двойки.
и зачем так заморачиваться, если можно в этом же цикле после вывода просто умножать на 2?
Не поверите, вариант с pow() не нули выводит, а -2147483648, компилил из-под minGW. А ваш вариант - будет выводить нули. Так что разница есть.
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 23:49  [ТС]     Программа постоянно печатает степени целого числа 2 #10
спасибо, всё заработало )
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;
    }
}
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
22.08.2011, 23:53     Программа постоянно печатает степени целого числа 2 #11
Не поверите, вариант с pow() не нули выводит, а -2147483648, компилил из-под minGW. А ваш вариант - будет выводить нули. Так что разница есть.
а вы пробовали "мой вариант" скомпилить и посмотреть?
тот же MinGW с NetBeans:
Миниатюры
Программа постоянно печатает степени целого числа 2  
Teravisor
30 / 30 / 3
Регистрация: 07.08.2011
Сообщений: 89
23.08.2011, 00:27     Программа постоянно печатает степени целого числа 2 #12
Цитата Сообщение от 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 процессорах по крайней мере, надо переопределять, да и в задачу это не входило.

или отслеживанием флага переполнения(это уже ассемблер, но способ, ИМХО, намного эффективнее)
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
23.08.2011, 00:37     Программа постоянно печатает степени целого числа 2 #13
Цитата Сообщение от TBIKC Посмотреть сообщение
не работает
потому что нет функции pow с int
double float пожалуйста но куда приводить int
посему
Цитата Сообщение от almazsr Посмотреть сообщение
int y=0;
поменяй на double y
во втором посте было правильно

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

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;
}
Просто лис
Путешественник вселенной
 Аватар для Просто лис
187 / 153 / 71
Регистрация: 01.03.2011
Сообщений: 664
23.08.2011, 08:58     Программа постоянно печатает степени целого числа 2 #15
Вот с счетчиком до 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;
        }
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 09:56     Программа постоянно печатает степени целого числа 2 #16
Если кто за красоту кода (а сам в программе 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;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 10:04     Программа постоянно печатает степени целого числа 2 #17
C++
1
for (int i = 1 ; ; ( usleep(90000), std::cout << (1ll << i++) << std::endl) );
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 10:11     Программа постоянно печатает степени целого числа 2 #18
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
for (int i = 1 ; ; ( usleep(90000), std::cout << (1ll << i++) << std::endl) );
А цикл бесконечный
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.08.2011, 10:30     Программа постоянно печатает степени целого числа 2 #19
Цитата Сообщение от Olga_ Посмотреть сообщение
А цикл бесконечный
Так задание такое =\
Зато при переполнении последовательность просто начинает выводиться заново.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 10:33     Программа постоянно печатает степени целого числа 2
Еще ссылки по теме:

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку C++
Посчитать 2 в степени целого длинного числа C++
Даны натуральные числа n, k. Проверить, есть ли в записи числа n (в степени k) цифра m C++

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

Или воспользуйтесь поиском по форуму:
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 10:33     Программа постоянно печатает степени целого числа 2 #20
Да, точно, такое задание Ну раз автору темы так надо, пусть будет так
Yandex
Объявления
23.08.2011, 10:33     Программа постоянно печатает степени целого числа 2
Ответ Создать тему
Опции темы

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