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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.80
Argos
1 / 1 / 0
Регистрация: 14.01.2011
Сообщений: 82
#1

itoa - C++

01.04.2011, 13:08. Просмотров 7079. Ответов 8
Метки нет (Все метки)

Почему Itoa (ltoa, ultoa) переводит неправильно при n=299999?
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
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
int main()
{
    int n;
    scanf("%i",&n);
    long long int _2=1,_3=1,_4=1; 
    for(int i=0;i<n;i++)
    {
        _2=_2*2;
        _3=_3*3;
        _4=_4*4;
    }
    long long int K=1+_2+_3+_4;
    printf("%I64d\n",K);
    char M[600000]={NULL}; 
    ultoa(K,M,10);
    printf("%s",M);
    int D=strlen(M);
    int Count=0;
    for(int i=0;i<D;i++)
    {
        if(M[i]=='0') Count++;
    }
    printf("%i",Count);
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 13:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос itoa (C++):

Itoa - C++
Привет, столкнулся с проблемой что компилятор видит ошибку в itoa and strlen, подключал все возможные библиотеки - не помогло, знает кто...

itoa(); - C++
вопрос!!! вводится массив элементов типа unsigned char двоичным числом, т.е только 0 и 1... как перевести мое вводимое число в...

Не работает itoa - C++
Добрый день ! Подскажите пожалуйста , почему не работает itoa Вроде все подключил. http://ideone.com/yTSISu #include...

Itoa варианты - C++
НА этапе компиляции ошибка в строке itoa() Выдает что то типа: Ошибка 1 error C4996: 'itoa': The POSIX name for this item is...

Itoa И String - C++
Вопрос как подружить String строку с itoa а вводить доп переменные для хранение не хочется слышал что есть метод класса которую...

дополнение к itoa() - C++
Как всем известно, http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ это функция, с помощью которой можно переводить числа с...

8
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 13:35 #2
Цитата Сообщение от Argos Посмотреть сообщение
long long int _2=1,_3=1,_4=1;
Не делайте так.
Цитата Сообщение от Argos Посмотреть сообщение
char M[600000]={NULL};
Респект тебе.

Цитата Сообщение от Argos Посмотреть сообщение
переводит неправильно при n=299999?
C++
1
for(int i=0;i<n;i++) { _2=_2*2; _3=_3*3; _4=_4*4; }
2^299999 не влезает в 64 битное целое. Ну никак. Даже при n=64 уже неправильно будет.
Гы-гы.
Про умножение на 3 и 4 я просто умолчу, оК?
0
Argos
1 / 1 / 0
Регистрация: 14.01.2011
Сообщений: 82
01.04.2011, 13:41  [ТС] #3
[QUOTE=Argos;1509778]
C++
1
long long int C;
тоже самое что и
C++
1
__int64 C;
2^299999 не влезает в 64 битное целое. Ну никак. Даже при n=64 уже неправильно будет.
Пусть возводит неправильно.
Но почему itoa не правильно переводит?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 14:28 #4
Цитата Сообщение от Argos Посмотреть сообщение
почему itoa не правильно переводит?
Как оно может переводить правильно, когда у тебя 5000 раз происходит переполнение?
Сперва напиши программу так, чтобы не было переполнения, а потом уже строку из числа делай.

Для тех, кто не в курсе: __int64 - 64 битное целое. Это всего 18 знаков. Не 600000, а Восемнадцать.

Ещё что-то не ясно?

Добавлено через 48 секунд

Не по теме:

Почему itoa не правильно переводит мусор?

0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
01.04.2011, 15:48 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void itoa(char str[256]){
int i;
 
char buf[80];
char url[256];
char yn[80];
int x=0;
i=0;
 
 
while(str[i]){
   _itoa_s( (unsigned char)str[i], buf, 2);    
    printf( "%s", buf );
 
        i++;
}
 
printf( "\n" );
 
 
 
}
Добавлено через 7 минут
Цитата Сообщение от Deviaphan Посмотреть сообщение
Почему itoa не правильно переводит мусор?
потому что мусор это мусор,а не число...

напишите такое
C++
1
2
int a;
cout<<a<<endl;
Скопируйте число и переведите.
потом вставьте это же число,и посмотрите на результат.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 16:03 #6
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
потому что мусор это мусор,а не число...
Это был риторический вопрос...
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
01.04.2011, 16:23 #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
Почему itoa не правильно переводит мусор?
Хм... Почему же неправильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main()
{
    int a;
    char str[20];
 
    std::cout << "Num = " << a << std::endl;
    std::cout << "Str = " << itoa(a, str, 10) << std::endl;
 
    return 0;
}
Вывод:

Код
Num = 13334369
Str = 13334369

Не по теме:

Это я дурака валяю, если что)))

0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.04.2011, 16:58 #8

Не по теме:

А теперь возведи 2 в степень 299999 и скажи, "почему itoa не правильно переводит?"


.)
0
silent_1991
01.04.2011, 17:01     itoa
  #9

Не по теме:

Deviaphan, не, воздержусь

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

не работает itoa - C++
void summa(int namber1_,int namber2_,unsigned short int des1,unsigned short int des2){ unsigned short int des_,des__; ...

unsigned itoa and atoi - C++
Всем привет! Подскажите мне кто знает функцию для реализации следующей задачи! Допустим есть текст, мне необходимо записать в матрицу...

Не работает функция itoa - C++
Здравствуйте, при решении задачи потребовалось перевести число в строку. Сначала я не знал, как это сделать, но потом наткнулся на...

функции atoi и itoa - C++
у меня есть параметр типа unsigned char* , мне нужно его перевести в тип int, добавить к нему какое-то целое число, напрмиер 10, и...


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

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

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