[C++] Problem z dodawaniem
Ostatnio zmodyfikowano 2012-03-22 19:05
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: #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ć |
|
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ą. |
|
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" ?? |
|
RazzorFlame |
» 2012-03-20 20:32:10 |
|
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 |
|
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ć.
|
|
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. |
|
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... |
|
« 1 » 2 3 |