Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Problem z dodawaniem

Ostatnio zmodyfikowano 2012-03-22 19:05
Autor Wiadomość
jkk1
Temat założony przez niniejszego użytkownika
[C++] Problem z dodawaniem
» 2012-03-20 20:17:46
Witam!
Gdzie jest błąd.
Zadanie:
Opracuj program wczytujący ze standardowego wejścia dwie liczby, oblicza ich sumę, którą zapisuje do
standardowego wyjścia.
Wejście
W pierwszym wierszu zapisano liczbę do 200 cyfr. W drugim wierszu zapisano drugą liczbę do 200 cyfr.
Wyjście
Na wyjściu zapisano sumę wczytanych liczb

Przykład
Dla danych wejściowych:
123
232
poprawnym wynikiem jest:
355

Teoretycznie to co już stworzyłem działa według schematu, ale program sprawdzający na stronie szkoły daje 40% i wywala błąd
dod1.in OK 0.000
dod2.in OK 0.000
dod3.in OK 0.000
dod4.in OK 0.000
dod5.in Błędna odpowiedź 0.000
dod6.in Błędna odpowiedź 0.000
dod7.in Błędna odpowiedź 0.000
dod8.in Błędna odpowiedź 0.000
dod9.in Błędna odpowiedź 0.000
dod10.in Błędna odpowiedź 0.000

Program:
C/C++
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int a, b, p;
int main()
{
    scanf( "%d", & a );
    scanf( "%d", & b );
    p = a + b;
    cout << p << endl;
    cin.ignore();
    getchar();
    return 0;
}

Program w trakcie sprawdzania działa dobrze na małych liczbach o równej ilości znaków, przy różnej ilości znaków wyświetla cuda, a czasem nawet suma jest ujemna :).
Proszę o pomoc, zapewne cały myk leży w tym że z założenia mają to być liczby do 200 cyfr, tylko jak to zapisać
P-52986
jsc
» 2012-03-20 20:22:35
Masz złe typy zmiennych:
w C++ nie istnieje typ, który natywnie pomieści liczbę (10 ^ 201) - 1.

Żeby coś takiego zrobić musisz zapisać te liczby w stringach i dodać je pod kreską.
P-52988
jkk1
Temat założony przez niniejszego użytkownika
» 2012-03-20 20:27:51
mógłbyś mi pomóc lub nakierować gdzie szukać info o kompilacji "string'ów" ??
P-52993
RazzorFlame
» 2012-03-20 20:32:10
<megafacepalm> Chodzby tu http://cpp0x.pl/kursy/Kurs-C++/Biblioteka-string/319.
Jeśli jesteś tu nowy to sory za facepalma.
P-52994
jkk1
Temat założony przez niniejszego użytkownika
» 2012-03-20 21:00:04
ni chusteczki nie rozumiem, poza tym ta lekcja chyba niewiele ma wspólnego z moim problemem
P-53003
akwes
» 2012-03-20 21:25:32
Możesz wczytać liczbę jako tekst (inaczej wczytać nie możesz, bo przekroczysz zasięg). Potem wyżej ktoś Ci napisał że dodajesz liczby jak w słupku...

Liczba: 1234...
Liczba: 2345...
I teraz literka po literce...

1 2 3 4...
2 3 4 5...
----------
3 5 8 9...

a jak Ci gdzieś wyjdzie ponad 9 to pomyśl co z tym zrobić.
P-53005
jsc
» 2012-03-20 21:54:32
Do słupków warto wczytywać od razu bloki 4 cyfrowe, dzięki czemu można bez przekraczania liczyć szybciej.
P-53007
npHard
» 2012-03-21 12:58:41
Innymi słowy musisz sam zaimplementować dodawanie. Liczby, które wczytujesz mają do 200 cyfr. Nie ma szans żeby zrobić obliczenia na tak długich liczbach korzystając z standardowych intów. Nawet gdybyś wziął long long int, który może mieć 128 bitów to mógłbyś zapisać do takiej zmiennej liczbę bez znaku mniejszą niż 2 do 128 i nawet wtedy będzie to góra kilkanaście cyfr... Pozostaje wczytać 200 znakową liczbę do tablicy charów a potem ręcznie dodawać tak jakbyś to robił na kartce...
P-53027
« 1 » 2 3
  Strona 1 z 3 Następna strona