Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 12
1

Sum of two very long integers, using pointers

31.10.2015, 00:32. Показов 6347. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Your friend is the person who does not like any limitations in the life. And when you said to him that it is totally impossible to work with integer numbers bigger than 4 294 967 296 in C++ he blamed you in time-wasting during the university study.So to prove that you hadn't waste 2 months of your life studying C++ in university you have to solve this issue.
Your task is to write a program that which can add two integer numbers that are not more than 101000 to each other.
Your program have to implement void addVeryLongIntegers(char *a,char *b,char *c) function.
Note. The program have to use pointer.

Input:
First line contains a and b numbers that are not bigger that 101000

Output:
The sum of a and b.
Samples:

№ INPUT OUTPUT
1 5 5 10
2 222222222222222222222 111111111111111111111 333333333333333333333
3 4958439238923098349024 1 4958439238923098349025
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2015, 00:32
Ответы с готовыми решениями:

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в...

Не понятный undefined reference to `unsigned long long f<unsigned long long, void>
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename...

Чем различаются long long и long double?
long long или long double

Qt smart pointers vs std smart pointers
В каких случаях лучше использовать Q*Pointer, а в каких std::*_ptr, или с наследниками QObject...

18
6 / 6 / 4
Регистрация: 29.10.2015
Сообщений: 45
31.10.2015, 02:19 2
Here is an example:

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
#include <stdlib.h>
#include <iostream>
 
#define MAX_LEN 100
 
using namespace std;
 
void addVeryLongIntegers(char* a,char* b,char* c);
 
int main()
{
    char a[MAX_LEN];
    char b[MAX_LEN];
    char c[MAX_LEN];
 
    cin.getline(a, MAX_LEN);
    cin.getline(b, MAX_LEN);
    addVeryLongIntegers(a, b, c);
    cout << "RESULT> "<< c << endl;
    return 0;
}
 
void addVeryLongIntegers(char *a,char *b,char *c){
 
    char ch;
    int aa[MAX_LEN], bb[MAX_LEN], res[MAX_LEN], a_len, b_len, c_len, i, j;
 
    i=0;
    while(a[i]!='\0'){
        ch = a[i];
        aa[i]=atoi(&ch);
        i++;
    }
    a_len = i-1;
 
    i=0;
    while(b[i]!='\0'){
        ch = b[i];
        bb[i]=atoi(&ch);
        i++;
    }
    b_len = i-1;
 
 
    if (b_len>a_len){
        j=b_len;
        i=a_len;
    }else{
        j=a_len;
        i=b_len;
    }
 
    int dob = 0;
    int k = 0;
    int tmp;
 
    while(i>=0){
        tmp = b_len>a_len ? aa[i]+bb[j]+dob: aa[j]+bb[i]+dob;
        dob = tmp>9 ? 1:0;
        res[k]=tmp%10;
        k++;
        j--;
        i--;
 
    }
    while (j>=0){
        tmp = b_len>a_len ? bb[j]+dob: aa[j]+dob;
        dob = tmp>9 ? 1:0;
        res[k]=tmp%10;
        k++;
        j--;
    }
    if (dob > 0){
        res[k]=dob;
        k++;
    }
    c_len = k-1;
 
    i=0;
    k=c_len;
    while(k>=0){
        c[i]=res[k] + '0';
        i++;
        k--;
    }
    c[i]=0;
}
0
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 12
04.11.2015, 20:06  [ТС] 3
bizba, can not you my job until the end ???
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
04.11.2015, 20:12 4
warrior19,
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
#include<iostream>
#include<cstring>
#include<vector>
#include<iterator>
using namespace std;
int main(){
    char a[]="9999";
    char b[]="999";
    vector<char>ch;
    
 
    int l1=strlen(a);
    int l2=strlen(b);
    int sum=0,x=0,y=0;
    bool z=0;
 
    while(l2>=0){
        x=(int)(a[l1]-48);
        y=(int)(b[l2]-48);
            if(z==1){
              sum+=1;
              z=0;
            }
     
      sum+=x+y;
    if(sum>=10){
        sum-=10;
        z=1;
    }
    
    ch.insert(ch.begin(),(char)(sum+48));
    sum=0;
            l1--;
            l2--;       
    }
    if(l1!=-1){
        while(l1>=0){
            x=(int)(a[l1]-48);
            if(z==1){
                sum+=1;
                z=0;
            }
            sum+=x;
            if(sum>=10){
                sum-=10;
                z=1;
            }
    ch.insert(ch.begin(),(char)(sum+48));
    sum=0;
    l1--;           
        }
    }
 
    if(z==1)
    ch.insert(ch.begin(),'1');
    ch[ch.size()-1]='\0';
    for(int i=0;i<ch.size();i++)
    cout<<ch[i];    
    
 
    return 0;
}
Добавлено через 17 секунд
warrior19,
Like that?
0
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 12
04.11.2015, 20:16  [ТС] 5
anti-k, Yes. but I need with the correct answer, if not hard to do!
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
04.11.2015, 20:19 6
warrior19,
Give a +
I'll rewrite
0
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 12
04.11.2015, 20:52  [ТС] 7
anti-k, I will wait...
0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
04.11.2015, 22:30 8
warrior19,
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
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
#include<vector>
#include<iterator>
using namespace std;
char*input(char*ch) {
    char*temp = new char[100]();
    cout << "input number" << endl;
    cin.getline(temp, 99);
    ch = new char[strlen(temp) + 1];
    ch[strlen(temp)] = '\0';
    strcpy(ch, temp);
    delete[]temp;
    return ch;}
int main() {
    char* a = NULL;
    a=input(a);
    char* b = NULL;
    b=input(b);
 
    vector<char>ch;
 
 
    int l1 = strlen(a);
    int l2 = strlen(b);
    int sum = 0, x = 0, y = 0;
    bool z = 0;
 
    while (l2 >= 0) {
        x = (int)(a[l1] - 48);
        y = (int)(b[l2] - 48);
        if (z == 1) {
            sum += 1;
            z = 0;
        }
 
        sum += x + y;
        if (sum >= 10) {
            sum -= 10;
            z = 1;
        }
 
        ch.insert(ch.begin(), (char)(sum + 48));
        sum = 0;
        l1--;
        l2--;
    }
    if (l1 != -1) {
        while (l1 >= 0) {
            x = (int)(a[l1] - 48);
            if (z == 1) {
                sum += 1;
                z = 0;
            }
            sum += x;
            if (sum >= 10) {
                sum -= 10;
                z = 1;
            }
            ch.insert(ch.begin(), (char)(sum + 48));
            sum = 0;
            l1--;
        }
    }
 
    if (z == 1)
        ch.insert(ch.begin(), '1');
    ch[ch.size() - 1] = '\0';
    for (int i = 0; i<ch.size(); i++)
        cout << ch[i];
 
 
    return 0;
}
Now you can input nubers you need

Добавлено через 7 минут
warrior19, Thanks
1
0 / 0 / 0
Регистрация: 31.10.2015
Сообщений: 12
04.11.2015, 22:33  [ТС] 9
anti-k, You can not do without input number???
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2015, 22:38 10
warrior19, can you do anything by youself?
1
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
04.11.2015, 23:01 11
castaway,


Добавлено через 3 минуты
warrior19,
sure. Please explane then what do you really need.
Цитата Сообщение от warrior19 Посмотреть сообщение
Samples:
№ INPUT OUTPUT
1 5 5 10
2 222222222222222222222 111111111111111111111 333333333333333333333
3 4958439238923098349024 1 4958439238923098349025
That's only samples('Примеры'), I do really think that your teacher wont't insist on this exact numbers.

Добавлено через 4 минуты
warrior19, What do you mean without input number?
0
Kastaneda
04.11.2015, 23:01
  #12

Не по теме:

english experts are detected :D

0
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
04.11.2015, 23:05 13
Kastaneda,
так а шо делать?
0
castaway
04.11.2015, 23:17
  #14

Не по теме:

Kastaneda, я такой же эксперт в английском, как и в C++, т.е. просто.., "Значок C++ на груди у него, и больше не знают о нём ничего..."))

0
sourcerer
04.11.2015, 23:40
  #15

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
english experts are detected
А как надо было? "Do you can to do anything by yourself?" ))

0
Kastaneda
04.11.2015, 23:47
  #16

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
А как надо было? "Do you can to do anything by yourself?" ))
Да я так, к слову, не к конкретному сообщению. Мне кажется ТС тут самый expert, судя по странным can not :)
"Do you can to do anything by yourself
No, this is ill-formed sentence, it looks like castaway had written correctly.

0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
04.11.2015, 23:58 17
Kastaneda, а, ну да. Там если вопросительное слово вначале, то тогда правильно, типа такого:
What do you can to do by yourself?
Но смысл фразы, конечно, другой. Выходит, castaway прав. В вопросительных предложениях, вроде как, сказуемое на первом месте должно быть.

Добавлено через 2 минуты
Kastaneda, в общем, тут большая часть народу по-английски говорит как в этом видосе:



3
Kastaneda
05.11.2015, 00:00
  #18

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Kastaneda, в общем, тут большая часть народу по-английски говорит как в этом видосе:
Это я с англоязычным заказчиком в скайпе общаюсь, теперь я понимаю, что он чувствует :D

0
castaway
05.11.2015, 00:11     Sum of two very long integers, using pointers
  #19

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
А как надо было?
Думаю, Kastaneda имел в виду не совсем то что ты подумал. Я воспринял это как шутку, и как акцент на то, что кто-то может хоть как-то общаться на международном языке) Т.е. это была не претензия к написанному:)

gru74ik, видел этот видос пару лет назад) До сих пор веселит))

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2015, 00:11

При вводе n больше 1289 неправильно считает sum, если введу n=2000, то sum выводит вообще отрицательное, что не так?
program Project2; // Проверьте формулу: 1*2+2*3+...+n*(n+1)=(n*(n+1)*(n+2))/3 uses SysUtils; ...

Суммирование суммированного sum (sum)
Сделал запрос на выборку данных с суммированием количества, вот фрагмент: select Prod as...

Меняется ответ при приведении функции pow к unsigned long long
Тест: 50 50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

Нюансы синтаксиса: что означает запись typedef long long i64 ?
Что означает эта строчка? typedef long long i64; Как я понял, функция typedef позволяет...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru