![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 18 Dołączył: 6.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam następujący problem.
Do szkoły potrzebuję napisać program w C. Ponieważ nie chcę gotowców zabrałem się za to sam, nie programuję w C w sumie w ogóle więc zaczęły się schody i teraz potrzebuję pomocy. Zatem do rzeczy Na wejście wczytywane są jakieś zestawy liczb. Każdy zestaw składa się z dwóch liczb całkowitych dodatnich, z których każda może mieć maksymalnie 1000 cyfr (czyli wielgachne liczby). Na wyjście program ma zwrócić różnicę tych dwóch liczb i sume, w nowej linii (oczywiście dla każdego zestawu). Przykład działania: Wejście 100 200 10 3 20 30 Wyjście -100 300 7 13 -10 50 No i udało mi się skonstruować coś takiego:
No i wszystko ładnie pięknie działa, ale jest jeden problem - otrzymuję złe wyniki w kilku przypadkach. 1. Jeśli zmienia się ilość cyfr wyniku w stosunku do ilości cyfr w liczbie np: 1+99 powinno dać 100, a daje 00. Przy odejmowaniu z kolei 100-1 powinno dać 99 a daje 099. 2. Nie mogę sobie poradzić z odejmowaniem jeśli wynikiem jest liczba ujemna, zwraca mi wtedy jakiś dziwny wynik na plusie. 3. Jest związane z 1 i 2, nie mam pojęcia jak przekazać na początku tablicy znak - lub dodatkową jedynkę w przypadku takim jak podałem w pkt 1. Jeśli jest tu ktoś kto umiałby mi pomóc to byłbym wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) P.S. Oczywiście ten kod php to tylko tak, żeby pokolorowało jakoś, bo dla c tu nie ma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował drzalek 8.03.2009, 22:58:42 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A próbowałeś: http://www.codeproject.com/KB/cpp/CppIntegerClass.aspx
? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 170 Pomógł: 18 Dołączył: 6.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie próbowałem, to jest dla mnie jeszcze bardziej skomplikowane, wiem, że wystarczy ustawić np "-" w przypadku liczby ujemnej na początku tablicy, podobnie ustawić 1 w przypadku dodawania, gdy zmienia się ilość cyfr i zwrócić wskaźnik na ostatni wstawiony znak.
"Zwrócić wskaźnik" to jest dla mnie abstrakcja, w ogóle nie mogę zajarzyć o co chodzi. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Hmm, dodawanie w slupku to podstawowka (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Cytat Nie mogę sobie poradzić z odejmowaniem jeśli wynikiem jest liczba ujemna, zwraca mi wtedy jakiś dziwny wynik na plusie. Wyrownaj dlugosc liczb, coby dobrze ci sie na nich operowalo (od cyfr jednosci do najwyzszych). Przy odejmowaniu sprawdz ktora jest wieksza, i odejmij wieksza od mniejszej, i ustal znak jaki bedzie miala roznica. Cytat Jeśli zmienia się ilość cyfr wyniku w stosunku do ilości cyfr w liczbie np: 1+99 powinno dać 100, a daje 00. Przy odejmowaniu z kolei 100-1 powinno dać 99 a daje 099. Dodawanie 2ch liczb moze dac ci liczbe max o 1 cyfre dluzsza (jesli przeniesienei z najwyzszej pozycji jest 1 to sie liczba wydluzy, jak 0 to nie) - przygotuj sie na to wydluzajac tablice/stringa, a odejmowanie - dowolnie krotsza np: 9999 - 9993 = 0006 => 6. Wydaje mi sie ze wystarczy przejrzec wynik i uciac go od lewej do pierwszego niezera. Cytat Jest związane z 1 i 2, nie mam pojęcia jak przekazać na początku tablicy znak - lub dodatkową jedynkę w przypadku takim jak podałem w pkt 1. Albo utworz strukture Liczba: {wartosc, znak}, albo zainteresuj sie formatem U2 np. http://portalwiedzy.onet.pl/89634,,,,uzupe...woch,haslo.html (tzn poszukaj lepszych linkow) - obsluguje latwo dodawanie, odejmowanie, liczby ujemne. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:15 |