Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C] Errore con la media aritmetica

    Salve a tutti. La mia intenzione e' quella di scrivere un programma che, inserite un certo numero di misure, ti restituisce:
    1) il numero massimo
    2) il numero minimo
    3) la dispersione (massimo-minimo)
    4) la somma dei numeri inseriti
    5) la media dei numeri inseriti
    6) l'incertezza relativa
    7) l'incertezza percentuale

    Il programma riesce a calcolarmi il numero massimo e minimo, la dispersione e la somma totale dei numeri. Il problema sorge con la media aritmetica, poichè quando faccio andare il programma mi esce scritto "la media aritmetica e' 1.#INF". Ho cercato a cosa si poteva riferire questo tipo di errore ed ho trovato che è identificabile con la divisione per zero. In effetti il mio N, che è il numero di misure che l'utente vuole inserire, va man mano svuotandosi mentre si inseriscono le misure, e quindi il programma alla fine trova N=0 e non può darmi la media. Il problema è che senza la media non posso calcolare tutte le altre cose
    Cosa posso fare ? Spero di essere stato abbastanza chiaro.

    Questo è il codice che ho scritto fin'ora:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        float N; // indica il numero di misure che l'utente vuole inserire
        float numero; // indica le misure man mano inserite dall'utente
        float MAX, MIN; // MAX e MIN indicano il numero massimo e minimo inseriti
        float totale; // indica la somma dei numeri inseriti
        float media; // media dei numeri inseriti
        float dispersione; // dispersione --> (max-min)
        float incertrel; // incertezza relativa --> dispersione/media
        float incertperc; // incertezza percentuale --> incertezza relativa * 100
        
        printf("Quante misure vuoi inserire? ");
        scanf("%f", &N);
        if (N<=0){
                 printf("Errore. Il numero inserito non e' positivo");
        } else {
               printf("Inserisci una misura: ");
               scanf("%f", &numero);
               N=N-1;
               MAX=numero;
               MIN=numero;
               totale=numero;
               while (N>0){
                     printf("Inserisci una misura: ");
                     scanf("%f", &numero);
                     if (numero>MAX){
                                     MAX=numero;
                     } else if (numero<MIN){
                            MIN=numero;
                     }
                     N=N-1;
                     totale=totale+numero;
               } 
        printf("Il numero massimo inserito e' %.2f, il numero minimo e' %.2f.\n", MAX, MIN);
        dispersione=MAX-MIN;
        printf("La somma totale dei numero e' %.4f. La dispersione e' %.2f.\n", totale, dispersione);
        media=totale/N;
        printf("La media aritmetica e' %.4f.\n", media);
        system("PAUSE");
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    non sono la persona adatta per fare rilievi, visto che in realtà sono un filosofo gattolico.
    però... diciamo che è praticamente tutto da rifare, a partire dalla prima riga

  3. #3
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    N è 0 alla fine
    Per gli Spartani e Sparta usa spartan Il mio github

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da linoma
    N è 0 alla fine
    Se tu avessi letto ciò che ho scritto, sapresti che a questa conclusione c'ero già arrivato
    Qualcuno sa propormi una soluzione? Anche se devo riscrivere il programma da capo, va bene, ma almeno sapere COME devo riscriverlo..

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Usa il for fino ad N
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da linoma
    Usa il for fino ad N
    E poi come faccio ad individuare il massimo e il minimo?

  7. #7
    come facevi prima

  8. #8
    Altrimenti crea una copia della variabile N dopo che l'utente ha detto quante osservazioni inserire, e dividi per quella al termine...
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  9. #9
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da MisterBean
    Altrimenti crea una copia della variabile N dopo che l'utente ha detto quante osservazioni inserire, e dividi per quella al termine...
    Come si fa a fare una copia di una variabile? Semplicemente creando un'altra variabile e ponendola uguale ad N?

  10. #10
    Esatto, creala all'inizio assieme alle altre, e dopo che hai acquisito N fai l'assegnamento... Comunque un for è più "pulito" e leggibile.
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

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.