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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Argos
1 / 1 / 0
Регистрация: 14.01.2011
Сообщений: 82
#1

Сложение числа через классы - C++

22.02.2012, 13:29. Просмотров 518. Ответов 2
Метки нет (Все метки)

Надо сложить два больших числа.
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
#include "iostream"
#include "stdio.h"
#include "conio.h"
using namespace std;
 
int L=0;
 
class Fib
{
    int *M;
public:
    Fib() 
    {
        M=new int [100000];
        memset(M,NULL,sizeof M);
    }
    ~Fib()
    {
        delete [] M;
    }
    void show()
    {
        for(int i=L;i>=0;i--)
            cout << M[i];
        cout << "\n";
    }
    void Pr()
    {
        printf("%i",M[0]);
    }
    void pr(int n)
    {
        M[0]=n;
    }
    Fib operator + (Fib O)
    {
        int K=0;
        for(int i=0;i<=L;i++)
        {
            O.M[i]=O.M[i]+M[i]+K;
            if(O.M[L]>=10) L++;
            if(O.M[i]>=10) {O.M[i]-=10; K=1;}
            else K=0;
        }
        return O;
    }
};
 
int main()
{
    Fib A, B, C;
    A.pr(1);
    B.pr(1);
    C=A+B;
    C.show();
    getch();
}
Не могу понять почему находится мусор в С
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сложение числа через классы (C++):

Сложение 2-х чисел, классы... - C++
Нужно создать ф-цию вне класса, функция должна складывать 2 числа. Помогите, пожалуйста правильно оформить функцию. Вот что получилось,...

Сложение матриц(классы) - C++
Всем привет. Есть задание сделать сложение матриц, но при этом определив класс вещ-ых матриц. вот что получилось. ТОлько вопрос. как это...

Классы, конструктор, сложение двух матриц - C++
Здравствуйте вот код: #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; class Matrix {

Простые Классы (сложение чисел в восьмеричной системе) - C++
Разработать класс, содержащий два члена (назовем их first, second), и следующие методы: – ввод с клавиатуры Read; – вывод на экран...

Классы. Вывести значение числа цифр в дробной части числа - C++
#include &quot;stdafx.h&quot; #include &lt;locale.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; class Chislo { ...

Исключить из числа цифры, стоящие между первой и последней цифрой числа. Использовать классы - C++
Исключить из числа цифры, стоящие между первой и последней цифрой числа #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Luke
39 / 39 / 1
Регистрация: 21.02.2012
Сообщений: 95
22.02.2012, 13:37 #2
Argos, первое что надо сделать это во всех циклах заменить <= на < и >= на >.
иначе выйдя за границы в ту или иную сторону можно черпнуть мусор из памяти

второе переменная L она равна 0
int L=0;
Добавлено через 2 минуты
Цитата Сообщение от Argos Посмотреть сообщение
for(int i=0;i<=L;i++)
* * * * * * * * {
* * * * * * * * * * * * O.M[i]=O.M[i]+M[i]+K;
* * * * * * * * * * * * if(O.M[L]>=10) L++;
* * * * * * * * * * * * if(O.M[i]>=10) {O.M[i]-=10; K=1;}
* * * * * * * * * * * * else K=0;
* * * * * * * * }
тут поясни логику. цикл должен выполняться пока i<=L но L у тебя ==0 и может увеличится неожиданно в теле цикла.

правильно будет задать L значение длины и выполнять цикл так

C++
1
for(int i=0;i<L;i++)
без изменения L внутри цикла
0
Argos
1 / 1 / 0
Регистрация: 14.01.2011
Сообщений: 82
22.02.2012, 13:47  [ТС] #3
Цитата Сообщение от Luke Посмотреть сообщение
C++
1
2
3
4
5
6
7
for(int i=0;i<=L;i++)
* * * * * * * * {
* * * * * * * * * * * * O.M[i]=O.M[i]+M[i]+K;
* * * * * * * * * * * * if(O.M[L]>=10) L++;
* * * * * * * * * * * * if(O.M[i]>=10) {O.M[i]-=10; K=1;}
* * * * * * * * * * * * else K=0;
* * * * * * * * }
тут поясни логику. цикл должен выполняться пока i<L но L у тебя ==0 и может увеличится неожиданно в теле цикла.
Например 9+9=18
но у нас может в одной ячейки массива М находится число >=9 поэтому делаем L++ которая увеличивает количество ячеек. В итоге получаем в одной ячейки памяти 1 в другой 8

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int p=0;
int l=0;
int M1[1000]={NULL}, M2[1000]={NULL},M3[1000]={NULL};
for(int i=0;i<=l;i++)
{
    M3[i]=p+M2[i]+M1[i];
    if(M3[l]>=10)
        l++;
    if(M3[i]>=10)
    {
        M3[i]-=10;
        p=1;
    }
    else
            p=0;
}
Код работает. Проверял
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2012, 13:47
Привет! Вот еще темы с ответами:

Операция вычитания через сложение - C++
Доброго времени суток, форумчане! Помогите с задачей, пожалуйста! заданы: 1)if - then - else //тут всё понятно 2)рекурсия...

Сложение дробей через структуру - C++
Робота с файлами. C++.Пользователь читает файл и меняет его он сохраняеца в другом файле и наоборот!!!! 2) Слажывание дробей через...

С++ сложение цифр числа - C++
Здание такое : С клавиатуры вводится целое четырехзначное число. Найти сумму всех четных цифр данного числа. Просто сложить...

умножение через сложение рекурсией и без рекурсии на с++ - C++
ПОмогите плиззз!!!


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru