Calcolo della media .

di il
32 risposte

32 Risposte - Pagina 2

  • Re: Calcolo della media .

    Ho visto che fa parte della libreria stdlib , ma non ho ben capito come essere utilizzato.. puoi farmi un esempio per favore??
  • Re: Calcolo della media .

    Ho risolto tutto con lo sscanf.
  • Re: Calcolo della media .

    Sto provando anche ad inserire minimo e media tra i voti , ma sono arrivato a queto punto (metto solo il main) :
    
                   
     main(){
                   char buffer_nome[DIM];
                   char buffer_cognome[DIM];
                   char buffer_voto[DIM];
                   int cont;
                   int valore;
                   int somma=0;
                   double media=0.0;
                   
                   int i=0;
                   
                   int min=0;
                   int max=0;
                   
                    stud_p head=NULL;
                  
                              while(cont){
                                       
                                          valore=0;
                              printf("Inserire nome alunno :");
                              mygetline(buffer_nome,DIM);
                              if(strcmp(buffer_nome,"exit")==0)
                              break;
                              
                              printf("Inserire cognome alunno :");
                              mygetline(buffer_cognome,DIM);
                              if(strcmp(buffer_cognome,"exit")==0)
                              break;
                              
                              printf("Inserire voto alunno :");
                              mygetline(buffer_voto,DIM);
                              sscanf(buffer_voto, "%d", &valore);
                              min=max=valore;
                              if (valore<min) min=valore;
                              if (valore>max) max=valore;
                              somma=somma+valore;
                            
                              if(strcmp(buffer_voto,"exit")==0)
                              break;
                              
                              printf("\n\nPer terminare digitare exit. . .\n\n");
                              if(strcmp(buffer_nome,"")!=0&&strcmp(buffer_cognome,"")!=0&&strcmp(buffer_voto,"")!=0)
                               
                              head=Add_to_list(head,buffer_nome,buffer_cognome,buffer_voto);
                              print_list(head);
                              
                              i++;
                               }
                               printf("La somma e'%d :",somma);
                               printf("Il minimo e'%d :",min);
                               printf("Il massimo  e'%d :",max);
                               printf("Il  indice e'%d :",i);
                               
                               media=somma/i;
                               printf("\n\n");
                               printf("La somma e'%f :",media);
                               system("pause");
                               }
    

    Il problema e' mi stampa come minimo=massimo l'ultimo valore inserito , come maiii ?
  • Re: Calcolo della media .

    E' difficile rispondere perché quel codice è pieno zeppo di linee senza senso ed è confusionario, anche perché continui a postare codice NON INDENTATO ...

    A prima vista non si capisce perché scrivi

    min = max = somma = valore;

    all'interno del ciclo, così che i valori min e max siano sempre cambiati senza poter effettivamente servire per memorizzare il minimo e il massimo e la somma sia sballata.

    Poi non si capisce perché utilizzi due variabili (valore e a) per la stessa cosa ...
  • Re: Calcolo della media .

    E' stato corretto adesso .
  • Re: Calcolo della media .

    Codice completo.
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define DIM 50
    #define FILENAME "test.dat"
    
    
    
    struct stud{
           char nome[DIM];
           char cognome[DIM];
           char voto[DIM];
           struct stud *next;
           };
           
           typedef struct stud *stud_p;
           
           
           void print_list(stud_p p);
           int mygetline(char buffer_line[],int Max_l);
           stud_p Add_to_list(stud_p head,char nome[],char cognome[],char voto[]);
           
           main(){
                   char buffer_nome[DIM];
                   char buffer_cognome[DIM];
                   char buffer_voto[DIM];
                   int cont;
                   int valore;
                   int somma=0;
                   double media=0.0;
                   
                   int i=0;
                   
                   int min=0;
                   int max=0;
                   
                    stud_p head=NULL;
                  
                              while(cont){
                                       
                                          valore=0;
                              printf("Inserire nome alunno :");
                              mygetline(buffer_nome,DIM);
                              if(strcmp(buffer_nome,"exit")==0)
                              break;
                              
                              printf("Inserire cognome alunno :");
                              mygetline(buffer_cognome,DIM);
                              if(strcmp(buffer_cognome,"exit")==0)
                              break;
                              
                              printf("Inserire voto alunno :");
                              mygetline(buffer_voto,DIM);
                              sscanf(buffer_voto, "%d", &valore);
                              min=max=valore;
                              if (valore<min) min=valore;
                              if (valore>max) max=valore;
                              somma=somma+valore;
                            
                              if(strcmp(buffer_voto,"exit")==0)
                              break;
                              
                              printf("\n\nPer terminare digitare exit. . .\n\n");
                              if(strcmp(buffer_nome,"")!=0&&strcmp(buffer_cognome,"")!=0&&strcmp(buffer_voto,"")!=0)
                               
                              head=Add_to_list(head,buffer_nome,buffer_cognome,buffer_voto);
                              print_list(head);
                              
                              i++;
                               }
                               printf("La somma e'%d :",somma);
                               printf("Il minimo e'%d :",min);
                               printf("Il massimo  e'%d :",max);
                               printf("Il  indice e'%d :",i);
                               
                               media=somma/i;
                               printf("\n\n");
                               printf("La somma e'%f :",media);
                               system("pause");
                               }
                               
                                                           
    void print_list(stud_p p)
    {
         if(p!=NULL)
         {
                    printf("\n%4s  %4s  %4s  \n\n",p->nome,p->cognome,p->voto);
                    p=p->next;
                    print_list(p);
                    }
                    }
                    
        int mygetline(char buffer_line[],int Max_l)
    {
        int c,i;
        i=0;
        while((c=getchar())!='\n'&&i<Max_l)
        buffer_line[i++]=c;
        buffer_line[i]='\0';
        return i;
    } 
    
             
              stud_p Add_to_list(stud_p head,char nome[],char cognome[],char voto[])
    {
          stud_p p;
          stud_p curr;
          
          p=(stud*)malloc(sizeof(stud));
          strcpy(p->nome,nome);
          strcpy(p->cognome,cognome);
          strcpy(p->voto,voto);
          
          p->next=NULL;
          
          if(head==NULL)
          return p;
          
          else
          {
              curr=head;
              while(curr->next!=NULL)
              curr=curr->next;
              curr->next=p;
              return head;
              }
              }              
    
    
    
    
  • Re: Calcolo della media .

    E che hai corretto? Non mi pare ...
  • Re: Calcolo della media .

    Non ho corretto nulla perche non capisco dove sbaglio...
    Ho eliminato le cose in piu e scritto tutto il codice completo!
  • Re: Calcolo della media .

    Ma allora che ho risposto a fare ... l'hai letta la risposta ? E non mi dire che non l'hai capita ... ci rinunci subito in attesa della soluzione ...
  • Re: Calcolo della media .

    Ok penso di aver capito e anche io avevo fatto un ragionamento anaglogo , ma qui non so come impostare al primo ciclo minimo massimo= 0.
  • Re: Calcolo della media .

    No. Devi impostare i valori iniziali FUORI dal ciclo, all'inizio.

    E quindi non hai valore.

    Stiamo parlando di voti. Il minimo potrà partire da 100 e il massimo da 0. Impostali così.
  • Re: Calcolo della media .

    E li sta il problema , qui non so proprio come poter fare cio!!
  • Re: Calcolo della media .

    Mi state dicendo che non è possibile ricercare minimo e massimo con questo ciclo ?
  • Re: Calcolo della media .

    Io avevo provato anche a mettere while(i=0) prima di min=max=valore;
    ma mi sai dire come mai non funzionava?
  • Re: Calcolo della media .

    daniele90 ha scritto:


    Mi state dicendo che non è possibile ricercare minimo e massimo con questo ciclo ?
    Neanche per sogno ... non capisci ...
Devi accedere o registrarti per scrivere nel forum
32 risposte