Thursday, February 13, 2014

#5 Slozena struktura ucenik sa nizom od 3 predmeta kao pod strukture

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

// struktura datum i funkcije upisa i ispisa
struct s_datum{
int dan;
int mesec;
int godina;
};
struct s_datum s_datum_upis(){
   struct s_datum datum;
   printf("    datum.dan=");scanf("%d",&datum.dan);
   printf("    datum.mesec=");scanf("%d",&datum.mesec);
   printf("    datum.godina=");scanf("%d",&datum.godina);
   return datum;
}

void s_datum_ispis(struct s_datum datum){
   printf("    datum.dan=%d\n",datum.dan);
   printf("    datum.mesec=%d\n",datum.mesec);
   printf("    datum.godina=%d\n",datum.godina);
}
struct s_predmet{
char ime[20];
int ocena;
};


struct s_predmet s_predmet_upis(){
   struct s_predmet predmet;
   printf("    predmet.ime=");scanf("%s",&predmet.ime);
   printf("    predmet.ocena=");scanf("%d",&predmet.ocena);
   return predmet;
}

void s_predmet_ispis(struct s_predmet predmet){
  printf("    predmet.ime=%s\n",predmet.ime);
  printf("    predmet.ocena=%d\n",predmet.ocena);
}

// struktura ucenik i funkcije upisa i ispisa
struct s_ucenik{
char prezime[20];
char ime[20];
struct s_datum datum;
struct s_predmet predmet[3];

};

struct s_ucenik s_ucenik_upis(){
struct s_ucenik ucenik;
printf("ucenik.prezime:");scanf("%s",&ucenik.prezime);
printf("ucenik.ime:");scanf("%s",&ucenik.ime);
printf("\n");
ucenik.datum=s_datum_upis();
for (int i=0;i<3;i++){
ucenik.predmet[i]=s_predmet_upis();
printf("\n");
}
return ucenik;
}
void s_ucenik_ispis(struct s_ucenik ucenik){
printf("ucenik.prezime:%s\n",ucenik.prezime);
  printf("ucenik.ime:%s\n",ucenik.ime);
  printf("\n");
s_datum_ispis(ucenik.datum);
printf("\n");
for (int i=0;i<3;i++){
s_predmet_ispis(ucenik.predmet[i]);
printf("\n");
}
}
main (){
 struct s_ucenik ucenik;

 printf("Unesite podatke za ucenika \n");
 ucenik=s_ucenik_upis();

 printf("Ispis podataka od ucenika \n");
 s_ucenik_ispis(ucenik);




 getch();
}

#4 Struktura uceni slozena sa pripadajucim funkcijama upisa i ispisa za svaku pod strukturu

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

// struktura datum i funkcije upisa i ispisa
struct s_datum{
int dan;
int mesec;
int godina;
};
struct s_datum s_datum_upis(){
   struct s_datum datum;
   printf("datum.dan=");scanf("%d",&datum.dan);
   printf("datum.mesec=");scanf("%d",&datum.mesec);
   printf("datum.godina=");scanf("%d",&datum.godina);
   return datum;
}

void s_datum_ispis(struct s_datum datum){
   printf("datum.dan=%d\n",datum.dan);
   printf("datum.mesec=%d\n",datum.mesec);
   printf("datum.godina=%d\n",datum.godina);
}

// struktura ucenik i funkcije upisa i ispisa
struct s_ucenik{
char prezime[20];
char ime[20];
struct s_datum datum;
};

struct s_ucenik s_ucenik_upis(){
struct s_ucenik ucenik;
printf("ucenik.prezime:");scanf("%s",&ucenik.prezime);
printf("ucenik.ime:");scanf("%s",&ucenik.ime);
ucenik.datum=s_datum_upis();
return ucenik;
}
void s_ucenik_ispis(struct s_ucenik ucenik){
printf("ucenik.prezime:%s\n",ucenik.prezime);
  printf("ucenik.ime:%s\n",ucenik.ime);
s_datum_ispis(ucenik.datum);
}
main (){
 struct s_ucenik ucenik;

 printf("Unesite podatke za ucenika \n");
 ucenik=s_ucenik_upis();

 printf("Ispis podataka od ucenika \n");
 s_ucenik_ispis(ucenik);




 getch();
}

Thursday, February 6, 2014

#5 Brojac reci, navodnika, zareza... u recenici

#include<stdio.h>
#include<conio.h>
#include<string.h>
char recenica[100];
 char rec[100];
 int br_rec=0;

 int br_slova=0;
 int br_space=0;

 int br_reci=0;

 int br_tacka=0;
 int br_zarez=0;
 int br_usklicnik=0;
 int br_upitnik=0;
 int br_tackaZarez=0;
 int br_dvotacki=0;
 int br_navodnika=0;
 int br_apostrofa=0;

main (){

 printf("program za brojanje znakova u recenici");
 printf("Molim vas unesite neku recenicu i pritisnite taster enter\n");

 gets(recenica);

  char znakPrethodni='#';
 for (int i=0;i<strlen(recenica);i++){
  char znak=recenica[i];
 
  if (znak!=' '){
   printf("%c",znak);
  znakPrethodni=znak;
  }
  else{
  if (znakPrethodni!=' ') printf("\n");
  znakPrethodni=znak;
  }
  // proverava velika slova od 65 do 90 i mala od 97 do 122
  if((int(znak)>=65 && int(znak)<=90) || (int(znak)>=97 && int(znak)<=122)) {
  br_slova++;
br_rec++;
  }
  else {
  if(br_rec>=2) {
  br_reci++;
  br_rec=0;
  }
  else {
  br_rec=0;
  }
  }
 
  if(znak==' ') br_space++;
  //if(znak=='%') br_reci++;
  if(znak=='.') br_tacka++;
  if(znak==',') br_zarez++;
  if(znak=='!') br_usklicnik++;
  if(znak=='?') br_upitnik++;
  if(znak==';') br_tackaZarez++;
  if(znak==':') br_dvotacki;
  if(znak=='"') br_navodnika++;
  if(znak=='\'') br_apostrofa++;
 
 }
 //if (br_rec>=2) br_reci++;// kada zavrsi citanje cele recenice proverava da li je zaostala rec
 printf("\n");
 printf("broj reci: %d\n",br_reci);
 printf("broj slova: %d\n",br_slova);
 printf("broj praznih mesta: %d\n",br_space);
 printf("broj . %d\n",br_tacka);
 printf("broj , %d\n",br_zarez);
 printf("broj ! %d\n",br_usklicnik);
 printf("broj ? %d\n",br_upitnik);
 printf("broj ; %d\n",br_tackaZarez);
 printf("broj : %d\n",br_dvotacki);
 printf("broj \" %d\n",br_navodnika);
 printf("broj \' %d",br_apostrofa);


 getch();
}

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