Wednesday, March 18, 2015

#6 Levo spregnuta lista

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

typedef char string10[10];
struct cvor{
        string10 ime_cvora;
        struct cvor *prethodni;
        };
typedef cvor LCVOR;

void lista_ispis(LCVOR *tekuci){
  while (tekuci!=NULL){
    tekuci=tekuci->prethodni;
    printf("%s ",tekuci->ime_cvora);    
   }  
}


main(){

 LCVOR *pocetakListe, *novi;
 char ch[20];
 pocetakListe=NULL;
 printf("\n Unesi sadrzaj liste :\n");

 do{
    scanf("%s",&ch);
    novi = (LCVOR*)malloc(sizeof(LCVOR));
    strcpy(novi->ime_cvora,ch);
    novi->prethodni = pocetakListe;
    pocetakListe=novi;      
       
   }while(strcmp(ch,"kraj")!=0);
 
   printf("Sadrzaj Liste je :\n");
   lista_ispis(pocetakListe);
 
 getch();    
}

Monday, March 16, 2015

#5 Pisanje i citanje 3 strukture iz binarnog fajla

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

// ime fajla

#define fOsoba "osoba.dat"
#define max_niza 3

// pisanje i citanje 3 strukture ili struktura iz fajla

 struct s_osoba{
    char ime[20];
    char prezime[20];
    int godine;      
 };

 void osoba_unos(struct s_osoba *osoba);
 void osoba_ispis(struct s_osoba *osoba);

 void osoba_fUnos(FILE *fp,struct s_osoba *osoba);
 void osoba_fIspis(FILE *fp,struct s_osoba *osoba);

 // rad sa vise osoba
 void osobe_unos(struct s_osoba osobe[], int max);
 void osobe_ispis(struct s_osoba osobe[], int max);
 
 void osoba_fUnosBin(FILE *fp,struct s_osoba *osoba);
 void osoba_fIspisBin(FILE *fp,struct s_osoba *osoba);


 void osobe_fUnosBin(FILE *fp,struct s_osoba osoba[],int max);
 void osobe_fIspisBin(FILE *fp,struct s_osoba osoba[]);

 // jedna osoba
 struct s_osoba osoba;
 // niz osoba
 struct s_osoba osobe[max_niza];
 main(){
        printf("Program za unos i citanje 3 strukture iz binarnog fajla \n");
        FILE *fp=fopen(fOsoba,"wb");
         //unos strukture sa tastature
         osobe_unos(osobe,max_niza);
         // upis u fajl
         osobe_fUnosBin(fp,&osoba,max_niza);
         // citanje iz fajla
         osobe_fIspisBin(fp,&osoba);
          // ispis strukture na ekran
          osobe_ispis(osobe,max_niza);
          //
         
          fclose(fp);
         getch();      
}

void osoba_unos(struct s_osoba *osoba){
        printf("osoba.ime=");scanf("%s",&osoba->ime);
        printf("osoba.prezime=");scanf("%s",&osoba->prezime);
        printf("osoba.godine=");scanf("%d",&osoba->godine);
     }
void osoba_ispis(struct s_osoba *osoba){
        printf("osoba.ime=%s\n",osoba->ime);
        printf("osoba.prezime=%s\n",osoba->prezime);
        printf("osoba.godine=%d\n",osoba->godine);
     }
void osobe_unos(struct s_osoba osobe[],int max){
      printf("\n##################### UNOS #################### \n");
        for (int i=0;i<max;i++){
         printf("****** OSOBA ****** \n");
          struct s_osoba osoba;
          osoba_unos(&osoba);
          osobe[i]=osoba;
        }
     }
void osobe_ispis(struct s_osoba osobe[], int max){
      printf("\n##################### ISPIS #################### \n");
        for (int i=0;i<max;i++){
          printf("****** OSOBA ****** \n");
          osoba_ispis(&osobe[i]);
        }
     }
void osoba_fUnos(FILE *fp,struct s_osoba *osoba){
      if (fp!=NULL){
        fprintf(fp,"%s\n",osoba->ime);
        fprintf(fp,"%s\n",osoba->prezime);
        fprintf(fp,"%d\n",osoba->godine);
       }
       else{
       printf("Cant read or create file");
       }
     }
 void osoba_fIspis(FILE *fp,struct s_osoba *osoba){
     if (fp!=NULL){
       rewind(fp); // vrati na pocetak fajla pre citnaja
         char str[20];
        fgets(str,20,fp); strcpy(osoba->ime,str);
        fgets(str,20,fp); strcpy(osoba->prezime,str);
        fscanf (fp, "%d", &osoba->godine);
       
       }
       else{
       printf("Cant read or create file");
       }
     }
void osoba_fUnosBin(FILE *fp,struct s_osoba *osoba){
      if (fp!=NULL){
        fwrite(osoba, sizeof(struct s_osoba), 1, fp);
       }
       else{
       printf("Cant read or create file");
       }
     }

  void osoba_fIspisBin(FILE *fp,struct s_osoba *osoba){
     if (fp!=NULL){
       rewind(fp); // vrati na pocetak fajla pre citnaja
       fread(osoba,sizeof(struct s_osoba),1,fp);
       }
       else{
       printf("Cant read or create file");
       }
     }
void osobe_fUnosBin(FILE *fp,struct s_osoba osobe[],int max){
      if (fp!=NULL){
         for(int i=0;i<max;i++){
               fwrite(&osobe[i], sizeof(struct s_osoba), 1, fp);
         }
       }
       else{
       printf("Cant read or create file");
       }
     }

  void osobe_fIspisBin(FILE *fp,struct s_osoba osobe[]){
     if (fp!=NULL){
       rewind(fp); // vrati na pocetak fajla pre citnaja
       // citaj sve dok je velicna procitanog ista kao velicina strukture
       struct s_osoba osoba;
       int i=0;
        while ( fread(&osoba,sizeof(struct s_osoba),1,fp)== sizeof(struct s_osoba)) {
        /* byte swap here */
          osobe[i]=osoba;
          struct s_osoba osoba;
          i++;
        }
     
       }
       else{
       printf("Cant read or create file");
       }
     }