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

Длинная арифметика - C++

Восстановить пароль Регистрация
 
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
14.06.2014, 13:22     Длинная арифметика #1
Помогите реализовать длинную арифметику
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
int main(){
    int a[100000];
    string s;
    cin >> s;
    int h = s.length();
    for (int i = 0; i < s.length(); i++){
        a[i] = s[h]; h--;
    }
    if (a[0] != 9){ a[0] = a[0] + 1; }
    else { a[0] = 0; a[1] = a[1] + 1; }
    for (int j = 0; j < a[s.length()]; j++) {cout << a[j];}
    return 0;
 
}
p/s без использывания вектора или классов...

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
using namespace std;
int main(){
    int a[100000];
    string s;
    cin >> s;
    int h = s.length();
    for (int i = 0; i < s.length(); i++){
        a[i] = s[h]; h--;
    }
    if (a[0] != 9){ a[0] = a[0] + 1; }
    else for (int p = 0; p < a[s.length()]; p++){
 
        if (a[p] == 9){
            a[p] == 0; a[p + 1] = a[p + 1] + 1;
        }
        else break;
    }
    for (int j = 0; j < a[s.length()]; j++) {cout << a[j];}
    return 0;
 
}
Слегка изменил, но все равно код не рабочий!

Добавлено через 5 минут
Заполнил оставшуюся часть нулями, не помогло. Как видите я стараюсь =\
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
#include <iostream>
#include <string>
using namespace std;
int main(){
    int a[100000];
    string s;
    cin >> s;
    int h = s.length();
    for (int i = 0; i < s.length(); i++){
        a[i] = s[h]; h--;
    }
    for (int t = s.length(); t < 100000; t++){
        a[t] = 0;
    }
    if (a[0] != 9){ a[0] = a[0] + 1; }
    else for (int p = 0; p < a[s.length()]; p++){
 
        if (a[p] == 9){
            a[p] == 0; a[p + 1] = a[p + 1] + 1;
        }
        else break;
    }
    for (int j = 0; j < a[s.length()]; j++) {cout << a[j];}
    return 0;
 
}
Добавлено через 1 минуту
Простите, забыл сказать что делает программа. Нам дано число n. нам надо вывести цифру n+1

Добавлено через 1 час 20 минут
Совсем никто не знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 13:22     Длинная арифметика
Посмотрите здесь:

Длинная арифметика C++
C++ Длинная арифметика
C++ Длинная арифметика
C++ Длинная арифметика
C++ Длинная арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.06.2014, 21:55  [ТС]     Длинная арифметика #2
Совсем никто? Мда, я ожидал большего от киберфорума
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
17.06.2014, 22:10     Длинная арифметика #3
по идее твоя программа должна падать с вердиктом runtime error. так ли это?
nmcf
4283 / 3714 / 1248
Регистрация: 14.04.2014
Сообщений: 14,522
17.06.2014, 22:11     Длинная арифметика #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int l = s.length();
int x = 1;
for(int p = 0; p < l; p++)
{
    x += a[p];
    if (x > 9)
    {
        a[p] = x - 10;
        x = 1;
    }
    else
    {
        a[p] = x;
        x = 0;
        break;
    }
}
if(x == 1)
{
    a[l] = 1;
    l++;
}
for(int i = l - 1; i >= 0; i++) { cout << a[i]; }
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
17.06.2014, 22:20     Длинная арифметика #5
C++ (Qt)
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
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
int a[111111];
 
int main()
{
    string s;
    getline(cin, s);
    int n = s.length();
    for(int i = 0; i < n; i++)
        a[i] = (int)(s[i] - '0');
 
    int add = 1;
    for(int i = n - 1; i >= 0; i--)
    {
        int cur = a[i] + add;
        if(cur <= 9)
        {
            a[i] = cur;
            add = 0;
        }
        else
        {
            a[i] = 0;
            add = 1;
        }
    }
 
    if(add == 1)
        printf("1");
    for(int i = 0; i < n; i++)
        printf("%d", a[i]);
    printf("\n");
    return 0;
}
Yandex
Объявления
17.06.2014, 22:20     Длинная арифметика
Ответ Создать тему
Опции темы

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