PROGRAMSKI JEZIK C - PRIMER 038
///////////////////////////////////////////////////////////////////////
// ITS - Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// http://www.its.edu.rs/
// Predmet: Osnovi Programiranja - Programski jezik C
//
// Primer: Program za konverziju pozitivnih celih brojeva iz dekadnog
// brojnog sistema u binarni, heksadecimalni i oktalni brojni
// sistem. Tabelarni prikaz.
///////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <windows.h> // WinApi header, potreban za promenu boje
// funkcija za pretvaranje decimalnog sistema u binarni
char* dec2bin(long dec, char *binNiz);
// funkcija za pretvaranje decimalnog sistema u oktalni
char* dec2okt(long dec, char *oktNiz);
// funkcija za pretvaranje decimalnog sistema u heksadecimalni
char* dec2hex(long dec, char *hexNiz);
int Boja(); // definisanje funkcije za promenu boje
int inverznaBoja(); // inverzna boja za tablicu
void zaglavlje2(); // ispis linija
int main()
{
long i,min,max,dec,zamena;
int dx = 0, pauza = 0, ekran = 1, ver = 186, hor=205, krst=206;
char nastavak = '1', progPonovo=0;
char binNiz[80];
char oktNiz[80];
char hexNiz[80];
// konverzacija sa korisnikom radi prikupljanja podatka
printf("\n\n Unesite pozitivan ceo broj od koga zelite da prikazete brojne sisteme: ");
scanf("%ld",&min);
if(min<=0)
{
printf("Potrebno je da broj bude pozitivan!\n");
return 1;
}
printf("\n Unesite pozitivan ceo broj do koga zelite da prikazete brojne sisteme: ");
scanf("%ld",&max);
if(max<=0)
{
printf("Potrebno je da broj bude pozitivan!\n");
return 1;
}
// provera i eventualna zamena ukoliko je OD vece od DO
while(max<min)
{
printf("\n Uneli ste vrednost manju od pocetne, vrednosti ce biti zamenjene");
zamena=max;
max=min;
min=zamena;
}
// provera da li je prirastaj pozitivan i veci od nule
while (dx<=0)
{
printf("\n Unesite pozitivan ceo decimalni broj za prirastaj brojnih sistema: ");
scanf("%d",&dx);
}
inverznaBoja(); // inverzna boja za ispis tabele
//prvo zaglavlje tabele
printf("\n %c dec %c bin %c okt %c hex %c ",ver,ver,ver,ver,ver); // zaglavlje
zaglavlje2(krst,hor); // pozivanje linije
for (i=min;i<=max;i=i+dx) // brojac koraka
{
dec=i;
pauza++; // pauzu koristimo za ispis jednog po jednog ekrana
dec2bin(dec,binNiz); // pozivanje izracunavanja binarnog broja
dec2okt(dec,oktNiz); // pozivanje izracunavanja oktalnog broja
dec2hex(dec,hexNiz); // pozivanje izracunavanja heksadecimalnog broja
printf(" %c%12ld %c%32s %c%13s %c%10s %c ",ver,dec,ver,binNiz,ver,oktNiz,ver,hexNiz,ver); // ispis reda
if (pauza==22 && ekran==1) // u slucaju prvog prolaska ENTER ostaje stisnuto pa trebaju dva getchar()
{
getchar();
getchar();
pauza=0;
ekran++;
printf("\n %c dec %c bin %c okt %c hex %c ",ver,ver,ver,ver,ver); // zaglavlje
zaglavlje2(krst,hor);
}
if (pauza==22 && ekran!=1) // u slucaju da nije prvi prolaz
{
getchar();
pauza=0;
ekran++;
printf("\n %c dec %c bin %c okt %c hex %c ",ver,ver,ver,ver,ver); // zaglavlje
zaglavlje2(krst,hor);
}
}
Boja(); // promena boje
system("PAUSE"); // poruka press any key...
return 0;
}
// prihvata dekadni broj i vraca binarni niz
char* dec2bin(long dec, char *binNiz)
{
int k = 0, n = 0;
int ostatak;
int stariDec; //test
char temp[80];
do
{
stariDec = dec; // test
ostatak = dec % 2;
// deljenje sa dva
dec = dec / 2;
// smesta 0 ili 1 u niz
temp[k++] = ostatak + '0';
} while (dec > 0);
// okrece niz
while (k >= 0)
binNiz[n++] = temp[--k];
binNiz[n-1] = 0; // kraj sa NULL
return binNiz;
}
// prihvata dekadni broj i vraca oktalni niz
char* dec2okt(long dec, char *oktNiz)
{
int k = 0, n = 0;
int ostatak;
int stariDec; //test
char temp[80];
do
{
stariDec = dec; // test
ostatak = dec % 8;
// deljenje sa osam
dec = dec / 8;
// smesta ostatak u niz
temp[k++] = ostatak + '0';
} while (dec > 0);
// okrece niz
while (k >= 0)
oktNiz[n++] = temp[--k];
oktNiz[n-1] = 0; // kraj sa NULL
return oktNiz;
}
// prihvata dekadni broj i vraca heksadecimalni niz
char* dec2hex(long dec, char *hexNiz)
{
int k = 0, n = 0;
int ostatak;
int stariDec; //test
char temp[80];
do
{
stariDec = dec; // test
ostatak = dec % 16;
// deljenje sa 16
dec = dec / 16;
// dodeljivanje vrednosti clanu u zavisnosti od ostatka
// prvih 10 su mogli ici pod default vrednosti ali je ovako preglednije
switch (ostatak)
{
case 0: temp[k++] = ostatak + '0'; break;
case 1: temp[k++] = ostatak + '0'; break;
case 2: temp[k++] = ostatak + '0'; break;
case 3: temp[k++] = ostatak + '0'; break;
case 4: temp[k++] = ostatak + '0'; break;
case 5: temp[k++] = ostatak + '0'; break;
case 6: temp[k++] = ostatak + '0'; break;
case 7: temp[k++] = ostatak + '0'; break;
case 8: temp[k++] = ostatak + '0'; break;
case 9: temp[k++] = ostatak + '0'; break;
case 10: temp[k++] = 'A'; break;
case 11: temp[k++] = 'B'; break;
case 12: temp[k++] = 'C'; break;
case 13: temp[k++] = 'D'; break;
case 14: temp[k++] = 'E'; break;
case 15: temp[k++] = 'F'; break;
}
// smesta ostatak u niz
} while (dec > 0);
// okrece niz
while (k >= 0)
hexNiz[n++] = temp[--k];
hexNiz[n-1] = 0; // kraj sa NULL
return hexNiz;
}
Boja() // funkcija za promenu boje
{
// menjanje boje
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 10);
return 0; // povratak
}
inverznaBoja() // funkcija za menjanje boje u inverznu
{
// menjanje boje
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 160);
return 0; // povratak
}
void zaglavlje2(krst,hor) // ispisivanje linije
{
int j;
printf(" %c",krst);
for (j=1;j<=13;j++)
{
printf("%c",hor);
}
printf("%c",krst);
for (j=1;j<=33;j++)
{
printf("%c",hor);
}
printf("%c",krst);
for (j=1;j<=14;j++)
{
printf("%c",hor);
}
printf("%c",krst);
for (j=1;j<=11;j++)
{
printf("%c",hor);
}
printf("%c ",krst);
}








Student sam prve godine ITS-a i planiram da se usmerim za projektanta informacionih sistema. Još od svoje sedme godine postoji moje interesovanje za informacione tehnologije. ITS je drugačiji zato što vlada jedna posebna atmosfera, što na nastavi, što u zgradi, a i među samim studentima. Sistem školovanja je nekako prilagođeniji, jer i studentima odgovara da rade tokom čitave godine, a ne da čekaju "poslednju šansu" na ispitu. Na ITS-u sam naučio mnogo o programiranju i zbog toga sam i došao ovde, jer time planiram u životu da se bavim. Moji ciljevi su zaista široki, želim da poznajem programske jezike, da se bavim administracijom računarskih sistema i da imam primenjiva znanja iz oblasti menadžmenta u informacionim tehnologijama.






