Tuesday, December 10, 2013

Pregled zadataka po težini

Težina zadataka po brojevima # ispred naslova


#1 Osnovi upoznavajući zadaci

U ovu grupu spadaju osnovni liniski i jednostavni razgranati zadaci, učitavanje SCANF, PRINTF dva ili više brojeva osnovne operacije ispis brojeva na standardni izlaz, takođe tu spadaju i zadaci sa IF ELSE ali osnovni ne ugnježdeni.

#2 Osnovni zadaci sa iskazima

U ovu grupu zadataka spadaju IF ELSE, SWITCH CASE.


#3 Laki zadaci sa

U ovu grupu zadataka spadaju SWITCH CASE, jendostruki nizovi brojeva, bez sortiranja.

#4 Pčela zadaci

U ovu grupu zadataka spadaju zadaci sa nizovima, sortiranje rastući/opadajući nizova, min/max element niza, prosek i suma niza,

#5 Lasica

U ovu grupu zadataka spadaju zadaci sa nizovima, sortiranje rastući/opadajući nizova, min/max element niza, prosek i suma niza,

#6 Lisica

#7 Lav

#8 Lisica

#9 Sova

#10 Mudra sova


#5 Matrice preko pokazivaca

// Napisati program koji unosi,ispisuje kvadratnu matricu preko funkcija i pokazivaca
#include <stdio.h>
#include <conio.h>
#define mN 3
#define mM 3
int sah_tabla[mN][mM];

 void matrica_unos(int mat[][mM],int n,int m);
 

  void matrica_ispis(int mat[][mM],int n,int m);
  void matrica_mesto(int mat[][mM],int n, int m,int x,int y);
 
  void matrica_ispis_glavne_dijagonale(int mat[][mM],int n);
  void matrica_ispis_sporedne_dijagonale(int mat[][mM],int n);
 
  void matrica_ispis_horizontalne_sredine(int mat[][mM],int n,int m);
  void matrica_ispis_vertikalne_sredine(int mat[][mM],int n,int m);
 
  int matrica_min_element(int mat[][mM],int n,int m);
  int matrica_max_element(int mat[][mM],int n,int m);
 
  void matrica_sort_up(int mat[][mM],int n,int m);
  void matrica_sort_down(int mat[][mM],int n,int m);

 main(){
  printf("Unesi cele brojeve  matrice %dx%d\n",mN,mM);

  matrica_unos(sah_tabla,mN,mM);
  printf("\n Ispis matrice \n");
  matrica_ispis(sah_tabla,mN,mM);

  printf("\n Ispis kordinate 2,2 \n");
  matrica_mesto(sah_tabla,mN,mM,2,2);
   printf("\n glavna diajgonala \n");
  matrica_ispis_glavne_dijagonale(sah_tabla,mN);
   printf("\n sporedna dijagonala \n");
  matrica_ispis_sporedne_dijagonale(sah_tabla,mN);
 
   printf("\n vertikalna sredina \n");
  matrica_ispis_vertikalne_sredine(sah_tabla,mN,mM);
   printf("\n horizontalna sredina \n");
  matrica_ispis_horizontalne_sredine(sah_tabla,mN,mM);
  printf("\n Minimalni element matrice %d \n",matrica_min_element(sah_tabla,mN,mM));
  printf("\n Maksimalni element matrice %d \n",matrica_max_element(sah_tabla,mN,mM));
 
  // sortiranje matrice up
   matrica_sort_up(sah_tabla,mN,mM);
   printf("\n Ispis sortirane matrice sort up matrice \n");
  matrica_ispis(sah_tabla,mN,mM);
 
  // sortiranje matrice down
   matrica_sort_down(sah_tabla,mN,mM);
   printf("\n Ispis sortirane matrice sort down matrice \n");
   matrica_ispis(sah_tabla,mN,mM);
 getch();    
 }

 void matrica_unos(int mat[][mM],int n,int m){
   for(int i=0; i<n; i++){
      for(int j=0; j<m; j++){
          printf("Niz[%d][%d]=",i,j); scanf("%d", &mat[i][j]);
      }
   }
 }

  void matrica_ispis(int mat[][mM],int n,int m){
   for(int i=0; i<n; i++){
      for(int j=0; j<m; j++){
          printf("mat[%d][%d]=%d\n",i,j,mat[i][j]);
      }
   }
 }

 void matrica_mesto(int mat[][mM],int n, int m,int x,int y){
     if (x>=0 && x<n && y>=0 && y<m){
        printf("[%d][%d]=%d\n",x,y,mat[x][y]);
     }
     else {
           printf ("Izvan domena x=%d ,y=%d",x,y);
          }
   }
 
   void matrica_ispis_glavne_dijagonale(int mat[][mM],int n){
        for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,i,mat[i][i]);
          }
   }
 
   void matrica_ispis_sporedne_dijagonale(int mat[][mM],int n){
    for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,n-1-i,mat[i][n-1-i]);
          }
   }
   void matrica_ispis_horizontalne_sredine(int mat[][mM],int n,int m){
    for(int i=0; i<m; i++){
          printf("mat[%d][%d]=%d\n",(int)(n/2),i,mat[(int)(n/2)][i]);
          }
   }
    void matrica_ispis_vertikalne_sredine(int mat[][mM],int n,int m){
    for(int i=0; i<n; i++){
          printf("mat[%d][%d]=%d\n",i,(int)(m/2),mat[i][(int)(m/2)]);
          }
   }
 
    int matrica_min_element(int mat[][mM],int n,int m){
        int min=mat[0][0];  
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
                  if(min>mat[i][j]) min=mat[i][j];
         }
        }
         return min;
    }
   
     int matrica_max_element(int mat[][mM],int n,int m){
        int max=mat[0][0];  
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
                  if(max<mat[i][j]) max=mat[i][j];
         }
        }
         return max;
    }
   
    void matrica_sort_up(int mat[][mM],int n,int m){
        //if(min>mat[i][j]) min=mat[i][j];
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
             for(int p=i; p<n; p++){
              for(int q=j; q<m; q++){
                       
                 if ( mat[i][j]>mat[p][q]) {
                      //mat[i][j]=-1;
                      int korpa=mat[i][j];
                     mat[i][j]=mat[p][q];
                      mat[p][q]=korpa;
                      }
              }
              }    
         }
        }
    }
   
    void matrica_sort_down(int mat[][mM],int n,int m){
        //if(min>mat[i][j]) min=mat[i][j];
        for(int i=0; i<n; i++){
         for(int j=0; j<m; j++){
             for(int p=i; p<n; p++){
              for(int q=j; q<m; q++){
                       
                 if ( mat[i][j]<mat[p][q]) {
                      //mat[i][j]=-1;
                      int korpa=mat[i][j];
                     mat[i][j]=mat[p][q];
                      mat[p][q]=korpa;
                      }
              }
              }    
         }
        }
    }

Thursday, November 21, 2013

#4 Sortiranje ocena uz pomoć funkcija i pokazivača na nizove

Napisati program koji radi sledeće:

  1. Unosi ocene učenika,
  2. ispisuje niz ocena  vertikalno i horizontalno u redu
  3. pronalayi najveću i najmanju ocenu u nizu,
  4. sortira niz po rastućem i opadajućem redosledu.

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

#define max_elem 5
// niz od maximalnog broja elemenata
int ocene[max_elem];
 
 void niz_unos (int *niz,int n);
 void niz_ispis_vert(int *niz,int n);
 void niz_ispis_hor(int *niz,int n);
 int niz_min(int *niz,int n);
 int niz_max(int *niz,int n);
 
 void niz_sort_up (int *niz,int n);
 void niz_sort_down (int *niz,int n);
  
main (){
     //unesi elemente niza
     niz_unos(ocene,max_elem);
     printf("\n");
     niz_ispis_vert(ocene,max_elem);
     
     printf("Najmanji element niza::%d \n",niz_min(ocene,max_elem));
     
     printf("Najveci element niza::%d \n",niz_max(ocene,max_elem));
     
     printf("\n");
     printf("Sortiraj niz po rastucem redosledu i ispisi elemente \n");

     niz_sort_up(ocene,max_elem);
     niz_ispis_hor(ocene,max_elem);
     
     printf("Sortiraj niz po opadajucem redosledu i ispisi elemente \n");
     niz_sort_down(ocene,max_elem);
     niz_ispis_hor(ocene,max_elem);
     
 getch();    
}

 void niz_unos(int *niz,int n){
      for(int i=0;i<n;i++){
       printf("[%d]=",i);
       scanf("%d",&niz[i]);        
      } 
}
 void niz_ispis_vert(int *niz,int n){
      for(int i=0;i<n;i++){
       printf("[%d]=%d\n",i,niz[i]);     
      } 
       printf("\n"); //predji u novi red posle ispisa svih elemenata niza
 }
  void niz_ispis_hor(int *niz,int n){
      for(int i=0;i<n;i++){
       printf("%d, ",niz[i]);       
      } 
      printf("\n"); //predji u novi red posle ispisa svih elemenata niza
 }
 int niz_min(int *niz,int n){
     int min=niz[0];
      for(int i=1;i<n;i++){
       if(min>niz[i]) min=niz[i];         
      } 
      return min;
}
int niz_max(int *niz,int n){
     int max=niz[0];
      for(int i=1;i<n;i++){
       if(max<niz[i]) max=niz[i];         
      } 
      return max;
}

void niz_sort_up (int *niz,int n){
     for(int i=0;i<n-1;i++){
       for(int j=i+1;j<n;j++){
            // provera da li je veci trenutni element niza od sledeceg
            // ako jeste stavi ga u trenutni element niza
            if (niz[i]>niz[j]){
             int tmp=niz[i];
             niz[i]=niz[j];
             niz[j]=tmp;                                     
            }
       }      
     }
     
}
void niz_sort_down (int *niz,int n){
     for(int i=0;i<n-1;i++){
       for(int j=i+1;j<n;j++){
            // provera da li je manji trenutni element niza od sledeceg
            // ako jeste stavi ga u trenutni element niza
            if (niz[i]<niz[j]){
             int tmp=niz[i];
             niz[i]=niz[j];
             niz[j]=tmp;                                     
            }
       }      
     }
     
}

Wednesday, October 30, 2013

#3 Izracunavanje proseka ocena i broja pozitivnih i negativnih ocena

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

int main(){
   
    int ocena;
    int n = 0; // brojac negativnih ocena
    int p = 0; // brojac pozitivnih ocena
    int bo = 0; //  brojac svih ocena
   
    int suma = 0;
    float prosek=0.0;
   
     printf("Program za izracunavanje proseka ocena i broja pozitivnih i negativnih ocena\n\n");
     printf("Upisite neku ocenu 1..5 ili -1 za kraj programa.\n\n");
   
    do{
     
     
        printf("ocena="); scanf("%d", &ocena);
       
        if(ocena >= 1 && ocena<=5){
            if(ocena== 1) n++;
            else p++;
              // svaki put podize brojac ocena i sumira ocenu
             bo++;
             //suma=suma+ocena;
             suma += ocena;                
        }
        else{
                        printf("Molimo vas pokusajte ponovo.\n");
        }
       
           
        }while(ocena!=-1);
       
            prosek = (float)suma/bo;
            printf("\nProsek je:%f\n", prosek);
            printf("pozitivne%d\n", p);
            printf("negativne:%d\n", n);
    getch();
    }

Wednesday, May 22, 2013

#6 kornjaca.h Include Objektni Grafika

#ifndef KORNJACA_H
#define KORNJACA_H
#include <graphics.h>

class c_kornjaca{
 private: // ne moze im se pristupiti izvan objekta
  int x;
  int y;
  int r;
  colors color;

  public:    // moze im se pristupiti izvan projekta
   c_kornjaca(int _x, int _y, int _r,colors _color);
  ~c_kornjaca();
  void clearMe();
  void drawMe();
  void move(int position, int step, int maxX, int maxY);  
};

c_kornjaca::c_kornjaca(int _x, int _y, int _r,colors _color){
      x=_x;
      y=_y;
      r=_r;
      color=_color;
      drawMe();          
}
void c_kornjaca::clearMe(){
  setcolor(BLACK);
  circle(x,y,r);  
}
void c_kornjaca::drawMe(){
  setcolor(color);
  circle(x,y,r);  
}
void c_kornjaca::move(int position, int step, int maxX, int maxY){
  switch(position){
  case KEY_LEFT:
       if (x-r-step>0) {
        clearMe();            
        x=x-step;
        drawMe();
       }
     
   
   break;
   case KEY_RIGHT:
       if (x+r+step<maxX) {
       clearMe();
       x=x+step;
       drawMe();
       }
   break;
    case KEY_UP:
       if (y-r-step>0) {
       clearMe();
       y=y-step;
       drawMe();
       }
   break;
     case KEY_DOWN:
       if (y+r+step<maxY) {
       clearMe();
       y=y+step;
       drawMe();
       }
   break;                  
                 
 }  
}
#endif

#6 Crtanje kornjace objektno orjentisan program


#include "kornjaca.h"
#define maxX 800
#define maxY 800

// kornjaca koristi kompjutersku grafiku namestite project za rad sa grafikom
void play(){
     c_kornjaca *kornjaca=new c_kornjaca(400,400,20,GREEN);
     char c=' ';
while(c!='q'){
  if(kbhit( )){
      c=getch();
     kornjaca->move((int) c,10,maxX,maxY);          
  }
}  
   
}

int main(){
  initwindow (maxX,maxY);/*otvara prozor velicine 800 x 800 piksela*/
   
   play();
   
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/
 
   closegraph( );
   return 1;
}

Monday, May 20, 2013

#5 Klasa ucenik u c++


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

// staviti namespace napocetak
using namespace std;

 class c_ucenik{
     
  public:
  c_ucenik(string _ime,string _prezime,int _ocena);
 
  void unos();
  void ispis();
  void ocena_povecaj();
  void ocena_smanji();
 
 
   
  private:
  string ime;
  string prezime;
  int ocena;    
     
 };

 c_ucenik::c_ucenik(string _ime,string _prezime, int _ocena){
   ime=_ime;
   prezime=_prezime;
   ocena=_ocena;                      
 }
void c_ucenik::unos(){
   cout <<"unesi te ime ucenika\n";
   cout <<"ucenik.ime=";
   cin >>ime;
 
   cout <<"unesi te prezime ucenika\n";
   cout <<"ucenik.prezime=";
   cin >>prezime;
 
   cout <<"unesi te ocenu ucenika\n";
   cout <<"ucenik.ocena=";
   cin >>ocena;
}
void  c_ucenik::ispis(){
      cout <<"******************* ISPIS *********************\n";

      cout <<"ucenik.ime="<<ime<<endl;
      cout <<"ucenik.prezime="<<prezime<<endl;
      cout <<"ucenik.ocena="<<ocena<<endl;
      cout <<"***********************************************\n\n";
}
void c_ucenik::ocena_povecaj(){
      ocena++;
     }
void c_ucenik::ocena_smanji(){
      ocena--;
     }

int main(){
 
 
   // kako se koristi konstruktor
   c_ucenik *ucenik=new c_ucenik::c_ucenik("","",0);
 
   ucenik->unos();
 
   ucenik->ispis();
   ucenik->ocena_povecaj();
   ucenik->ocena_povecaj();
 
   ucenik->ispis();
   ucenik->ocena_smanji();
   ucenik->ispis();
 
   getch();

 return 1;  
}

#3 Stringovi u c++


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

#include <iostream>

using namespace std;

void printme(std::string str){
  cout <<"2ime:" <<str <<endl;  
}

int main(){
    // stringovi u c++ mali primer za vezbanje sa funkcijom takodje
    string ime="perica";
   
    cout <<"molim vas unesite neko ime \n";
    cin >> ime;
    cout <<"ime:"<<ime<<endl;;
    printme(ime);

 getch();
 return 0;  
}

Monday, April 29, 2013

#5 Grafika skupljanje vockica

// krugovi padaju sa vrha ekrana skupiti ih sto vise sa pokretnim kolicima
#include <graphics.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<unistd.h>
// left and right arrow keys <- ->

const int LEFT_KEY=75;
const int RIGHT_KEY=77;

// pozicija tacne startna
const int screenMaxX=800;
const int screenMaxY=800;


 int tacnaWidth=200;
 int tacnaHeight=25;
 int tacna_Offset=30;
 int tacna_StartX=300;
 int tacna_StartY=800;// y se uvek nalazi na dnu ekrana i ne menja se

// min i max dokle po X-u moze ici tacna zavisi od
// velicine ekrana po X
// velicine tacne
// a meri se u odnosu na goenji levi ugao tacne :)

 int tacna_minX=0;
 int tacna_maxX=screenMaxX-tacnaWidth; // velicina tacne

 // trenutna pozicija tacne
int currentX=tacna_StartX;
int currentY=tacna_StartY;

// niz vocki
struct s_vocka{
       // prethodna pozicija
       int x;
       int y;
       colors boja;
       };
     
const int vockaMin=0;
const int vockaMax=20;
struct s_vocka vocke[vockaMax];
const int vocka_sirina=40;     // kolko je siroka vocka
const int vocka_rastojanje=40; // kolko je rastojanje izmedju vocki

const int vocka_korak=60; // korak pomeraja u pikselima
const int vocka_brzina=1; // brzina u  sekundama spustanja vocki

 int brojacVocki=0;
/* Skupiti sto vise vockica na tacnu  koristiti tastere LEFT i RIGHT <- -> za pomeranje tacne*/
 int random_number(int min_num, int max_num); // slucajan broj u intervalu od do
 void draw_tacna(int pozX, int pozY);
 void mov_tacna(int keyCode);
 void play_game();

 void vocke_popuni(int pozicija); // dodaj novu poziciju vocke
 void vocke_default(); // popuni osnovni niz sa vockama
 void vocke_ispisi();  // ispisi sadrzaj niza za proveru

 void vocke_crtaj(); // crtaj vocke u zavisnosti od brzine
 void vocke_crtaj_vocku(int pozicija);
 bool bingo_check(int tacnaX, int tacnaY, int vockaX,int vockaY, int vockaRadius); // provera da li je pokupio vocku

main ( )
{
  initwindow (screenMaxX,screenMaxY);/*otvara prozor velicine 800 x 800 piksela*/
     play_game();
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/
   closegraph( );
}

// Funkcije



void play_game(){
     // set random generato position
      srand(time(NULL));
     // Deafult pozicija tacne
     currentX=tacna_StartX;
     currentY=tacna_StartY;
     // postavi sve vocke na mesto
     vocke_default();
     //vocke_ispisi(); testira vocke
     draw_tacna(currentX,currentY);
   
 
       
     clock_t start = clock();
     /*Do something*/
     float seconds=0;
   
    // whait ? seconds then do something
    int j=-1;
    char c;
     while (j<0){
           Sleep(10);
            //usleep(10000);          
           if (seconds>=(float) vocka_brzina){
                start = clock(); // stavi sat na pocetak
                for (int i=vockaMin;i<vockaMax;i++){
                    vocke_crtaj_vocku(i); // crtaj vocku
                 }
                           
           }
           clock_t end = clock();
           seconds = (float)(end - start) / CLOCKS_PER_SEC;
         
           char txt[20];
           //sprintf(txt,"Vocke:%f",seconds);
           sprintf(txt,"Vocke:%d",brojacVocki);
           outtextxy(20,20,txt);
         
            if (kbhit()){
             c=getch();
              if (c=='q') exit(0);
              mov_tacna((int) c);
           }
     }
}

   void vocke_popuni(int pozicija){ // dodaj novu vocku na poziciju vocke
     if (pozicija>=vockaMin && pozicija <vockaMax){
        // vocka ulazi u niz kao slucajan broj pred ekran tj u minus
          vocke[pozicija].x=pozicija*(vocka_sirina)+vocka_rastojanje+int(vocka_sirina/2);
          vocke[pozicija].y= random_number(-screenMaxY,0);
          vocke[pozicija].boja=(colors)random_number(1,14);
     }
   }

 void vocke_default(){ // popuni osnovni niz sa vockama
 
    for (int i=vockaMin;i<vockaMax;i++){
        vocke_popuni(i);
        }
  }
 void vocke_ispisi(){
      char tekst[10];
      for (int i=vockaMin;i<vockaMax;i++){
        sprintf(tekst,"%d,%d|",vocke[i].x,vocke[i].y);
        outtextxy(20+i*70,100,tekst);
        }
  }


 void vocke_crtaj_vocku(int pozicija){ // crtaj vocke u zavisnosti

    if (vocke[pozicija].y<=screenMaxY){
       // brisi staru
       setcolor(BLACK);
       circle(vocke[pozicija].x,vocke[pozicija].y,(int)vocka_sirina/2);
     
       // povecaj za korak
      // vocke[pozicija].x=vocke[pozicija].x+vocka_korak;
      vocke[pozicija].y= vocke[pozicija].y+vocka_korak;
       // crtaj novu
       setcolor(WHITE);
       int radius=(int)(int)vocka_sirina/2;
       circle(vocke[pozicija].x,vocke[pozicija].y,radius);
     
       if (bingo_check(currentX,currentY,vocke[pozicija].x,vocke[pozicija].y,radius)){
         // pogodak
         brojacVocki++;
         // obrisi je i dodaj ponovo
       
         setcolor(BLACK);
         circle(vocke[pozicija].x,vocke[pozicija].y,(int)vocka_sirina/2);
          vocke_popuni(pozicija);                                                                      
       }
     }
     else{
          //dodaj novu u niz vocki na istu poziciju
          // brisi staru
       setcolor(BLACK);
       circle(vocke[pozicija].x,vocke[pozicija].y,(int)vocka_sirina/2);
          vocke_popuni(pozicija);
     }

           


 }

void mov_tacna(int keyCode){
   
     switch(keyCode){
        case LEFT_KEY:{// left
          int tmpX=currentX-tacna_Offset;
          if (tmpX>=tacna_minX && tmpX <=tacna_maxX){
               // brisi prethodnu poziciju tacne
                setcolor(BLACK);
                draw_tacna(currentX,currentY);
             
                // crtaj novu poziciju tacne
                currentX=tmpX; // pomeras na novo mesto
                setcolor(WHITE);
                draw_tacna(currentX,currentY);        
          }
         break;  
        }
        case RIGHT_KEY:{ // right
        int tmpX=currentX+tacna_Offset;
         if (tmpX>=tacna_minX && tmpX <=tacna_maxX){
             
                // brisi prethodnu poziciju tacne
                setcolor(BLACK);
                draw_tacna(currentX,currentY);
             
                // crtaj novu poziciju tacne
                currentX=tmpX; // pomeras na novo mesto
                setcolor(WHITE);
                draw_tacna(currentX,currentY);    
          }
         break;  
        }                              
     }
   
}
bool bingo_check(int tacnaX, int tacnaY, int vockaX,int vockaY, int vockaRadius){
      bool ret=false;
   
      if ((vockaX>=(tacnaX-vockaRadius)) && (vockaX<=(tacnaX+tacnaWidth+vockaRadius)) && (vockaY>=(tacnaY-vockaRadius)))
      {
       Beep(523,100);
       ret=true;
      }
      return ret;
     }
void draw_tacna(int pozX, int pozY){
   
   rectangle(pozX,pozY-tacnaHeight,pozX+tacnaWidth,pozY);
   
}

int random_number(int min_num, int max_num)
        {
            int result=0,low_num=0,hi_num=0;
            if(min_num<max_num)
            {
                low_num=min_num;
                hi_num=max_num+1; // this is done to include max_num in output.
            }else{
                low_num=max_num+1;// this is done to include max_num in output.
                hi_num=min_num;
            }
            //srand(time(NULL));
            result = (rand()%(hi_num-low_num))+low_num;
            return result;
        }

#4 kornjaca.h


#ifndef KORNJACA_H
#define KORNJACA_H
#include <graphics.h>

class c_kornjaca{
 private: // nemoze im se pristupiti izvan objekta
  int x;
  int y;
  int r;
  colors color;
 
  public:    // moze im se pristupiti izvan projekta
   c_kornjaca(int _x, int _y, int _r,colors _color);
  ~c_kornjaca();
  void clearMe();
  void drawMe();
  void move(int position, int step, int maxX, int maxY);    
};

c_kornjaca::c_kornjaca(int _x, int _y, int _r,colors _color){
      x=_x;
      y=_y;
      r=_r;
      color=_color;
      drawMe();            
}
void c_kornjaca::clearMe(){
  setcolor(BLACK);
  circle(x,y,r);  
}
void c_kornjaca::drawMe(){
  setcolor(color);
  circle(x,y,r);  
}
void c_kornjaca::move(int position, int step, int maxX, int maxY){
  switch(position){
  case KEY_LEFT:
       if (x-r-step>0) {
        clearMe();              
        x=x-step;
        drawMe();
       }
     
     
   break;
   case KEY_RIGHT:
       if (x+r+step<maxX) {
       clearMe();
       x=x+step;
       drawMe();
       }
   break;
    case KEY_UP:
       if (y-r-step>0) {
       clearMe();
       y=y-step;
       drawMe();
       }
   break;
     case KEY_DOWN:
       if (y+r+step<maxY) {
       clearMe();
       y=y+step;
       drawMe();
       }
   break;                  
                 
 }  
}
#endif

#4 Kornjaca koja se pomera strelicama po ekranu


//nacrtati krug koji predstvalja kornajcu i pomeraj ga u granicama ekrana sa strelicama gore,dole, levo,desno

#include "kornjaca.h"
#define maxX 800
#define maxY 800

void play(){
     c_kornjaca *kornjaca=new c_kornjaca(400,400,20,RED);
     char c=' ';
while(c!='q'){
  if(kbhit( )){
      c=getch();
     kornjaca->move((int) c,10,maxX,maxY);          
  }
}  
   
}

int main(){
  initwindow (maxX,maxY);/*otvara prozor velicine 800 x 800 piksela*/
   
   play();
   
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/
 
   closegraph( );
   return 1;
}

#2 f_tetris.h


#ifndef _TETRIS_H
#define _TETRIS_H

const   int SPACE=32; // keyboard space
 const int screenMaxX=800;
 const int screenMaxY=800;

 enum figure_type {LINE,RIGHTL,LEFTL,SQUARE,RIGHTB,LEFTB,PIRAMIDE};
 enum figure_position {VERTICAL,HORIZONTAL,V_OPOSITE,H_OPOSITE};



/*
Left: 0, 75
Right: 0, 77
Up: 0, 72
Down: 0, 80
PgUp: 0, 73
PgDn: 0, 81
Home: 0, 71
End: 0, 79
Ins: 0, 82
Del: 0, 83 */

#endif // _TETRIS_H

#5 c_tetris.h


#ifndef _C_TETRIS_H
#define _C_TETRIS_H

#include<graphics.h>
#include "f_tetris.h"

const int maxX=800;
const int maxY=800;

using namespace std;
class figure{
     
      public:
      int left;
      int top;
      int width;
      figure_type type;
      figure_position position;
      colors color;
      int deep3d;
     
       // const
      figure(int _left,int _top, int _width, figure_type _type,figure_position _position, colors _color, int _deep3d);
      // dest
      ~figure();
   
      void drawMe();
      void eraseMe();
     
      private:
      void drawSquare();
      void drawLine();
      void drawLeftL();
      void drawRightL();
      void drawRightB();
      void move(int mov);
     
      public: void play();
};
     
figure::figure(int _left,int _top, int _width, figure_type _type,figure_position _position, colors _color, int _deep3d){
    left=_left;
    top=_top;
    width=_width;
    type=_type;
    position=_position;
    color=_color;
    deep3d=_deep3d;                    
}
figure::~figure(){
  // destroy delete this        
}
void figure::eraseMe(){
   colors tmp=color;
   color=BLACK;
   drawMe();
   color=tmp;
}
void figure::drawMe(){
    switch (type){
     case SQUARE:
          {
           drawSquare();
           break;          
          }
     case LINE:
          {
           drawLine();
           break;          
          }
     case LEFTL:
          {
           drawLeftL();
           break;          
          }
     case RIGHTL:
          {
           drawRightL();
           break;          
          }              
         
    }  
}
void figure::drawSquare(){
     setfillstyle(LINE_FILL, color);
     setcolor(color);
     bar3d(left, top, left+width,top+width, deep3d, 1);
}
void figure::drawLine(){
     setfillstyle(LINE_FILL, color);
     setcolor(color);
     int top_flag=1;
     switch (position){
      case VERTICAL: V_OPOSITE:{
       for (int i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       break;
      }
      case HORIZONTAL: H_OPOSITE:{
       for (int i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       break;
      }
     }
}

void figure::drawLeftL(){
     setfillstyle(LINE_FILL, color);
     setcolor(color);
     int top_flag=1;
     switch (position){
      case VERTICAL:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       i--;
        bar3d(left-width, (top+width*i), left,(top+width*i)+width, deep3d, top_flag);
       break;
      }
      case V_OPOSITE:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       //i--;
        bar3d(left+width, top, left+2*width,top+width, deep3d, top_flag);
       break;
      }
      case HORIZONTAL:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
        bar3d(left, top-width, left+width,top, deep3d, top_flag);
       break;
      }
      case H_OPOSITE:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       i--;
       bar3d(left+width*i, top+width, (left+width*i)+width,top+2*width, deep3d, 1);
       break;
      }
     
     }//end switch
}
void figure::drawRightL(){
     setfillstyle(LINE_FILL, color);
     setcolor(color);
     int top_flag=1;
     switch (position){
      case VERTICAL:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       i--;
        bar3d(left+width, (top+width*i), left+2*width,(top+width*i)+width, deep3d, top_flag);
       break;
      }
      case V_OPOSITE:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       //i--;
        bar3d(left-width, top, left,top+width, deep3d, top_flag);
       break;
      }
      case HORIZONTAL:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       top_flag=0;
        bar3d(left, top+width, left+width,top+2*width, deep3d, top_flag);
       break;
      }
      case H_OPOSITE:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       i--;
       bar3d(left+width*i, top-width, (left+width*i)+width,top, deep3d, 1);
       break;
      }
     
     }//end switch
}

void figure::drawRightB(){
     setfillstyle(LINE_FILL, color);
     setcolor(color);
     int top_flag=1;
     switch (position){
      case VERTICAL:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       i--;
        bar3d(left+width, (top+width*i), left+2*width,(top+width*i)+width, deep3d, top_flag);
       break;
      }
      case V_OPOSITE:{
       int i;
       for (i=0; i<4; i++){
         if (i!=0) top_flag=0;
         bar3d(left, (top+width*i), left+width,(top+width*i)+width, deep3d, top_flag);
       }
       top_flag=1;
       //i--;
        bar3d(left-width, top, left,top+width, deep3d, top_flag);
       break;
      }
      case HORIZONTAL:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       top_flag=0;
        bar3d(left, top+width, left+width,top+2*width, deep3d, top_flag);
       break;
      }
      case H_OPOSITE:{
           int i;
       for (i=0; i<4; i++){
        bar3d(left+width*i, top, (left+width*i)+width,top+width, deep3d, 1);
       }
       i--;
       bar3d(left+width*i, top-width, (left+width*i)+width,top, deep3d, 1);
       break;
      }
     
     }//end switch
}
void figure::move(int mov){
     int tmp;
      eraseMe(); // erase figure
  switch (mov){
       case KEY_LEFT:{
           tmp=left-width;
           if (tmp>=0) left=tmp;
        break;
       }
       case KEY_RIGHT:{
           tmp=left+width;
           if (tmp<=screenMaxX) left=tmp;
        break;
       }
       case KEY_UP:{
           tmp=top-width;
           if (tmp>=0) top=tmp;
        break;
       }
       case KEY_DOWN:{
           tmp=top+width;
           if (tmp<=screenMaxY) top=tmp;
        break;
       }
       case SPACE:{
           tmp=position+1;
           if (tmp>3) tmp=0;
           position=(figure_position) tmp;
        break;
       }
 }//esw
        drawMe(); // draw figure
}
void figure::play(){
   char c='w';
    while (c!='q'){
     if (kbhit()){
             c=getch();
              if (c=='q') exit(0);
              move((int)c);
               char txt[20];
           //sprintf(txt,"Vocke:%f",seconds);
           sprintf(txt,"znak:%d",c);
           outtextxy(20,20,txt);
     }
    }  
   
}
#endif // _C_TETRIS_H

#5 Figure tetrisa pomeranje i rotiranje

// program rotira tetris figure po izboru
#include "c_tetris.h"


int main(){
  initwindow (screenMaxX,800);/*otvara prozor velicine 800 x 800 piksela*/
 
    figure *myFigure=new figure::figure(100,100,100,SQUARE,VERTICAL,LIGHTGREEN,10);  
 
    myFigure->drawMe();
    myFigure->play();
 
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/

   closegraph( );
   return 1;
}



Tuesday, April 2, 2013

4# XOX Igrica Grafika u C-u


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

// redni brojevi u tabeli
/*
 147
 258
 369
 */

void draw_table();
void draw_x(int position);
void draw_o(int position);
void draw_test(); // iscrtaj sve X i O

void play(char znak,int igrac);


void play_game();
 
main ( )
{
  initwindow (800,800);/*otvara prozor veli?ine 800 x 600 piksela*/
 
  play_game();
 

 
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/
   closegraph( );
}

/* Potrebne bibljoteke
   -lbgi
   -lgdi32
   -lcomdlg32
   -luuid
   -loleaut32
   -lole32



*/
void draw_x(int position){
     switch(position){
       // column I
      case 1:line(100,100,300,300);line(300,100,100,300);break;              
      case 2:line(100,300,300,500);line(300,300,100,500);break;
      case 3:line(100,500,300,700);line(300,500,100,700);break;
     
      // column II
      case 4:line(300,100,500,300);line(500,100,300,300);break;              
      case 5:line(300,300,500,500);line(500,300,300,500);break;
      case 6:line(300,500,500,700);line(500,500,300,700);break;  
     
      // column III
      case 7:line(500,100,700,300);line(700,100,500,300);break;              
      case 8:line(500,300,700,500);line(700,300,500,500);break;
      case 9:line(500,500,700,700);line(700,500,500,700);break;              
     }
}

void draw_o(int position){
     switch(position){
       // column I
      case 1:circle(200,200,100);break;              
      case 2:circle(200,400,100);break;
      case 3:circle(200,600,100);break;
     
      // column II
      case 4:circle(400,200,100);break;              
      case 5:circle(400,400,100);break;
      case 6:circle(400,600,100);break;
     
      // column III
      case 7:circle(600,200,100);break;              
      case 8:circle(600,400,100);break;
      case 9:circle(600,600,100);break;            
     }
}
void draw_test(){
  draw_x(1);
  draw_x(2);
  draw_x(3);
 
  draw_x(4);
  draw_x(5);
  draw_x(6);
 
  draw_x(7);
  draw_x(8);
  draw_x(9);
 
  draw_o(1);
  draw_o(2);
  draw_o(3);
 
  draw_o(4);
  draw_o(5);
  draw_o(6);
 
  draw_o(7);
  draw_o(8);
  draw_o(9);
 
     }
void play(char znak,int igrac){
       if(igrac%2==0){
            switch(znak){
             case '1':draw_o(1);break;
             case '2':draw_o(2);break;
             case '3':draw_o(3);break;
           
             case '4':draw_o(4);break;
             case '5':draw_o(5);break;
             case '6':draw_o(6);break;
           
             case '7':draw_o(7);break;
             case '8':draw_o(8);break;
             case '9':draw_o(9);break;
                   
            }        
       }
       else {
             switch(znak){
             case '1':draw_x(1);break;
             case '2':draw_x(2);break;
             case '3':draw_x(3);break;
           
             case '4':draw_x(4);break;
             case '5':draw_x(5);break;
             case '6':draw_x(6);break;
           
             case '7':draw_x(7);break;
             case '8':draw_x(8);break;
             case '9':draw_x(9);break;
                   
            }        
           
            }
     }
void draw_table(){  
   // crtanje pravougaonika oko
   rectangle(100,100,700,700);
   // vertical
   line(300,100,300,700);
   line(500,100,500,700);
   // horizontal lines
   line(100,300,700,300);
   line(100,500,700,500);
   // dodaj brojeve svakog polja
   outtextxy(200,100,"1");
   outtextxy(400,100,"4");
   outtextxy(600,100,"7");
 
   outtextxy(200,300,"2");
   outtextxy(400,300,"5");
   outtextxy(600,300,"8");
 
   outtextxy(200,500,"3");
   outtextxy(400,500,"6");
   outtextxy(600,500,"9");
 
}
void play_game(){
 
   setfillstyle(SOLID_FILL,BLACK);
   bar(0,0,800,800);
   draw_table();
   settextstyle(1,0,1);
   int i=0;
   char str[100]="";
   char c;  
   char poruka[100]="";
   int igrac=1;
   setcolor(RED);
   sprintf(poruka,"Sada igra igrac X unesite broj polja 1..9, pritisnite ENTER");
   outtextxy(5,5,poruka);
 
    while ((c=getch())!='q'){
         if (c!='\r'){
           str[i++]=c;
           setcolor(WHITE);
           outtextxy(40,40,str);
           // ako je sve ok igraj
            play(c,igrac);
            if(c=='r') {
             // igraj ponovo igru
              setcolor(WHITE);
             outtextxy(40,40,"Ponovo igraj");
             play_game();
            }  
           }
          else {
                 //clear screen
            i=0;
            igrac++; // sledeci igrac
            setcolor(BLACK);
            outtextxy(40,40,str);
            for (int j=0;j<99;j++){
                str[j]=' ';
                poruka[j]=' ';
                }
           //
            setcolor(WHITE);
            if(igrac%2==0){
            setcolor(YELLOW);
              sprintf(poruka,"Sada igra igrac O unesite broj polja 1..9, pritisnite ENTER");
              outtextxy(5,5,poruka);          
            }
            else {
                 setcolor(RED);
                   sprintf(poruka,"Sada igra igrac X unesite broj polja 1..9, pritisnite ENTER");
                    outtextxy(5,5,poruka);
            }
               }
    }
    exit(0);
   
}

Thursday, March 28, 2013

3# Grafika osnova crtanje kruga


#include <graphics.h>
main ( )
{
   initwindow (800,600);  /*otvara prozor veli?ine 800 x 600 piksela*/
  circle (400,300,200);  /*crta krug ?ije su koordinate centra (400,300) polupre?nika 200*/
   while (!kbhit( ));  /*zadržava prozor sa crtežom otvorenim*/
   closegraph( );
}

/* Potrebne bibljoteke
Otvoriti File / New Project / Empty Project/

zatim u Project/Project Options/ Parameters / Linker

iskopirajte sledece:
   -lbgi
   -lgdi32
   -lcomdlg32
   -luuid
   -loleaut32
   -lole32



*>

Monday, March 18, 2013

#4 Fajl pisanje i citanje vise poruka u fajl


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


void fajl_pisi(FILE *file,char poruka[256]);
void fajl_citaj(FILE *file);
int broj_poruka=0;
FILE *fajl_poruka;
main(){

  // uneti neke poruke koliko zelim poruka i upisati ih u fajl
  // zatim iscitati te poruke iz fajla
  printf("Program za unos vise poruka u fajl i njihov ispis\n ");
  // koliko zelis poruka
   printf("Koliko zelite poruka da unesete \n ");
   printf("broj_poruka=");scanf("%d",&broj_poruka);
   printf("**********************************************************************\n");
   printf("Molim vas unestie vase poruke jednu po jednu i pritisnite ENTER \n");
   // otvaram neki fajl za unos
   fajl_poruka=fopen("poruke.txt","w+");
   //for petlja unos poruka
   for(int i=0;i<broj_poruka;i++){
      char poruka[256];
      printf("poruka %d \n",i+1);
      scanf("%s",&poruka);
      // unos poruka u fajl
      fajl_pisi(fajl_poruka,poruka);              
   }
  // iscitavnaje poruka iz fajl

    fajl_citaj(fajl_poruka);
   
   fclose(fajl_poruka);  
 getch();    
}

void fajl_pisi(FILE *file,char poruka[256]){
   if(file!=NULL){          
     fprintf(file, "\n %s",poruka); // upisivanje podataka u fajl
    }  
}
void fajl_citaj(FILE *file){
     char poruka[256];
  if (file!=NULL){
   rewind(file); // vrati na pocetak fajla pre citnaja
    while(fgets(poruka, 256, file) != NULL)
     {
     /* get a line, up to 80 chars from fr.  done if NULL */
     printf ("%s\n", poruka);
     }
  }
}

Thursday, March 14, 2013

#3 Pisanje niza ocena u paran i neparan fajl


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

 const int max=3;
 int ocene[max];

 FILE *fParan,*fNeparan;
 void ocene_unos(int koliko);
 void ocene_provera(int koliko);
 void ocene_ispis(int koliko);

void file_upis(FILE *file,int ocena);
void file_ispis(FILE *file);
   int ocena=0;
main(){
     
   printf("Molim vas unesite %d ocena u niz\n",max);
   ocene_unos(max);
   printf("ocene ispis iz niza\n");
   ocene_ispis(max);
   // otvarnaje fajlova
     fParan=fopen("paran.txt","w+");
     fNeparan=fopen("neparan.txt","w+");
     // provera ocena i pisanje u fajl
   ocene_provera(max);
   // ispis sadrzaja fajlova
   // ispis parnog
   printf("Ispis parnih ocena iz fajla\n");
   file_ispis(fParan);
   printf("Ispis neparnih ocena iz fajla\n");
   file_ispis(fNeparan);
 
    fclose(fParan);
    fclose(fNeparan);
 getch();    
}

// Funkcije za unos
 void ocene_unos(int koliko){
  for (int i=0;i<koliko;i++){
       printf("ocene[%d]=",i+1);
       scanf("%d",&ocene[i]);
      }  
 }
  void ocene_ispis(int koliko){
  for (int i=0;i<koliko;i++){
       printf("ocene[%d]=%d\n",i+1,ocene[i]);
      }  
 }
 // provera d ali je paran ili neparna sa upisom u fajl
  void ocene_provera(int koliko){
    for (int i=0;i<koliko;i++){
       if (ocene[i]%2==0) file_upis(fParan,ocene[i]);
       else file_upis(fNeparan,ocene[i]);
      }    
  }
 // rad sa fajlovima
  void file_upis(FILE *file,int ocena){
       if (file!=NULL){
          fprintf(file,"%d\n",ocena);                
          }  
      }  
   void file_ispis(FILE *file){
       if (file!=NULL){
          rewind(file);
          while(fscanf(file,"%d",&ocena)!=EOF){
          printf("%d\n",ocena);              
          }                
       }
     }


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