Форум программистов, компьютерный форум CyberForum.ru

Странная ошибка - C++

Восстановить пароль Регистрация
 
BaronShtolz
Сообщений: n/a
16.12.2012, 22:12     Странная ошибка #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef HUGEINTEGER_H
#define HUGEINTEGER_H
 
class HugeInteger
      {
                 public:
                        
                   HugeInteger();
                   ~HugeInteger() {};
                   
                   void Input();
                   void Output();
                   
                   void HugeInteger::operator =(HugeInteger B);
                   HugeInteger HugeInteger::operator +(HugeInteger B);
                 private:
                   int A[39];
      };
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "HugeInteger.h"
#include <iostream>
#include <locale.h>
#include <cstdlib>
 
 
using namespace std;
 
HugeInteger::HugeInteger()
     {
         int i;
         for (i=0;i<=39;i++)
          HugeInteger::A[i]=0;
     };
     
void HugeInteger::Output()
     {
         int i;
         for (i=0;i<40;i++)
         cout << HugeInteger::A[i]; 
         cout << endl;
     };
 
void HugeInteger::Input() 
     {
                char a[40]; int i,n;
                
                cout << "Ââåäèòå ÷èñëî " << endl;
                cin >>  a;
                n=strlen(a);
                for (i=0;i<n;i++)
                 A[40-n+i]=(int)a[i]-48;
     }; 
 
void HugeInteger::operator =(HugeInteger B)
      {
                          int i;
                          for (i=39;i>=0;i--)                                                               
                           HugeInteger::A[i]=B.A[i];
      };
                          
HugeInteger HugeInteger::operator +(HugeInteger B)
      {
                          HugeInteger C; int i; 
                          for (i=39;i>=0;i--)
                              {
                                    cout << B.A[39] << " ";
                                     C.A[i]=HugeInteger::A[i]+B.A[i];
                                      if (C.A[i]>9)
                                       {
                                                  if (i-1<0)
                                                    {
                                                         cout << "Âûõîä Г§Г* ïðåäåëû ГІГЁГЇГ* Г¤Г*Г*Г*ûõ" << endl;
                                                         break;
                                                    }
                                                  else
                                                    {
                                                         C.A[i]=C.A[i]/10;
                                                         C.A[i-1]+=1;
                                                    }
                                       } 
                              }
                              return C;
      };
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <locale.h>
#include "HugeInteger.h"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"RUS");
    HugeInteger A, B;
        
    A.Input();
    B.Input();
    
    A=B;
    
    A.Output();
    B.Output();
    
    system("PAUSE");
}
Не могу найти ошибку. После выполнения приравнивания в А записывается значение В, но кроме последней цифры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 22:12     Странная ошибка
Посмотрите здесь:

Builder 6 Странная ошибка C++
C++ Странная ошибка в программе
очень странная ошибка с++ C++
C++ Странная ошибка
C++ Странная(или не странная, незнаю) реакция на буквы, знаки операций
C++ Странная ошибка в коде
Странная ошибка (в дебаггере не выявляется) C++
C++ Странная ошибка (зависимость от cout)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.12.2012, 22:16     Странная ошибка #2
Цитата Сообщение от BaronShtolz Посмотреть сообщение
int A[39];
Цитата Сообщение от BaronShtolz Посмотреть сообщение
for (i=39;i>=0;i--)
HugeInteger::A[i]=B.A[i]
В 38 строчке ошибка. Тут получается выход за границу массива. Ничего хорошего от этого не получится
BaronShtolz
Сообщений: n/a
16.12.2012, 22:42     Странная ошибка #3
Cпасибо. Тему можно закрыть
Yandex
Объявления
16.12.2012, 22:42     Странная ошибка
Ответ Создать тему
Опции темы

Текущее время: 02:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru