59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
1

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

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

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int...

Исправить ошибку пожалуйста. В 55 строке выдает такую ошибку (expected declaration before '}' token)
В программе, после ввода не заполняет таблицу . #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

При считывании данных из файла дописываются лишние симолы
Здравствуйте. Пишу класс для работы с файлами на базе winapi. Столкнулся с проблемой. Описываю свои...

Исправить ошибку
Помогите исправить ошибку #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;cmath&gt; #define M_PI...

8
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 10:06 2
какое задание то? Думаете тут телепаты сидят? Или анализировать долго?
0
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 10:08  [ТС] 3
нужно посчитать сумму двух больших чисел))))

Добавлено через 48 секунд
до 10^100 степени
0
C/C++
93 / 93 / 18
Регистрация: 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;
}
Надо же ещё буферизацию следующего разряда! Ведь когда столбиком считаем, ещё одну цифру запоминаем или выписываем! Тут всё работает.
1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:31  [ТС] 5
МаксимМВ, работает классно, но не все высчитывает... Например введи мой тест в обратном порядке, если поменять переменные местами то результат не изменится же, а утебя почему та меняется... Вот посмотри.

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

исправишь???
0
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
28.11.2010, 11:37 6
ой,а это я не проверял... Исправлю, постараюсь
1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:39  [ТС] 7
Он же ведь второй тест не проходит!!!!
0
C/C++
93 / 93 / 18
Регистрация: 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;
}
1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
28.11.2010, 11:46  [ТС] 9
МаксимМВ, ОГРОМНОЕ СПАСИБО!!!! ДВА ДНЯ УБИЛ НА ЭТУ ЗАДАЧУ!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2010, 11:46
Помогаю со студенческими работами здесь

Исправить ошибку
Не компилится. Надо найти ошибку и поправить. #include &lt;stdio.h&gt; #include &lt;math.h&gt; #define E...

Исправить ошибку
Когда нажимаю &quot;n&quot; что бы вводить фамилии с клавиатуры, выбивает ошибку(краш консоли) Вот...

Исправить ошибку
вот фрагмент кода : int caseB (int k, int workers, int d) { int a; float b; for(k;...

Исправить ошибку C
#include &lt;stdio.h&gt; int get_length(int* arr, int size) { for (int i = 1; i &lt; size; i++) { ...


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

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

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