Advertisement
Guest User

Wellaccio

a guest
May 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.51 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define NMAX 5
  4.  
  5. typedef struct {
  6.     char nome[30];
  7.     char famiglia[30];
  8.     float prezzo;
  9. } TPiante;
  10.  
  11. void Lettura(TPiante v[], int *n);
  12. void Ordinamento(TPiante v[], int n);
  13. float Massimo(TPiante v[], int n);
  14. void Visualizza(TPiante v[], int n);
  15. void Scrittura(TPiante v[], int n);
  16. void Scrittura2(TPiante v[], int n);
  17.  
  18. void main(){
  19.     TPiante v[NMAX];
  20.     int n;
  21.     float maxp;
  22.     Lettura(v, &n);
  23.     Ordinamento(v, n);
  24.     maxp = Massimo(v, n);
  25.     Visualizza(v, n);
  26.     Scrittura(v, n);
  27.     Scrittura2(v, n);
  28. }
  29.  
  30. void Lettura(TPiante v[], int *n){
  31.     FILE *f = fopen("piante.txt", "r");
  32.     char string[100];
  33.     char no[30],fa[30],pr[30];
  34.     int i;
  35.     *n=0;
  36.     while(!feof(f)){
  37.         fgets(string,100,f);
  38.         sscanf(string,"%[^'-']-%[^'-']-%[^'\n']",no,fa,pr);
  39.         strcpy(v[*n].nome, no);
  40.         strcpy(v[*n].famiglia, fa);
  41.         v[*n].prezzo=atoi(pr);
  42.         (*n)++;
  43.     }
  44.     fclose(f);
  45. }
  46.  
  47. void Ordinamento(TPiante v[],int n){
  48.     int i,j;
  49.     char nom[30],fam[30];
  50.     float pre;
  51.     for(i=0;i<n-1;i++){
  52.         for(j=0;j<n-1;j++){
  53.             if(v[j].famiglia > v[j+1].famiglia){
  54.                 strcpy(nom, v[j].nome);
  55.                 strcpy(v[j].nome,v[j+1].nome);
  56.                 strcpy(v[j+1].nome,nom);
  57.                
  58.                 strcpy(fam, v[j].famiglia);
  59.                 strcpy(v[j].famiglia,v[j+1].famiglia);
  60.                 strcpy(v[j+1].famiglia,fam);
  61.                
  62.                 pre=v[j].prezzo;
  63.                 v[j].prezzo=v[j+1].prezzo;
  64.                 v[j+1].prezzo=pre;
  65.             }
  66.         }
  67.     }
  68. }
  69.  
  70. float Massimo(TPiante v[],int n){
  71.     int i;
  72.     float max=0;
  73.     for(i=0;i<n;i++){
  74.         if(v[i].prezzo>max){
  75.             max=v[i].prezzo;
  76.         }
  77.     }
  78.     return max;
  79. }
  80.  
  81. void Visualizza(TPiante v[],int n){
  82.     int i;
  83.     char scelta[10];
  84.     int t=0;
  85.     printf("Inserire la famiglia botanica : ");
  86.     fflush(stdin);
  87.     fgets(scelta,10,stdin);
  88.     for(i=0;i<n;i++){
  89.         if(strcmp(v[i].famiglia, scelta) == 0){
  90.             printf("\nNome : %s\n",v[i].nome);
  91.             printf("Famiglia : %s\n",v[i].famiglia);
  92.             printf("Prezzo : %f\n\n",v[i].prezzo);
  93.             t=1;
  94.             printf("\n--------------------------\n");
  95.         }
  96.     }
  97.     if(t==0){
  98.         printf("\nFamiglia non trovata!\n\n",scelta);
  99.     }
  100. }
  101.  
  102. void Scrittura(TPiante v[], int n){
  103.     FILE *f;
  104.     char string[100];
  105.     int i;
  106.     f=fopen("piante_minori.txt","w");
  107.     for(i=0;i<n;i++){
  108.         if(v[i].prezzo<50){
  109.             fprintf(f,"%f\n",v[i].prezzo);
  110.             fprintf(f,"%s",v[i].famiglia);
  111.             fprintf(f,"%s\n",v[i].nome);
  112.         }
  113.     }
  114.     fclose(f);
  115. }
  116.  
  117. void Scrittura2(TPiante v[], int n){
  118.     FILE *f;
  119.     char string[100];
  120.     int i;
  121.     f=fopen("prova.txt","w");
  122.     for(i=0;i<n;i++){
  123.             fprintf(f,"%s",v[i].nome);
  124.             fprintf(f,"%s",v[i].famiglia);     
  125.             fprintf(f,"%f\n",v[i].prezzo);
  126.     }
  127.     fclose(f);
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement