[ Nemanja @ 27.08.2003. 21:00 ] @
Operator preklapanja sabiranje pri cemu su sabirci veliki brojevi uneseni kao nizovi karaktera ide nekako ovako u C++ : Code: // "velbroj.cpp" #include <iostream.h> #include <stdio.h> #include <string.h> #include "velbroj.hpp" bignum bignum::operator+(bignum drugi) //definicija { //inicijalizuj objekat z i nadji duzine stringova bignum z; int i = strlen(broj) - 1, j = strlen(drugi.broj) - 1; //ako su brojevi numerici uradi sabiranje if (numerik(broj, i) && numerik(drugi.broj, j)) { int prenos = 0, br, k = (i > j ? i : j); //u pocetku pamti prenos = 0 i nadji k = max(i, j) z.broj[k + 1] = '\0'; //postavi velicinu for (i, j; i >= 0 || j >= 0; i--, j--) // br=numerik od (br1 + br2) + ono sto se pamti { br = (i < 0 ? 0 : broj[i] - 48) + (j < 0 ? 0 : drugi.broj[j] - 48) + prenos; prenos = br > 9 ? br -= 10, 1 : 0; //ako je rezultat>9 onda pamti 1, a broj smanji za 10 z.broj[k--] = br + 48; } //kraj for petlje if (prenos == 1) { char *temp = "1"; strcat(temp, z.broj); strcpy(z.broj, temp); } } else cout << "greska pri sabiranju brojeva!" << endl; /* prenosi kao rezultat objekat z (napomena: ako bi koristili objekt drugi ili * this, menjala bi se vrednost njihovih argumenta) */ return z; } int bignum::numerik(char *num, int duz) //definicja { for (int i = duz; i >= 0; i--) if (num[i] < '0' || num[i] > '9') { cout << "greska, broj:"; prikaz(); cout << " nije numerik! " << endl; return 0; } return 1; } Bilo bi mi od velike pomoci ukoliko neko vec zna ove sablonske skolske zadatke da mi pomogne da napisem isto to samo za oduzimanje! Trenutno mi je mozak stao, sto ne znaci da vec nece biti bolje! Unapred se izvinjavam ako postoji pravilo o ne pomoganju oko skolskih zadataka a sa kojim nisam upoznat! |