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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
#1

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от Paporotnik Посмотреть сообщение
не нули выводит, а -2147483648,
а unsigned int уже отменили
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 07:20 #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;
}
0
Просто лис
Путешественник вселенной
187 / 153 / 71
Регистрация: 01.03.2011
Сообщений: 664
23.08.2011, 08:58 #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;
        }
0
23.08.2011, 08:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 08:58
Привет! Вот еще темы с ответами:

Программа с объединением, место целочисленного или вещественного числа,выдает постоянно одну и ту же цифру - C++
Программа с объединением, место целочисленного или вещественного числа,выдает постоянно одну и ту же цифру.. И ещё, помогите пожалуйста её...

Программа, которая вводит с клавиатуры три целых числа и печатает сумму, среднее значение, произведение, меньшее и большее из этих чисел - C++
Доброго дня. В общем на начальном этапе изучения дошел до задач. Попалась такая задача. Напишите программу, которая вводит с...

Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K - C++
Помогите выполнить задание. Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K (цифры в...

Составить программу,которая для любого натурального числа печатает количество цифр в записи этого числа - C++
Помагите решить такую штукенцию=) Составить программу,которая для любого натурального числа печатает количество цифр в записи этого...


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

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

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