Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- int main() {
- // Kod zemlje: 3 cifre
- // Proizvodjac + broj artikla: 9 cifara
- // Kontrolni broj: 1 cifra
- unsigned long long int GTIN = 7622200004607;
- printf("Pocetni GTIN = %llu\n", GTIN);
- // Da bismo izracunali kontrolni broj
- // prvih 12 cifara treba da se pomnozi sa 1 i 3, naizmjenicno
- // a zatim da se sumiraju ovi proizvodi
- // Suma brojeva se zaokruzuje na prvu vecu deseticu.
- // Razlika izmedju zaokruzenog broja i nezaokruzene sume
- // jeste kontrolni broj
- // --> poslednja cifra ovog GTIN broja je 7 (ovo je kontrolni broj)
- // 1. Korak --> odvojiti cifre od ovog velikog broja.
- // Ovo se radi pomocu operatora / i %
- // -- Operator % je DIJELJENJE PO MODULU, na ovaj nacin dobijamo ostatak
- // pri dijeljenju
- // -- Operator / je obicno dijeljenje, cijelobrojno dijeljenje.
- // Upotrebom ova dva operatora moguce je izdvojiti sve cifre.
- // Ostatak pri dijeljenju sa deset je poslednja cifra.
- int kontrolniBroj = GTIN % 10;
- printf("Kontrolni broj: %d\n\n", kontrolniBroj); // C-ovski ispis
- // Posto je / cjelobrojno dijeljenje, nakon sto smo izvadili poslednju cifru
- // zelimo je odbaciti, iskoristicu pocetnu promjenjivu, mozes napraviti i
- // novu promjenjivu, nema problema...
- GTIN = GTIN / 10;
- // Sada nakon ove linije imamo GTIN = 762220000460
- // --> Uoci da fali sedmica na kraju
- printf("GTIN bez 7 = %llu\n", GTIN);
- // Sada od novog GTIN-a bez 7 na kraju uzimamo opet cifru
- // pomocu operator %
- int c12 = GTIN % 10;
- // Sada odbacujemo i 0 sa kraja, time smo odbacili 07 od pocetnog GTIN-a
- // Ovaj proces ponavljamo 12 puta dok ne pokupimo sve cifre...
- // Ovaj zadatak ocigledno ima za cilj
- // da pokaze cemu sluze petlje kada dodjes do njih :)
- GTIN = GTIN / 10;
- printf("GTIN bez 07 = %llu\n", GTIN);
- int c11 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 607 = %llu\n", GTIN);
- int c10 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 4607 = %llu\n", GTIN);
- int c9 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 04607 = %llu\n", GTIN);
- int c8 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 004607 = %llu\n", GTIN);
- int c7 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 0004607 = %llu\n", GTIN);
- int c6 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 00004607 = %llu\n", GTIN);
- int c5 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 200004607 = %llu\n", GTIN);
- int c4 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 2200004607 = %llu\n", GTIN);
- int c3 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 22200004607 = %llu\n", GTIN);
- int c2 = GTIN % 10;
- GTIN = GTIN / 10;
- printf("GTIN bez 622200004607 = %llu <-- kraj\n\n", GTIN);
- int c1 = GTIN % 10;
- // Sada mozemo da ispisemo sve cifre koje smo uzeli redom
- printf("Cifra 12: %d\n", c12);
- printf("Cifra 11: %d\n", c11);
- printf("Cifra 10: %d\n", c10);
- printf("Cifra 9: %d\n", c9);
- printf("Cifra 8: %d\n", c8);
- printf("Cifra 7: %d\n", c7);
- printf("Cifra 6: %d\n", c6);
- printf("Cifra 5: %d\n", c5);
- printf("Cifra 4: %d\n", c4);
- printf("Cifra 3: %d\n", c3);
- printf("Cifra 2: %d\n", c2);
- printf("Cifra 1: %d\n", c1);
- // Sada jednostavno sve cifre izmnozimo sa 1 i 3 naizmjenicno i sumiramo ih
- // Pravimo novu pomocnu promjenjicu koja ce cuvati sumu
- // Posto je suma dosta mala u odnosu na GTIN broj mozemo koristiti
- // obicni integer tip
- int suma;
- // Naizmjenicno mnozis cifre sa 1 i 3
- suma = c1*1 + c2*3 + c3*1 + c4*3 + c5*1 + c6*3 + c7*1 + c8*3 + c9*1
- + c10*3 + c11*1 + c12*3;
- printf("\nSuma = %d\n", suma);
- // E sada, kako zaokruziti na prvu narednu deseticu?
- // Vecina programskih jezika nudi gotovu funkciju "ceil", u prevodu "plafon"
- // i ona to obavi, npr: ceil(53) = 60
- // ali jako jednostavno je mozemo napraviti
- int sumaZaokruzeno = ((suma / 10) + 1) * 10;
- // Sta sam uradio u liniji iznad? Od sume koja je u primjeru 53 sam odbacio
- // poslednju cifru, to je ovdje dalo 5, uvecao sam to za 1 i onda to pomnozio sa 10
- // Da je suma bila npr 153, dobili bismo (15 + 1) * 10 = 160 --> radi!
- printf("\nZaokruzena suma = %d\n", sumaZaokruzeno);
- // Sada samo ispisemo izracunati kontrolni broj
- printf("\nKontrolni broj (izracunati) = %d\n\n", sumaZaokruzeno-suma);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement