#include #include #include #define MAXDIM 1000 /*cuvamo veliki broj u nizu karaktera gde su jedino cifre dozvoljeni karakteri TODO: prilikom ucitavanja potrebno je proveravati da li je broj korektan, tj. da li sadrzi samo karaktere cifara*/ typedef struct velikibroj{ char rep[MAXDIM]; } VelikiBroj; void ucitaj(VelikiBroj *b); /*ispisuje dobijeni broj u velikibroj.txt*/ void ispisi(VelikiBroj b); void saberi(VelikiBroj b1, VelikiBroj b2, VelikiBroj *b3); int main(){ VelikiBroj b1, b2, b3; ucitaj(&b1); printf("%s\n",b1.rep); ucitaj(&b2); printf("%s\n", b2.rep); saberi(b1,b2,&b3); ispisi(b3); return 0; } void ucitaj(VelikiBroj *b1){ scanf("%s",b1->rep); } void ispisi(VelikiBroj b){ FILE *izlaz; izlaz=fopen("velikibroj.txt","w"); if(izlaz==NULL){ printf("Greska pri ucitavanju datoteke."); exit(EXIT_FAILURE); } fprintf(izlaz,"%s\n",b.rep); fclose(izlaz); } void saberi(VelikiBroj a, VelikiBroj b, VelikiBroj *c){ int an, bn, av, bv, cv, i, j, min,p; /*pomocni niz, rezultat iz njega obrcemo kako bi dobili konacan rezultat*/ char t[MAXDIM]; an=strlen(a.rep); bn=strlen(b.rep); min=an=10){ p=1; }else{ p=0; } t[i]=(cv%10)+'0'; } /*radimo sabiranje za ostatak duze niske, samo sabiranje sa prenosom*/ if(an>bn){ for(i=min; i=10){ p=1; }else{ p=0; } t[i]=(cv%10)+'0'; } }else{ for(i=min; i=10){ p=1; }else{ p=0; } t[i]=(cv%10)+'0'; } } /*ako je poslednja operacija izazvala prenos, novi broj je za magnitudu veci te mu dodajemo jos jednu cifru. Npr. ako sabiramo 9999 sa 1 dobicemo petocifreni broj 10000*/ if(p==1) t[i++]=1+'0'; t[i]='\0'; /*okrecemo privremeni rezultat*/ for(j=0; jrep[j]=t[i-j-1]; c->rep[j]='\0'; }