Я получаю ошибку шины в своем коде. С помощью этого кода я пытаюсь преобразовать числа в слова, но я знаю, что в моей логике есть недостаток. Но до этого, когда я компилирую и запускаю этот код с помощью 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;
}
Какая строка кода вызывает ошибку шины? Запуск его в отладчике должен показать вам, какой именно оператор вызывает ошибку. – Crashworks
Добро пожаловать в StackOverflow. Когда вы пишете слова «ошибка», очень важно, чтобы ** следующее следующее **, которое вы пишете, является ** точной ** ошибкой, которую вы получаете, включая сообщение об ошибке, которое вы видите. Мы не можем видеть ваш экран здесь, и ожидаем, что каждый попытается скомпилировать/запустить ваш код, чтобы узнать, что вы просите, очень невнимателен. Если вам нужна помощь здесь, вы должны предоставить информацию, которая позволит нам вам помочь. Пожалуйста, уделите несколько минут обзору [FAQ] (http://stackoverflow.com/faq), особенно о том, как задавать вопросы здесь. Благодарю. :) –
Первое, что вам нужно сделать, когда ваши программы выходят из строя (неважно, что такое авария), - это запустить его в отладчике. Это поможет вам определить местоположение аварии, а также позволить вам просматривать переменные, чтобы увидеть, что могло бы вызвать крах. –