[ Slaughter @ 24.12.2008. 23:12 ] @
Radim jedan zadatak, u sustini razumem sta treba da se uradi i kako da se uradi ali ne znam zbog cega ne funkcionise.Ako moze neko da pogleda kod i pronadje gresku ako postoji. Zadatak glasi: Napisati C program koji vrši pakovanje vremena oblika DD:MM:GG:HH:MM:SS u jednu reč tako da se zauzme što manje memorije. Prikazati i štampati datu reč u heksadecimalnom brojevnom sistemu.I takodje napraviti raspakivanje podatka o vremenu. Ja sam to uradio ovako, samo nisam radio za prikazivanje u heksadecimalnom obliku posto nisam uspeo da zavrsim pakovanje i raspakivanje te reci. Code: #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { unsigned vreme=0, dan, mesec, godina, sat, min, sek; printf("\n\tUnesite dan: "); scanf("%d",&dan); vreme=(vreme << 0x5) | dan; printf("\n\tUnesite mesec: "); scanf("%d",&mesec); vreme=(vreme << 0x5) | mesec; printf("\n\tUnesite godine: "); scanf("%d",&godina); vreme=(vreme << 0xC) | godina; //moglo se siftovati i za manje mesta printf("\n\tUnesite sate: "); scanf("%d",&sat); vreme=(vreme << 0x5) | sat; printf("\n\tUnesite minute: "); scanf("%d",&min); vreme=(vreme << 0x5) | min; printf("\n\tUnesite sekunde: "); scanf("%d",&sek); vreme=(vreme << 0x5) | sek; //Ukupno zauzeto 37 bita printf("\n\tUneto vreme je: %.2d:%.2d:%.2d:%.2d:%.2d:%.2d",dan,mesec,godina,sat,min,sek); printf("\n\n\tKodirana rec vreme je: %d",vreme); sek=vreme & 0x1F; //nalazi se na kraju kodne reci ne treba siftovanje //izdvajamo sam funkcijom & onoliko mesta koliko nam treba (1F=5 mesta) min=(vreme >> 0x5) & 0x1F; //siftujemo za 5 mesta i izdvajamo 5 sat=(vreme >> 0xA) & 0x1F; //za 10 izdvajamo 5 godina=(vreme >> 0xF) & 0xFFF; //za 15 izdvajamo 12 mesec=(vreme >> 0x1B) & 0x1F; //za 27 izdvajamo 5 dan=(vreme >> 0x20) & 0x1F; //za 32 izdvajamo 5 //za ovo mi izbavuje gresku:"Possible overflow in shift operation". //Samo sam pomerio za 32 bita a rec ima 37 ??? printf("\n\n\tDekodirana rec sadrzi vreme: %.2d:%.2d:%.2d:%.2d:%.2d:%.2d",dan,mesec,godina,sat,min,sek); printf("\n\n\n\t"); system("PAUSE"); return 0; } Hvala unapred za bilo kakvu pomoc! |