В следующем коде я получаю ошибку шины

, я получаю ошибку шины в своем коде. С помощью этого кода я пытаюсь преобразовать числа в слова, но знаю, что в моей логике есть изъян. Но перед этим, когда я компилирую и запускаю этот код с помощью g++ в Mac, я пытаюсь заставить этот код работать как есть и получаю ошибку шины. Любая помощь будет оценена по достоинству.

Когда я запускаю код, я получаю следующий вывод. У меня есть отладочные сообщения, чтобы отследить, где возникает ошибка.

    Enter a number:1234
    main 1:numbers are:234
    Function1: Number is 234
    two
    two hundred 
    34Function2: Number is 34
    Function3: Number is 34
    Bus error: 10

#include <iostream>
#include <string>

using namespace std;
char *convert_number(int);

char *tens[]={"","ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
char *words[]={"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen", "eighteen","ninteen"};
char *place[]={"","hundred","thouands","million","billion","trillion"};


int main(int argc, char **argv)
{
int number,conv_num,places;
places=1;
char *string= new char[1000];
char *temp_string = new char[100];
cout<<"Enter a number:";
cin>>number;
string=" ";
if(number>=1000)
{
    while(number>=1)
    {
        conv_num = number % 1000;
        cout<<"main 1:numbers are:"<<conv_num<<endl;
        temp_string=convert_number(conv_num);
        string =strcat(string,temp_string);
        string =strcat(string," ");
        number = 0;// (number-conv_num)/1000;
        cout<<"main 2:numbers are:"<<endl;
        //cout<<conv_num<<":"<<number<<endl;
    }
}
else
{
    string = convert_number(number);
    string =strcat(string," ");
}
cout<<"Main: The word is :"<<string<<endl;
}

char *convert_number(int number)
{
int divisor;
char *word;
word = new char[100];
divisor=10;
cout<<"Function1: Number is "<<number<<endl;

if (number>=100)
{
    word =strcat(word,words[number/100]);
    cout<<word<<endl;
    word =strcat(word," hundred ");
    cout<<word<<endl;
    number=number%100;
    cout<<number;
}
cout<<"Function2: Number is "<<number<<endl;

if(number >=20)
{
 word=strcat(word,tens[number/10]);
 word =strcat(word," ");
 if(number%divisor>=1)
 {
    word=strcat(word,words[number%divisor]);    
    word =strcat(word," ");
  }
}
cout<<"Function3: Number is "<<number<<endl;

if(number<20) 
{ 
    word=strcat(word,words[number]);
    word =strcat(word," ");
}   
cout<<"Returning word:"<<word;          
return word;
}
6
задан Dangerous Scholar 24 May 2012 в 01:36
поделиться