studentski servis Login | Gost nalog
BRZI LINKOVI
BUDITE OBAVEŠTENI

Unesite podatke i svakih 15 dana na Vašu adresu stizaće
ITS studentske novosti

STUDENTI O ITS-u
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.

Pogledajte ostale utiske studenata>>>
ALEKSANDAR MANJA, STUDENT

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);
}

 

 

 

 

 

 

 

 

 

 

 



Upisni rok je otvoren!

Upis generacije 2011/2012 je u toku. Prijavite se na vreme >>

ITS TV
Video obilazak škole
ITS školski kanal>>> Profesori i nastavni tim

ITS nastavnički kanal>>>

Programerski tim

ITS programerski kanal>>>

PITAMO VAS
Kada birate školu koju ćete upisati, Vama je najvažnije:

Savremenost programa
Mogućnost zaposlenja
Društvo i kolege
Visina školarine
Lakoća završetka
Lično interesovanje za oblast školovanja

 
garancija