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:
<?php #include <stdio.h> #include<string.h> char* dodawanie(char liczba1[],char liczba2[], char suma[]) { suma[dlugosc]=0; while ((dlugosc--)>=0) { w=(liczba1[dlugosc]-'0')+(liczba2[dlugosc]-'0')+p; if(w>=10) { suma[dlugosc]=(w-10)+'0'; p=1; } else { suma[dlugosc]=w+'0'; p=0; } } return suma; } char* odejmowanie(char liczba1[],char liczba2[], char roznica[]) { roznica[dlugosc]=0; while ((dlugosc--)>=0) { v=(liczba1[dlugosc]-'0')-(liczba2[dlugosc]-'0')-q; if(v < 0) { roznica[dlugosc]=(v+10)+48; q=1; } else { roznica[dlugosc]=v+48; q=0; } } return roznica; } void zerowanie(char tab[], int ilosc) { char tabz[1001]=""; while(ilosc--) strcat(tabz,"0"); strcat(tabz,tab); strcpy(tab,tabz); } int main () { char liczba1[1001], liczba2[1001], wynik[1002], wynik2[1002]; int dlugosc1, dlugosc2; while(scanf("%s %s", liczba1, liczba2)==2) { if(dlugosc1<dlugosc2) zerowanie(liczba1,dlugosc2-dlugosc1); if(dlugosc2<dlugosc1) zerowanie(liczba2,dlugosc1-dlugosc2); } return 0; } ?>
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

P.S.
Oczywiście ten kod php to tylko tak, żeby pokolorowało jakoś, bo dla c tu nie ma
