2012-05-01 3 views
1

Я пытаюсь поставить целое число в строку, разделяя его цифры и положить их по порядку в строке размера 3положить целое число в строку

это мой код:

char pont[4]; 
void convertInteger(int number){ 
int temp100=0; 
int temp10=0; 
int ascii100=0; 
int ascii10=0; 
if (number>=100) { 
    temp100=number%100; 
    ascii100=temp100; 
    pont[0]=ascii100+48; 
    number-=temp100*100; 
    temp10=number%10; 
    ascii10=temp10; 
    pont[1]=ascii10+48; 
    number-=temp10*10; 
    pont[2]=number+48; 
} 
if (number>=10) { 
    pont[0]=48; 
    temp10=number%10; 
    ascii10=temp10; 
    pont[1]=ascii10+48; 
    number-=temp10*10; 
    pont[2]=number+48; 
} 
else{ 
    pont[0]=48; 
    pont[1]=48; 
    pont[2]=number+48; 
} 
} 

вот пример того, что предполагают, чтобы случиться:

number = 356 

temp100 = 356%100 = 3 

ascii100 = 3 

pont[0]= ascii100 = 3 

temp100 = 3*100 = 300 

number = 365 - 300 = 56 

temp10 = 56%10 = 5 

ascii10 = 5 

pont[1]= ascii10 = 5 

temp10 = 5*10 = 50 

number = 56 - 50 = 6 

pont[2]=6 

я мог бы ошибку где-то и не видя его (не знаю почему) ... Это, предполагают, чтобы быть C++, кстати. Я мог бы быть смешивание это с языком C ... Заранее спасибо

+2

Вы новый пользователь? Есть ряд недостатков в вашем подходе, которые, возможно, не стоит перечислять, если это упражнение для новичков. – Alan

ответ

1

Вероятно ошибки, что вы с видом прямо сейчас:

pont[2]=number+48; 
} 
if (number>=10) { /* should be else if */ 
    pont[0]=48; 

Однако, я хотел бы предложить другой подход; вы не ухаживания, что значение выше 100, 10 и т. д., так как 0 по-прежнему полезное значение - если вы не возражаете против заполнения вашего ответа.

Рассмотрим следующие номера:

int hundreds = (number % 1000)/100; 
int tens = (number % 100)/10; 
int units = (number % 10); 
+1

Упоминание 'std :: stringstream' не пойдет amis Я думаю –

+0

@MooingDuck: сделайте это! Я не знаю C++ достаточно подробно, чтобы дать ответы _good_ C++ - хотя мне нравится думать, что я могу помочь новичкам переформатировать их код для упрощения обслуживания и чтения ... – sarnold

+1

Суть в том, что это 'stringstream ss; ss << число; string s = number.str(); 'Это довольно быстро и легко, как только вы его использовали. – chris

1

Все встроенные типы знают, как представить себя std::ostream. Они могут быть отформатированы для точности, преобразованный в различные представления, и т.д.

Это равномерная обработка позволяет писать встроенные модули на стандартный вывод:

#include <iostream> 

int main() 
{ 
    std::cout << 356 << std::endl; // outputting an integer 
    return 0; 
} 

Выход:

356 

Мы может поток до более чем cout. Существует стандартный класс называется std::ostringstream, который мы можем использовать так же, как cout, но это дает нам объект, который может быть преобразован в строку, а не отправлять все на стандартный вывод:

#include <sstream> 
#include <iostream> 

int main() 
{ 
    std::ostringstream oss; 
    oss << 356; 

    std::string number = oss.str(); // convert the stream to a string 

    std::cout << "Length: " << number.size() << std::endl; 
    std::cout << number << std::endl; // outputting a string 
    return 0; 
} 

Выход:

Length: 3 
356 
Смежные вопросы