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

Сложение столбиков двух массивов чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Книги http://www.cyberforum.ru/cpp-beginners/thread814339.html
Здравствуйте. Подскажите пожалуйста хорошие книги по работе с интернет. Хочу немного побаловаться, до этого дела вообще не имел с этим => лучше попроще уровень чтобы понять что к чему. Спасибо! Конкретных задач и целей - нет.
C++ Форматирование строк. cout Нужно задать формат строки, чтобы выводились первые три символа. я делал так: #include <iostream.h> #include <iomanip.h> #define S "Hello, world!" main() { cout<<S.length(3); getch(); return 0; http://www.cyberforum.ru/cpp-beginners/thread814324.html
C++ Сложение больших чисел (длинная арифметика)
Есть две строки string с числами, не получается сделать их суммирование с помощь, не могу понять как сделать, помогите, пожалуйста. Вот, что я написал: #include <stdlib.h> #include <iostream> #include <string> using namespace std; class bigint {
C++ Запись в файл
Сформировать файл "ЕXP.txt", содержащий сведения об экспорте товаров такого образца: наименование, страна, объем поставок и стоимость поставок. Переписать в файл "MaxExp.txt" названия стран, экспорт в которых превышает 10 наименований, и общую стоимость таких поставок.
C++ Через какое время корабль прибудет в порт назначения? http://www.cyberforum.ru/cpp-beginners/thread814287.html
Подскажите пожалуйста Корабль должен преодолеть 3000 км. В первый день он прошел 200 км. Каждый следующий день он будет проходить на 5% больше, чем в предыдущий. Через какое время он прибудет в порт назначения?
C++ Удаление указателя на объект класса Что-то ни как не могу разобраться, где у меня ошибка?! Ниже приведен фрагмент кода: //... shapes *ptr=0; //ptr - указатель базового типа, на объект производного класса (к примеру, ромба) //... ptr=new rhomb; //ромб - объект производного класса rhomb от базового класса shapes //... delete ptr; //удаление объекта (ромба) //... подробнее

Показать сообщение отдельно
PlayaRC
5 / 5 / 0
Регистрация: 10.03.2012
Сообщений: 121
21.03.2013, 22:25  [ТС]     Сложение столбиков двух массивов чисел
Цитата Сообщение от UnsKneD Посмотреть сообщение
PlayaRC, ой, точно же)
а ты функции правильные размеры массивов передаёшь?
вот весь код, вроде правильные

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
 
class bigint
{
    int a[256], b[256], c[256], f[256], back_a[256];
    int s, len_a, len_b, max_len;
 
public:
    bigint(int [], int [], int, int);
    void show();
    void sum();
    void minus();
};
 
bigint::bigint(int a[], int b[], int len_a, int len_b)
{
    s=0;
 
    bigint::len_a = len_a;
    bigint::len_b = len_b;
 
    int k;
 
    for(int i=0; i<len_a; i++)
    {
        bigint::a[i]=a[i];
    }
    for(int i=0; i<len_a/2; i++)
    {
        k=bigint::a[i];
        bigint::a[i]=bigint::a[len_a-i-1];
        bigint::a[len_a-i-1]=k;
    }
 
    for(int i=0; i<len_b; i++)
    {
        bigint::b[i]=b[i];
    }
    for(int i=0; i<len_b/2; i++)
    {
        k=bigint::b[i];
        bigint::b[i]=bigint::b[len_b-i-1];
        bigint::b[len_b-i-1]=k;
    }
 
    if(len_a<len_b)
    {
        max_len = len_b;
        for(int i=0; i<len_b-len_a; i++)
        {
            bigint::a[len_a+i]=0;
        }
    }
    if(len_b<len_a)
    {
        max_len = len_a;
        for(int i=0; i<len_a-len_b; i++)
        {
            bigint::b[len_b+i]=0;
        }
    }
}
 
void bigint::show()
{
    cout<<"Первое число = ";
    for(int i=max_len-1; i>=0; i--)
        cout<<a[i];
    cout<<", размером в "<<len_a<<" символов"<<endl;
 
    cout<<"Второе число = ";
    for(int i=max_len-1; i>=0; i--)
        cout<<b[i];
    cout<<", размером в "<<len_b<<" символов"<<endl;
    cout<<"Сумма = ";
    for(int i=max_len-1; i>=0; i--)
        cout<<c[i];
    cout<<endl<<"Разница = ";
    for(int i=max_len-1; i>=0; i--)
        cout<<f[i];
}
 
void bigint::sum()
{
    for(int i=0; i<max_len; i++)
    {
        back_a[i]=a[i];
    }
    int i, k;
    for(k=0; k<max_len; k++)
        c[k]=0;
    for(i=0; i<max_len; i++)
    {
        s=0;
        if(a[i]+b[i]>=10)
            s=1;
        c[i]=(a[i]+b[i])%10;
        a[i+1]+=s;
    }
}
 
void bigint::minus()
{
    int i, k;
    for(k=0; k<max_len; k++)
        f[k]=0;
    for(i=0; i<max_len; i++)
    {
        s=0;
        if(back_a[i]<b[i])
        {
            back_a[i]+=10;
            s=1;
        }
        f[i]=back_a[i]-b[i];
        back_a[i+1]-=s;
    }
 
}
 
int main()
{
    setlocale(0, "rus");
 
    int n=256;
    int *a = new int[n];
    int *b = new int[n];
    char *buff=new char[n];
 
    //int a[8]={4,7,3,8,5,7,3,8};
    //int b[5]={6,5,2,7,4};
    cout<<"Введите первое число: ";
    cin.sync();
    cin.getline(buff,n);
    int a_len=strlen(buff);
    for(int i=0;i<a_len;i++)
    {
        a[i]=buff[i]-48;
        buff[i]=0;
    }
 
    cout<<"Введите второе число: ";
    cin.sync();
    cin.getline(buff,n);
    int b_len=strlen(buff);
    for(int i=0;i<b_len;i++)
    {
        b[i]=buff[i]-48;
        buff[i]=0;
    }
 
    bigint str(a, b, a_len, b_len);
    str.sum();
    str.minus();
    str.show();
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru