[ Nemanja @ 29.08.2003. 18:59 ] @
Zadacic sam resio,listing je ispod, samo ono sto nisam ocekivao od ovog foruma to je napadanje kada je neko nespreman ili ga mrzi da drugom pomogne. Nije u pitanju ovaj skolski primer sa testa vec princip. Ako neko hoce moze da ga optimizuje, meni je samo bitno da radi! Code: class bignum { char broj[100]; public: bignum () {strcpy(broj,"0");} bignum (char *novi) {strcpy(broj,novi);} ~bignum () {}; void Unos () {cout<<"\nUnesite broj\t";cin>>broj;} void Prikaz () {cout<<broj;} bignum operator- (bignum); void zameni (int *,int *); }; void bignum::zameni (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } bignum bignum::operator- (bignum drugi) { bignum z; int i=strlen(broj)-1,j=strlen(drugi.broj)-1; int pom,br,veci,prenos=0,znak=0,k=(i>j?i:j); char duzi[100],kraci[100]; if (i>j) {strcpy(duzi,broj); strcpy(kraci,drugi.broj);} else if (i<j) {strcpy(duzi,drugi.broj);strcpy(kraci,broj);znak=1;} else { veci=strcmp(broj,drugi.broj); if (veci>0) {strcpy(duzi,broj); strcpy(kraci,drugi.broj);} else {strcpy(duzi,drugi.broj);strcpy(kraci,broj);znak=1;} } z.broj[k+1]='\0'; if (k==j) zameni (&i,&j); for(i,j;i>=0 || j>=0;i--,j--) { if ((pom=((duzi[i]-48)-(j<0?0:kraci[j]-48)-prenos))>=0) {br=pom;prenos=0;} else {br=(duzi[i]-48)+10-(j<0?0:kraci[j]-48)-prenos;prenos=1;} z.broj[k--]=br+48; } if (znak==1) {char temp[100]="-";strcat(temp,z.broj);strcpy(z.broj,temp);} if (z.broj[0]=='0') z.broj[0]=' '; return z; } |