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

исправить ошибку, симолы (с++) - C++

Восстановить пароль Регистрация
 
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 09:59     исправить ошибку, симолы (с++) #1
Здравствуйте!!! Иправьте ошибку в этом коде!!!
Код:
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
#include <iostream>
#define k 101
using namespace std;
 
int main()
{
        char ch1[k] ={0}, ch2[k] ={0}, ch3[k+1] ={0};
        int chlen1,chlen2;
        int n;
        int GG=0;
        cin >> n;
        int i=0;
        while(GG!=n)
        {
                cin >> ch1; cin >> ch2;
                chlen1=strlen(ch1);
                chlen2=strlen(ch2);
                for(i=0;i<k-1;i++)
                {
                        (i<chlen1)?ch1[k-2-i]=ch1[chlen1-1-i]:ch1[k-2-i]='0';
                        (i<chlen2)?ch2[k-2-i]=ch2[chlen2-1-i]:ch2[k-2-i]='0';
                }
                int n=0;
                i=0;
                while(n==0)
                {
                        n=(ch1[i] + ch2[i])-96;
                        i++;
                }
                if((int(n/10))!=0)
                        cout<<(int(n/10));
                (n-10>0)?n-=10:n=n;
                for(i=i;i<strlen(ch1);i++)
                {
                        n*=10;
                        n+=(int((ch1[i] + ch2[i])-96));
                        cout<<(int(n/10));
                        n-=(int((n/10)*10));
                }
                cout<<(n-(int(n/10))*10) << "\n";
                GG++;
        }
        return 0;
}
ошибка вот в таком тесте!
ввод:
1
123456788888 222222222
должен вывести:
123679011110
а выводит: 1236781011110
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2010, 09:59     исправить ошибку, симолы (с++)
Посмотрите здесь:

C++ Исправить ошибку
C++ исправить ошибку
исправить ошибку C++
исправить ошибку C++
Исправить ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 10:06     исправить ошибку, симолы (с++) #2
какое задание то? Думаете тут телепаты сидят? Или анализировать долго?
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 10:08  [ТС]     исправить ошибку, симолы (с++) #3
нужно посчитать сумму двух больших чисел))))

Добавлено через 48 секунд
до 10^100 степени
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 11:21     исправить ошибку, симолы (с++) #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
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstring>
#define k 101
 
using namespace std;
 
int main()
{
    char num1[k],num2[k],numr[k];
    cin>>num1>>num2;
    int bufi=0,rp=0;
    for (int i=strlen(num1)-1,j=strlen(num2)-1;i>=0||j>=0;i--,j--)
    {
        int okn;
        if (i>=0 && j>=0)
            okn=num1[i]+num2[j]+bufi-'0'*2;
        if (i>=0 && j<0)
            okn=num1[i]+bufi-'0';
        if (i<0 && j>=0)
            okn=num1[j]+bufi-'0';
        bufi=okn/10;
        okn%=10;
        numr[rp++]=char(okn+'0');
    }
    if (bufi!=0)
        numr[rp++]=bufi+'0';
    numr[rp]='\0';
    for (int i=strlen(numr)-1;i>=0;i--)
        cout<<numr[i];
    cout<<endl;
    return 0;
}
Надо же ещё буферизацию следующего разряда! Ведь когда столбиком считаем, ещё одну цифру запоминаем или выписываем! Тут всё работает.
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:31  [ТС]     исправить ошибку, симолы (с++) #5
МаксимМВ, работает классно, но не все высчитывает... Например введи мой тест в обратном порядке, если поменять переменные местами то результат не изменится же, а утебя почему та меняется... Вот посмотри.

ввести:222222222 123456788888
должен вывести: 123679011110
а утебя выводит: 222679011110

исправишь???
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 11:37     исправить ошибку, симолы (с++) #6
ой,а это я не проверял... Исправлю, постараюсь
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:39  [ТС]     исправить ошибку, симолы (с++) #7
Он же ведь второй тест не проходит!!!!
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 11:42     исправить ошибку, симолы (с++) #8
Обычная ошибка по невнимательности. Теперь её нет:
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
#include <iostream>
#include <cstring>
#define k 101
 
using namespace std;
 
int main()
{
    char num1[k],num2[k],numr[k];
    cin>>num1>>num2;
    int bufi=0,rp=0;
    for (int i=strlen(num1)-1,j=strlen(num2)-1;i>=0||j>=0;i--,j--)
    {
        int okn;
        if (i>=0 && j>=0)
            okn=num1[i]+num2[j]+bufi-'0'*2;
        if (i>=0 && j<0)
            okn=num1[i]+bufi-'0';
        if (i<0 && j>=0)
            okn=num2[j]+bufi-'0'; 
        bufi=okn/10;
        okn%=10;
        numr[rp++]=char(okn+'0');
    }
    if (bufi!=0)
        numr[rp++]=bufi+'0';
    numr[rp]='\0';
    for (int i=strlen(numr)-1;i>=0;i--)
        cout<<numr[i];
    cout<<endl;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2010, 11:46     исправить ошибку, симолы (с++)
Еще ссылки по теме:

исправить ошибку C++
Исправить ошибку C++
Исправить ошибку C++

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

Или воспользуйтесь поиском по форуму:
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:46  [ТС]     исправить ошибку, симолы (с++) #9
МаксимМВ, ОГРОМНОЕ СПАСИБО!!!! ДВА ДНЯ УБИЛ НА ЭТУ ЗАДАЧУ!!!!
Yandex
Объявления
28.11.2010, 11:46     исправить ошибку, симолы (с++)
Ответ Создать тему
Опции темы

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