class BigInt
{
private:
static const int max_length = 300;
int c;
int number[max_length];
int to_int(char symbol)
{
return (symbol >= '0' && symbol <= '9') ? (int)symbol - '0' : -1;
}
public:
BigInt(char* str)
{
c = strlen(str) - 1;
int pos = 0;
if (c > max_length)
{
cout << "Max length is " << max_length << "but your number has length"
<< c << endl;
return;
}
for (int i = c; i <= 0; i--)
{
number[pos] = to_int(str[i]);
pos++;
}
}
void printNumber(void)
{
for (int i = c; i >= 0; i--)
{
cout << number[i];
}
cout << "\n";
}
};
Есть конструктор, который принимает строку-число, цифры которого записывает в массив number. При выводе данного массива получаю почему-то рандомные значения.
int main(void)
{
char str[]="111111111";
BigInt test(str);
test.printNumber();
return 0;
}
for(int i = c;i<=0;i--)
Ну, т.е. пока i
не больше нуля, то...
Условие вы поставили неверное.
Я бы вообще переписал ваш код так:
class BigInt
{
private:
static const int max_length = 300;
int number[max_length];
unsigned int c;
static int to_int(char symbol)
{
if (symbol < '0' || symbol > '9') throw exception("Wrong input");
return symbol - '0';
}
public:
BigInt(const char * str)
{
c = strlen(str);
if (c > max_length) throw exception("Wrong length");
for(unsigned int i = 0; i < c; ++i)
{
number[i] = to_int(str[c-i-1]);
}
}
void printNumber(void)
{
for(int i = c-1; i >= 0; i--)
{
cout<<number[i];
}
cout<<"\n";
}
};
И еще - имя c
для переменной, которая должна что-то означать в классе - не годится. Это имя для локальной переменной цикла, например... но не для длины числа.
c = strlen(str) - 1;
Зачем вы вычитаете 1? Длина она и есть длина, не надо.
for(int i = c;i>=0;i--)
<=
допустим, что опечатка.
Да, не опечатка, а ошибка... =)
Как-то так:
BigInt(char * str){
c = strlen(str);
int pos=0;
if(c > max_length){
cout<<"Max length is "<<max_length<<"but your number has length"<<c<<endl;
return;
}
for(int i = 0; i < c; i++){
number[pos] = to_int(str[i]);
pos++;
}
}
void printNumber(void){
for(int i = 0; i < c; i++){
cout<<number[i]<<"\n";
}
cout<<"\n";
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В примере асинхронного tcp-сервера на бусте связывается функция (все это происходит в классе, наследующим enable_shared_from_this):