Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define Dim 30
- typedef struct{char cognomeDip[16];
- char nomeDip[12];
- int stipAnnuo;
- } dipendente;
- void leggifile(FILE*out);
- void memorizzainvettore(FILE*out,dipendente a[],int*m);
- void stampavettore(dipendente a[],int m);
- void ricercabinaria(dipendente a[],int m,int x,int mm,int trovato);
- void stampa(dipendente a[],int mm, int trovato);
- int main()
- {
- FILE*fp;
- dipendente dipendenti[Dim];
- int n;
- int val,trov,mmm;
- fp=fopen("anagrafe.txt","r");
- leggifile(fp);
- fclose(fp);
- fp=fopen("anagrafe.txt","r");
- memorizzainvettore(fp,dipendenti,&n);
- fclose(fp);
- stampavettore(dipendenti,n);
- printf("\ninserisci un valore da ricercare (campo stipendio) ");
- scanf("%d",&val);
- ricercabinaria(dipendenti,n,val,mmm,trov);
- stampa(dipendenti,mmm,trov);
- system("PAUSE");
- return 0;
- }
- void leggifile(FILE*out)
- {
- if(out==NULL)
- {
- printf("errore apertura del file in lettura\n");
- }
- else
- {
- printf("******CONTENUTO FILE******\n\n");
- char c;
- c=fgetc(out);
- while(!feof(out))
- {
- putchar(c);
- c=fgetc(out);
- }
- }
- printf("\n");
- }
- void memorizzainvettore(FILE*out,dipendente a[],int*m)
- {
- if(out==NULL)
- {
- printf("errore apertura del file in lettura\n");
- }
- else
- {
- printf("\nMEMORIZZAZIONE NEL VETTORE IN CORSO....\n\n");
- int i;
- i=0;
- while(!feof(out))
- {
- fscanf(out,"%s%s%d",&a[i].cognomeDip,&a[i].nomeDip,&a[i].stipAnnuo);
- i++;
- }
- *m=i;
- }
- }
- void stampavettore(dipendente a[],int m)
- {
- printf("\n******CONTENUTO DEL VETTORE DIPENDENTI******\n\n");
- int i;
- for(i=0;i<m;i++)
- {
- printf("cognome dipendente: %s\n",a[i].cognomeDip);
- printf("nome dipendente: %s\n",a[i].nomeDip);
- printf("stipendio annuo: %d\n",a[i].stipAnnuo);
- printf("\n");
- }
- }
- void ricercabinaria(dipendente a[],int m,int x,int mm,int trovato)
- {
- int inf,sup;
- int i;
- inf=0;
- sup=m-1;
- trovato=0;
- while(inf<=sup && trovato!=1)
- {
- mm=(inf+sup)/2;
- if(x>a[mm].stipAnnuo)
- {
- inf=mm+1;
- }
- else if(x<a[mm].stipAnnuo)
- {
- sup=mm-1;
- }
- else {trovato=1;}
- }
- }
- void stampa(dipendente a[],int mm, int trovato){
- if(trovato==0)
- {
- printf("\nnon esiste un dipendente con stipendio uguale a val\n\n");
- }
- if(trovato==1)
- {
- int i;
- printf("\nil dipendente con stipendio uguale a quello immesso e'\n\n");
- printf("cognome dipendente: %s\n",a[mm].cognomeDip);
- printf("nome dipendente: %s\n",a[mm].nomeDip);
- printf("stipendio annuo: %d\n",a[mm].stipAnnuo);
- printf("\n");
- }
- }
Add Comment
Please, Sign In to add comment