Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
1

Длинная арифметика: по данному числу n найти n+1

14.06.2014, 13:22. Показов 1021. Ответов 4
Метки нет (Все метки)

Помогите реализовать длинную арифметику
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 минут
Совсем никто не знает?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2014, 13:22
Ответы с готовыми решениями:

Длинная арифметика: по заданному n найти n+1
Помогите плиз. Вводится n. Вывести N+1. Ограничений нет. Я понимаю что надо ввести массив и читать...

Длинная арифметика: найти 2^200
Помогите пожалуйста дорешать программу, она считает 2 в 200 степени, я коечто написал, но препод...

Длинная арифметика: найти сумму 1^2+2^2+3^2+...+n^2 при n > 20000
требуется написать задачу для подсчета суммы s=1^2+2^2+3^2+...+n^2 n&gt;=20000

Длинная арифметика (найти остаток при делении на 7)
Уважаемые программисты! Задача на длинную арифметику (никогда такую не решал, потому хочу...

4
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
17.06.2014, 21:55  [ТС] 2
Совсем никто? Мда, я ожидал большего от киберфорума
0
220 / 165 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.06.2014, 22:10 3
по идее твоя программа должна падать с вердиктом runtime error. так ли это?
0
7165 / 6140 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
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]; }
0
220 / 165 / 47
Регистрация: 17.07.2012
Сообщений: 587
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;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2014, 22:20
Помогаю со студенческими работами здесь

Длинная арифметика: найти частное и остаток от деления числа a на b
Даны два длинных числа a и b. Найти частное и остаток при делении числа a на b. Не могу...

Длинная арифметика. Найти количество делителей n-значного натурального числа (n > 20)
Найти количество делителей n-значного натурального числа (n &gt; 20). Помогите с задачей...

Найти максимальное из чисел полученных циклическим сдвигом (длинная арифметика)
Дано целое десятичное число N (1 &lt;= N &lt;= 2^100-1). Некто записал это число в двоичном формате и...

Длинная арифметика: найти первое простое число, которое больше 10^11
здравствуйте, помогите пожалуйста:( Найти первое простое число, которое больше 10^11


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru