Wednesday, February 20, 2013

#4 Primer nabrojivog tipa u c-u ENUM


#include<stdio.h>
#include<conio.h>
#include<string.h>
// definisanje novog tipa uz pomoc typedef i enum
typedef enum boolType{FALSE,TRUE}; // enum kao novi tip
//koristenje enuma
// ponedeljak 0, utorak 1 ... nedelja 6
enum e_dan{ponedeljak,utorak,sreda,cetvrtak,petak,subota,nedelja};

const char *dan_ispis(e_dan dan,char tmp[12]){
     char ret[12];
     switch (dan){
       case 0:{strcpy(tmp,"ponedeljak");break;}
       case 1:{strcpy(tmp,"utorak");break;}
       case 2:{strcpy(tmp,"sreda");break;}
       case 3:{strcpy(tmp,"cetvrtak");break;}
     
       case 4:{strcpy(tmp,"petak");break;}
       case 5:{strcpy(tmp,"subota");break;}
       case 6:{strcpy(tmp,"nedelja");break;}
       }
            //strcpy(ret,"ponedeljak");
       return tmp;
     }
   
main(){
   // primer koristenja enum u c jeziku
   boolType flag;
 
 
   flag=TRUE;
 
   if (flag){
     printf("Flag je true\n");        
   }
   else {
     printf("Flag je false\n");
   }
   // enum nemoze da se ispisuje kao string samo kao broj
   e_dan dan=ponedeljak;
   // c nemoze da vrati iz funkcije string zato sto je on niz karaktera pa mora da mu se
   //prosledi promenjiva koju bi on napunio i vratio nazad
   char tmp[12]="privremena";
   // ispis dana kao pozicije
   printf("danas je dan %d\n",dan);
   // ispis dana uz pomoc specijalne funkcije
   printf("danas je dan %s\n",dan_ispis(dan,tmp));
 
getch();    
}

Monday, February 18, 2013

#4 Unija kako se koristi i sta se nesme


#include<stdio.h>
#include<conio.h>
#include<string.h>

// unija kako se koristi i zasto nemoze da cuva sve podatke
union u_data{
      int i;
      float f;
      char str[20];
      };

   


 main(){
  union u_data udata;
  printf("Unos pojedinacno pa ispis pojedniacno u redosledu MOZE\n");
  udata.i=200;
  printf("udata.i=%d\n",udata.i);
  udata.f=200.001;
  printf("udata.f=%f\n",udata.f);
  strcpy(udata.str,"hello my friend");
  printf("udata.str=%s\n",udata.str);

  // ovo nemoze biti kao kod struktura
  printf("\n\n\n Unos svih pa ispis svih NEMOZE\n");
  udata.i=200;
  udata.f=200.001;
  strcpy(udata.str,"hello my friend");

  printf("udata.i=%d\n",udata.i);
  printf("udata.f=%f\n",udata.f);
  printf("udata.str=%s\n",udata.str);
     
  getch();    
 }

#4 Unija i Struktura kolicina zauzete memorije poredjenje


#include<stdio.h>
#include<conio.h>

// unija
union u_data{
      int i;
      float f;
      char str[20];
      };
// struktura
struct s_data{
      int i;
      float f;
      char str[20];
      };
   


 main(){
  union u_data udata;
  struct s_data sdata;

  // kontrolni tipovi podataka
  int i=0;
  float f=0.00;
  char str[20]="1234567890123456789";

  printf("int i=%d\n",sizeof(i));
  printf("float f=%d\n",sizeof(f));
  printf("char str[20]=%d\n",sizeof(str));
 
  // provera koliko je memorije zauzeto sa unijom i strukturom
  printf("Zauzeto memorije sa unijom u_data udata=%d\n",sizeof(udata));
  printf("Zauzeto memorije sa strukturom s_data sdata=%d\n",sizeof(sdata));
     
  getch();    
 }