Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [C] problema pareggio frequenze moda

    allora il problema da speigare è semplice, già dal titolo si deduce....praticamente ho un programma per l'analisi di dati ricavati da un sondaggio....nel programma base la funzione che calcola la moda sulle risposte ottenute (da qst sondaggio) la calcola e poi stampa in forma tebellare tutti i valori per le relative risposte con affianco un istogramma formato da tante * quant'è la frequenza....ma non tiene conto dei casi di pareggio...cioè se si verificano 10 risposte per il valore 4 e 10 per il valore 6...il programma stampa 4 come moda.

    il codice del programma base è questo e quindi manca il controllo dei casi di pareggio delle frequenze

    codice:
    void mode(int freq[], const int answer[]){
         
         int rating;
         int j;
         int h;
         
         /*contatori per controllo caso di pareggio frequenze */
         int pax, contrl;
         int max = 0;
         int pareg;
         
         int largest = 0;
         int modeValue = 0;
         
         printf("\n\n ***** MODA ***** \n");
         
         
         
         for(rating = 1; rating <= 9; rating++){
            freq[rating] = 0;
         }
         
          for(j = 0; j < SIZE; j++){
             ++freq[ answer[ j ] ];
          }
          
          
          printf("%s%11s%19s\n\n\n", "Risposta", "Frequenza", "Istogramma");
    
          
          for(rating = 1; rating <= 9; rating++){
             printf("%8d%11d         ", rating, freq[rating]);
          
          
          
          if(freq[rating] > largest){
             largest = freq[rating];
             modeValue = rating;
          }
    
          
          for(h = 1; h <= freq[rating]; h++){
             printf( "*" );
          }
          printf("\n");
          } 
    
          printf("\n");
          
          
             }               
          }
             
          printf("PAREGGIO = %d\n", max);
          
          printf("La moda e' il numero piu' frequente in un insieme.\n"
                 "La moda in questo esercizio e' %d presente per %d volte\n\n",
                 modeValue, largest);
    }
    qualche ideuzza for me???????? mi sto stressando

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Cosa dovrebbe fare nel caso che dici?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    segnalare che ci sia un caso di pareggio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Controlla (con un ciclo) se nel vettore freq[] esistono altri elementi che valgono largest ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    codice:
     max=freq[0];
          for(contrl=1; contrl<9; contrl++){
             if(freq[] == largest){
             max++;
             }               
          }
             
          printf("PAREGGIO = %d\n", max);
    mi viene in mente una cosa del genere ma non funziona

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Se ne esistono altri oltre a quello relativo al numero gia' trovato ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    non ho capito

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Esamina tutti i valori di freq (a proposito ... perchè da 1 a 9 ? E l'elemento 0 ?) e, tranne che per l'indice uguale a modeValue (trovato in precedenza) controlla se ne esiste uno uguale a largest.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    secondo me, dormo mentre programmo....

    codice:
          max=freq[0];
          for(contrl=0; contrl<9; contrl++){
             if(freq[contrl] == largest){
             max++;
             }               
          }
             
          printf("PAREGGIO = %d\n", max);
    così dovrebbe essere giusto....

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Scusa ... ma cosa è frequ[0] da cui parte max ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.