Monday, March 4, 2013

#4 Niz struktura ucenik sortianje pretraga ...


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

const int max=1;
const int min=0;

struct s_ucenik{
       char ime[15];
       char prezime[15];
       char datum[15];
       float srpski;
       float matematika;
       };
     
struct s_ucenik ucenici[max+1];// niz ucenika    
//definicije funkcija
void ucenik_unos(int mesto);
void ucenik_ispis(int mesto);
void ucenici_unos();
void ucenici_ispis();
float ucenici_srpski_prosek();
float ucenici_srpski_najveca_ocena();
float ucenici_matematika_prosek();
float ucenici_srpski_najmanja_ocena();  
     
       // unesi ga na redni broj mesta
     
main(){
  // unesi jednog ucenika u niz za test
   ucenici_unos();
   ucenici_ispis();
   // ispis proseka iz srpskog
   printf("prosek srpski=%f \n",ucenici_srpski_prosek());
   printf("najveca ocena srpski=%f \n",ucenici_srpski_najveca_ocena());
   printf("najmanja ocena srpski=%f \n",ucenici_srpski_najmanja_ocena());
 getch();    
}

// definicija funkcija
void ucenik_unos(int mesto){
       // uneti ucenika na odredjeno mesto u nizu
       struct s_ucenik ucenik;
       // unos ucenika pr ovi
       printf ("molim vas unesite sve podatke za ucenika \n");
       printf("ucenik.ime=");scanf("%s",&ucenik.ime);
       printf("ucenik.prezime=");scanf("%s",&ucenik.prezime);
       printf("ucenik.datum=");scanf("%s",&ucenik.datum);
       printf("ucenik.srpski=");scanf("%f",&ucenik.srpski);
       printf("ucenik.matematika=");scanf("%f",&ucenik.matematika);
     
       // unesi ga na redni broj mesta
       if (mesto>=min && mesto<=max){
       ucenici[mesto]=ucenik;
       }
       else {
             printf("mesto:%d u nizu nepostoji, min:%d , max:%d\n",mesto,min,max);
            }
     }
   
     void ucenik_ispis(int mesto){
       // uneti ucenika na odredjeno mesto u nizu
       if (mesto>=min && mesto<=max){
       // unos ucenika pr ovi
       printf ("\n ************************\n",mesto+1);
       printf ("\nUcenik %d\n",mesto+1);
     
       printf("ucenik.ime=%s \n",ucenici[mesto].ime);
       printf("ucenik.ime=%s \n",ucenici[mesto].prezime);
       printf("ucenik.ime=%s \n",ucenici[mesto].datum);
       printf("ucenik.ime=%f \n",ucenici[mesto].srpski);
       printf("ucenik.ime=%f \n",ucenici[mesto].matematika);
       }
       else {
             printf("mesto:%d u nizu nepostoji, min:%d , max:%d\n",mesto,min,max);
            }
     }

void ucenici_unos(){
  for (int i=min;i<=max;i++){
       ucenik_unos(i);
      }
}
void ucenici_ispis(){
   for (int i=min;i<=max;i++){
       ucenik_ispis(i);
      }
}
float ucenici_srpski_prosek(){
      float suma=0;
      for (int i=min;i<=max;i++){
       suma+=ucenici[i].srpski;
       }
       return float(suma/float(max+1.0));
}
float ucenici_matematika_prosek(){
      float suma=0;
      for (int i=min;i<=max;i++){
       suma+=ucenici[i].matematika;
       }
       return float(suma/float(max+1.0));
}
float ucenici_srpski_najveca_ocena(){
       // trenutna promenjiva
      float najveci=ucenici[0].srpski;
     
        for (int i=min;i<=max;i++){
          if (najveci<ucenici[i].srpski) najveci=ucenici[i].srpski;
       }
       return najveci;
      }
float ucenici_srpski_najmanja_ocena(){
       // trenutna promenjiva
      float najmanji=ucenici[0].srpski;
     
        for (int i=min;i<=max;i++){
          if (najmanji>ucenici[i].srpski) najmanji=ucenici[i].srpski;
       }
       return najmanji;
      }

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

Thursday, February 14, 2013

#4 Strukture niz ucenika osnovni

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

const int max=3;

struct s_ucenik{
       char ime[15];
       char prezime[15];
       short int godina;
       };
      
 struct s_ucenik ucenici[max];

 void unos(int m);
 void ispis(int m);

main(){
       // program za unos  i ispis strukture ucenika
 printf(" Molim vas unesite ucenike u niz\n");

  unos(max);
   printf(" \n Ispis ucenika iz niza \n");
  ispis(max);   
      
  getch();    
}


void unos(int m){
    
     for (int i=0;i<m;i++){   
         printf("ucenik[%d].ime=",i); scanf("%s",&ucenici[i].ime);
         printf("ucenik[%d].prezime=",i); scanf("%s",&ucenici[i].prezime);
         printf("ucenik[%d].godina=",i); scanf("%d",&ucenici[i].godina);
          printf("*********************************************\n");
     }
    


void ispis(int m){
    
     for (int i=0;i<m;i++){   
         printf("ucenik[%d].ime=%s\n",i,ucenici[i].ime);
         printf("ucenik[%d].prezime=%s\n",i,ucenici[i].prezime);
         printf("ucenik[%d].godina=%d\n",i,ucenici[i].godina);
         printf("*********************************************\n");
     }
    

Wednesday, February 13, 2013

#4 Matrica 3x3 unos ispis ponavljanje

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


main(){
 // matrica 3x3 ponavljanje gradiva
 int sah[3][3];
 printf("Printf unesi te elemente matrice 3x3\n");
 for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
      printf("sah[%d][%d]=",i,j);scanf("%d",&sah[i][j]);printf("\n");   
     }   
 }

 printf("Printf ispis elemenata matrice 3x3 \n");
  for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
      printf("sah[%d][%d]=%d \n",i,j,sah[i][j]);   
     }   
 }   
 getch();     
}

#5 Matrica 3x3 najveci glavna i sporedna diagonala

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


main(){
 // matrica 3x3 ponavljanje gradiva
 int sah[3][3];
 int suma=0;
 int najveci;

 printf(" Unesite elemente matrice 3x3\n");
 for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
      printf("sah[%d][%d]=",i,j);scanf("%d",&sah[i][j]);printf("\n");   
     }   
 }
 printf("Printf ispis elemenata matrice 3x3 \n");
  for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
      printf("sah[%d][%d]=%d \n",i,j,sah[i][j]);   
     }   
 }

  printf("Racunanje sume svih elemenata matrice 3x3 \n");
  for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
         suma=suma+sah[i][j];
     }   
 }     
 printf("\n Suma=%d \n",suma);

   printf("pronalazenje naveceg elmenta matrice 3x3 \n");
   najveci=sah[0][0]; //postavi da je najveci trenutno prvi element
  for (int i=0;i<3;i++){
     for (int j=0;j<3;j++){
         if (najveci<sah[i][j]){
         najveci=sah[i][j];                      
         }
     }   
 }     
printf("\n Najveci je=%d \n",najveci);

printf("Ispis elemenata glavne dijagonale matrice 3x3 \n");
 
  for (int i=0;i<3;i++){
     printf("sah[%d][%d]=%d \n",i,i,sah[i][i]);                          
     }  


 printf("Ispis elemenata sporedne dijagonale matrice 3x3 \n");
 
  for (int i=0;i<3;i++){
     printf("sah[%d][%d]=%d \n",i,3-1-i,sah[i][3-1-i]);                          
         }      


 getch();     
}