Guest User

Untitled

a guest
Jun 24th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define Dim 30
  4.  
  5. typedef struct{char cognomeDip[16];
  6. char nomeDip[12];
  7. int stipAnnuo;
  8. } dipendente;
  9.  
  10. void leggifile(FILE*out);
  11. void memorizzainvettore(FILE*out,dipendente a[],int*m);
  12. void stampavettore(dipendente a[],int m);
  13. void ricercabinaria(dipendente a[],int m,int x,int mm,int trovato);
  14. void stampa(dipendente a[],int mm, int trovato);
  15.  
  16.  
  17. int main()
  18. {
  19. FILE*fp;
  20. dipendente dipendenti[Dim];
  21. int n;
  22. int val,trov,mmm;
  23.  
  24. fp=fopen("anagrafe.txt","r");
  25. leggifile(fp);
  26. fclose(fp);
  27.  
  28. fp=fopen("anagrafe.txt","r");
  29. memorizzainvettore(fp,dipendenti,&n);
  30. fclose(fp);
  31.  
  32. stampavettore(dipendenti,n);
  33.  
  34. printf("\ninserisci un valore da ricercare (campo stipendio) ");
  35. scanf("%d",&val);
  36.  
  37. ricercabinaria(dipendenti,n,val,mmm,trov);
  38.  
  39. stampa(dipendenti,mmm,trov);
  40.  
  41.  
  42. system("PAUSE");
  43. return 0;
  44. }
  45.  
  46.  
  47. void leggifile(FILE*out)
  48. {
  49. if(out==NULL)
  50. {
  51. printf("errore apertura del file in lettura\n");
  52. }
  53. else
  54. {
  55. printf("******CONTENUTO FILE******\n\n");
  56. char c;
  57. c=fgetc(out);
  58. while(!feof(out))
  59. {
  60. putchar(c);
  61. c=fgetc(out);
  62. }
  63. }
  64. printf("\n");
  65. }
  66.  
  67. void memorizzainvettore(FILE*out,dipendente a[],int*m)
  68. {
  69. if(out==NULL)
  70. {
  71. printf("errore apertura del file in lettura\n");
  72. }
  73. else
  74. {
  75. printf("\nMEMORIZZAZIONE NEL VETTORE IN CORSO....\n\n");
  76. int i;
  77. i=0;
  78. while(!feof(out))
  79. {
  80. fscanf(out,"%s%s%d",&a[i].cognomeDip,&a[i].nomeDip,&a[i].stipAnnuo);
  81. i++;
  82. }
  83. *m=i;
  84. }
  85. }
  86.  
  87.  
  88. void stampavettore(dipendente a[],int m)
  89. {
  90. printf("\n******CONTENUTO DEL VETTORE DIPENDENTI******\n\n");
  91. int i;
  92. for(i=0;i<m;i++)
  93. {
  94. printf("cognome dipendente: %s\n",a[i].cognomeDip);
  95. printf("nome dipendente: %s\n",a[i].nomeDip);
  96. printf("stipendio annuo: %d\n",a[i].stipAnnuo);
  97. printf("\n");
  98. }
  99. }
  100.  
  101.  
  102. void ricercabinaria(dipendente a[],int m,int x,int mm,int trovato)
  103. {
  104. int inf,sup;
  105. int i;
  106. inf=0;
  107. sup=m-1;
  108. trovato=0;
  109. while(inf<=sup && trovato!=1)
  110. {
  111. mm=(inf+sup)/2;
  112. if(x>a[mm].stipAnnuo)
  113. {
  114. inf=mm+1;
  115. }
  116. else if(x<a[mm].stipAnnuo)
  117. {
  118. sup=mm-1;
  119. }
  120. else {trovato=1;}
  121. }
  122. }
  123.  
  124. void stampa(dipendente a[],int mm, int trovato){
  125. if(trovato==0)
  126. {
  127. printf("\nnon esiste un dipendente con stipendio uguale a val\n\n");
  128. }
  129. if(trovato==1)
  130. {
  131. int i;
  132. printf("\nil dipendente con stipendio uguale a quello immesso e'\n\n");
  133. printf("cognome dipendente: %s\n",a[mm].cognomeDip);
  134. printf("nome dipendente: %s\n",a[mm].nomeDip);
  135. printf("stipendio annuo: %d\n",a[mm].stipAnnuo);
  136. printf("\n");
  137. }
  138. }
Add Comment
Please, Sign In to add comment