Почему не работает

Жалоба
Вопрос

#include<iostream>
using namespace std;
class longtype{
     int *longt;
     int length;
     public:
            longtype(int k){
                         longt=new int[k];
                         int i;
                         for(i=0;i<k;i++){
                                          longt[i]=0;
                                          }
                         length=k;
                         }
            longtype(int k,int *t){
                         longt=new int [k];
                         int i;
                         for(i=k-1;i>-1;i--){
                                 longt[k-i-1]=t[i];
                                 }
                         length=k;
                                 }        
            longtype operator+(longtype g){
                     int i;
                     int u;
                     int max=length>g.length?length:g.length;
                     longtype y(max+1);
                     for(i=0;i<max;i++){
                                          u=(y.longt[i])+(i>length-1?0:longt[i])+(i>g.length-1?0:g.longt[i]);
                               y.longt[i]=(u)%10;
                               y.longt[i+1]=(u)/10;
                               }
                     if(y.longt[max]==0){
                                         y.length=max;
                                         }
                     return y;
                     }
            longtype operator=(longtype g){
                     int i;
                     delete [] longt;
                     longt=new int[g.length];
                     for(i=0;i<g.length;i++){
                               longt[i]=g.longt[i];
                               }
                     length=g.length;
                     return *this;
                     }              
            void show(){
                 int i;
                 for(i=length-1;i>-1;i--){
                                       cout<<longt[i]<<" ";
                                       }
                                       }
            ~longtype(){
                        delete []longt;
                        }
            };
int main(void){
   int g[]={9,6};
   longtype h(2,g);
   int m[]={8};
   longtype n(1,m);
   h.show();
   n=h;
   h.show();
   cout<<endl;
   longtype j(5);
   cin.get();
   return 0;
}

Выводит 9 6 754504046 740443543646

В процессе 1
программирование 4 года назад 1 Ответов 166 Просмотров 0

Ответов ( 1 )

    0
    8 лет назад
    Ответить

    "754504046 740443543646" - обычно выводит что-то подобное (никак не похожее на нужный результат), то значит вы где-то указателем залезли за границы массива (или строки). Проверьте границы циклов и везде, где обращаетесь к массивам.

Ваш ответ