Guest User

Untitled

a guest
Jun 24th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.15 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define dim 20
  5. typedef struct{
  6.         char cognome[16];
  7.         char nome[12];
  8.         int stipAnnuo;
  9.         }dipendente;
  10. void StampaFile(FILE*out);
  11. void CopiaInVettore(FILE*out,dipendente dip[],int*);
  12. void StampaVettore(dipendente dip[],int);
  13. int RicercaBinaria(dipendente dip[],int);
  14. void StampaTrovato(dipendente dip[],int);
  15. int main()
  16. {
  17.     FILE*fp;
  18.     dipendente dipendenti[dim];
  19.     int n;
  20.     int pos=0;
  21.     fp=fopen("anagrafe2.txt","r");
  22.     StampaFile(fp);
  23.     fclose(fp);
  24.     fp=fopen("anagrafe2.txt","r");
  25.     CopiaInVettore(fp,dipendenti,&n);
  26.     fclose(fp);
  27.     StampaVettore(dipendenti,n);
  28.     pos=RicercaBinaria(dipendenti,n);
  29.     StampaTrovato(dipendenti,pos);
  30.     puts("\n\n");
  31.    
  32.  
  33.   system("PAUSE"); 
  34.   return 0;
  35. }
  36.  
  37. void StampaFile(FILE*out){
  38.      char c;
  39.      if(out==NULL)  printf("\nIl file non può essere aperto!");
  40.      else{
  41.           printf("\nIl file e' in stampa. Attendere prego...\n");
  42.           c=fgetc(out);
  43.           while(!feof(out)){
  44.                             putchar(c);
  45.                             c=fgetc(out);
  46.                             }
  47.           }
  48.      printf("\nLa stampa da file e' stata eseguita correttamente\n");
  49.      }
  50.  
  51. void CopiaInVettore(FILE*out,dipendente dip[],int*nPtr){
  52.      printf("\nCopia da file a dipendenti in corso...\n");
  53.      int i=0;
  54.      while(!feof(out)){
  55.                        fscanf(out,"%s%s%d",&dip[i].cognome,&dip[i].nome,&dip[i].stipAnnuo);
  56.                        i++;
  57.                        }
  58.      printf("\nCopia eseguita correttamente!");
  59.      *nPtr=i;
  60.      }
  61.  
  62. void StampaVettore(dipendente dip[],int nPtr){
  63.      int i;
  64.      puts("\nStampa da vettore in corso...");
  65.      for(i=0;i<nPtr;i++){
  66.                          printf("\nDipendente numero %d" ,i+1);
  67.                          printf("\nCognome: %s" ,dip[i].cognome);
  68.                          printf("\nNome: %s" ,dip[i].nome);
  69.                          printf("\nStipendio: %d" ,dip[i].stipAnnuo);
  70.                          puts("\n");
  71.                          }
  72.      printf("\nStampa da vettore eseguita correttamente!");
  73.      }
  74.      
  75. int RicercaBinaria(dipendente dip[],int nPtr){
  76.     int trovato=0;
  77.     //int inf=0;
  78.     //int sup=nPtr-1;
  79.     //int m=0;
  80.     int stipendio;
  81.     int i=0;
  82.     int pos=-1;
  83.     printf("\nInserire lo stipendio che si vuole ricercare: ");
  84.     scanf("%d" ,&stipendio);
  85.     while((trovato!=1)&&(i<nPtr-2)){
  86.                                 i++;
  87.                                 if(stipendio==dip[i].stipAnnuo){
  88.                                                                 trovato=1;
  89.                                                                 pos=i;
  90.                                                                 }
  91.                                 }
  92.     return pos;
  93. }
  94.  
  95. void StampaTrovato(dipendente dip[],int x){
  96.      if(x==-1){
  97.               printf("\nLo stipendio ricercato non e' stato trovato");
  98.               }
  99.      else{
  100.           printf("\nLo stipendio cercato e' nella posizione: %d" ,x);
  101.           printf("  ed appartiene a %s %s \n" ,dip[x].cognome,dip[x].nome);
  102.           }
  103.      }
Add Comment
Please, Sign In to add comment