Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define dim 20
- typedef struct{
- char cognome[16];
- char nome[12];
- int stipAnnuo;
- }dipendente;
- void StampaFile(FILE*out);
- void CopiaInVettore(FILE*out,dipendente dip[],int*);
- void StampaVettore(dipendente dip[],int);
- int RicercaBinaria(dipendente dip[],int);
- void StampaTrovato(dipendente dip[],int);
- int main()
- {
- FILE*fp;
- dipendente dipendenti[dim];
- int n;
- int pos=0;
- fp=fopen("anagrafe2.txt","r");
- StampaFile(fp);
- fclose(fp);
- fp=fopen("anagrafe2.txt","r");
- CopiaInVettore(fp,dipendenti,&n);
- fclose(fp);
- StampaVettore(dipendenti,n);
- pos=RicercaBinaria(dipendenti,n);
- StampaTrovato(dipendenti,pos);
- puts("\n\n");
- system("PAUSE");
- return 0;
- }
- void StampaFile(FILE*out){
- char c;
- if(out==NULL) printf("\nIl file non può essere aperto!");
- else{
- printf("\nIl file e' in stampa. Attendere prego...\n");
- c=fgetc(out);
- while(!feof(out)){
- putchar(c);
- c=fgetc(out);
- }
- }
- printf("\nLa stampa da file e' stata eseguita correttamente\n");
- }
- void CopiaInVettore(FILE*out,dipendente dip[],int*nPtr){
- printf("\nCopia da file a dipendenti in corso...\n");
- int i=0;
- while(!feof(out)){
- fscanf(out,"%s%s%d",&dip[i].cognome,&dip[i].nome,&dip[i].stipAnnuo);
- i++;
- }
- printf("\nCopia eseguita correttamente!");
- *nPtr=i;
- }
- void StampaVettore(dipendente dip[],int nPtr){
- int i;
- puts("\nStampa da vettore in corso...");
- for(i=0;i<nPtr;i++){
- printf("\nDipendente numero %d" ,i+1);
- printf("\nCognome: %s" ,dip[i].cognome);
- printf("\nNome: %s" ,dip[i].nome);
- printf("\nStipendio: %d" ,dip[i].stipAnnuo);
- puts("\n");
- }
- printf("\nStampa da vettore eseguita correttamente!");
- }
- int RicercaBinaria(dipendente dip[],int nPtr){
- int trovato=0;
- //int inf=0;
- //int sup=nPtr-1;
- //int m=0;
- int stipendio;
- int i=0;
- int pos=-1;
- printf("\nInserire lo stipendio che si vuole ricercare: ");
- scanf("%d" ,&stipendio);
- while((trovato!=1)&&(i<nPtr-2)){
- i++;
- if(stipendio==dip[i].stipAnnuo){
- trovato=1;
- pos=i;
- }
- }
- return pos;
- }
- void StampaTrovato(dipendente dip[],int x){
- if(x==-1){
- printf("\nLo stipendio ricercato non e' stato trovato");
- }
- else{
- printf("\nLo stipendio cercato e' nella posizione: %d" ,x);
- printf(" ed appartiene a %s %s \n" ,dip[x].cognome,dip[x].nome);
- }
- }
Add Comment
Please, Sign In to add comment