[ dragancesu @ 08.06.2012. 09:18 ] @
Zadatak je da se napravi funkcija koja kontrolise broj tekuceg racuna prilikom unosa, to je kontrola po modulu 97. Na prvi pogleda trivijalno, podeliti broj sa 97 i naci ostatak deljenja. Problem je sto se deli 18-cifreni broj i tu ima problema. Ono sto lepo radi je do 15 cifara, vise od toga je problem. Video sam da ima resenja u excelu i slicnim, ali meni treba za clipper.

Ima li neko resenje za ovo? Jednom davno sam video da ima, pretrazujem internet ali ne nalazim

Pozdrav
[ djoka_l @ 08.06.2012. 09:44 ] @
Iskoristi osobinu mod funkcije:

mod(a*b,m)=mod(mod(a,m)*mod(b,m))

Na primer, mod(100,97)=3, mod(1000,97)=mod(10*100,97)=mod(10*3,97)=30
mod(1000*1000,97)=mod(30*30,97)

Nađi funkcije mod97 za brojeve 1, 10, ..., pa onda sa tim faktorima množi cifre na odgovorajućim mestima u broju računa, saberi i opet nađi mod.
[ Nedeljko @ 08.06.2012. 10:25 ] @
Code:
int mod(const char digits[], int size, int m)
{
    int result = 0;
    
    for (int i = 0; i < size; ++i) {
        result *= 10;
        result += digits[i] - '0';
        result %= m;
    }

    return result;
}


I sad to lepo pozoveš sa

Code:
int m = mod(digits, 18, 97)
[ dragancesu @ 08.06.2012. 16:09 ] @
Hvala,
ako nekom treba postavicu clipper kod