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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 5.00
voff4igg
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
#1

Вывод длинных целых чисел на консоль - проблема? - C++

20.02.2009, 02:09. Просмотров 2450. Ответов 4
Метки нет (Все метки)

Здравствуйте! Имею следующий вопрос. Есть задача - вывести на консоль степени двойки от 1 до 64. Для этого используется следующий код:

C++
1
2
3
4
5
6
7
long value = 1;
 
for(int i = 1; i< 64; i++)
{
    value *= 2;
    cout << "2 в степени " << i << " равняется" << value << endl;
}
Проблема в том, что начиная со степени 32 на консоль выводится не тот результат что нужен. Значение по модулю 2 в 32 степени и больше выводятся на консоль некорректно. Подскажите, есть ли какое-нибудь решение этой проблемы? Извините, новичок...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2009, 02:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод длинных целых чисел на консоль - проблема? (C++):

Создать класс длинных целых чисел - C++
Создать класс длинных целых чисел. Класс имеет конструктор по умолчанию, конструктор - преобразующий long в объект класса. Определить...

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

Умножение/деление длинных целых чисел из строк - C++
у кого есть код 'умножение и деление целых чисел из строк'? заранее спасибо Добавлено через 32 минуты или библиотека и функции

Длинная арифметика(вычитание длинных целых чисел) - C++
Добрый вечер! Очень нужна помощь. Мне нужно написать программы для сложения больших целых чисел(разрядности около 200), вычитания и что-то...

Умножение длинных целых 11-ричных чисел в виде строк - C++
Доброго времени суток. Если кому приходилось сталкиваться с умножением двух длинных целых чисел (неважно какая система счисления),...

Помогите пожалуйста по Одномерному массиву длинных целых чисел!!! - C++
Здравствуйте!!! Помогите пожалуйста решение задачи!!! Одномерный массив длинных целых чисел Задание №1 Составить программу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sazary
10 / 10 / 2
Регистрация: 02.02.2009
Сообщений: 15
20.02.2009, 02:56 #2
Просто такие большие числа не влезают в long. Можете использовать тип __int64, но тогда программа корректно выведет только числа до 2^62.

Вообще эта задача на применение длинной арифметики.
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
32
33
34
35
36
#include <iostream>
#include <conio.h>
using namespace std;
 
void umn(int *a, int &k)
 {
  int ost=0,t,i;
  for(i=0;i<=k;i++)
   {
    a[i] = a[i]*2 + ost;
    t = a[i];
    a[i] = t%10;
    ost = t/10;
   }
  while(ost>0)
   {
    k++;
    a[k] = ost % 10;
    ost /= 10;
   }
 }
 
int main(){
int mas[25],k=0;
mas[0] = 1;
 
for(int i = 1; i<= 64; i++)
{
    umn(mas,k);
    cout << "2 v stepeni " << i << " ravno ";
    for(int j=k;j>=0;j--) cout<<mas[j];
    cout<<endl;
}
getch();
return 0;
}
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
20.02.2009, 14:56 #3
Можно использовать длиииинный-предлинный int.
voff4igg
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
21.02.2009, 19:01  [ТС] #4
Вобщем, длинный предлинный int сработал. Вместо long для достижения цели надо было использовать long long. В результате на фиг вобще нужен long и чем он отличается от int, вобще непонятно.
lex4051
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 3
21.02.2009, 19:41 #5
По поводу типов в C++.
char: 1 byte, -128..127, unsigned char: 0..255,
int: 4 byte(может быть другим, зависит от компилятора), -2^31..2^31 - 1
unsigned int: 4 byte, 0..2^32 - 1
long int (int можно не указывать): 4 byte, -2^31..2^31 - 1
unsigned long int: 4 byte, 0..2^32 - 1
short int (int можно не указывать): 2 byte, -2^15..2^15 - 1
unsigned short int: 2 byte, 0..2^16 - 1
long long: 8 byte, -2^63..2^63 - 1
unsigned long long: 8 byte, 0..2^64 - 1

во всех типах, где не указано signed или unsigned будет signed.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2009, 19:41
Привет! Вот еще темы с ответами:

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

Класс "Массив длинных целых чисел" - C++
1. Создать класс, содержащий динамический массив конечного размера. Тип массива - Массив длинных целых чисел. Класс должен содержать...

Вывод чисел на консоль - C++
Вообщем проблема такая: нужно вывести чиста на консоль X и Y соответственно. Micrsoft V C# генерирует ошибку FormatExeption. Вопрос как...

Найти и вывести на консоль минимальный элемент введённого с клавиатуры массива целых чисел - C++
Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.


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

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

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