Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62

    [C++] calcolare la media dei numeri positivi di un vettore

    ciao a tutti..
    non riesco a capire perchè quando vado a compilare, una parte delle mie istruzioni non viene presa in considerazione..devo calcolare la media dei numeri positivi di un vettore.
    io faccio così
    codice:
    #include<iostream>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    
    #define N 30
    typedef float array[N];
    array a;
    
    void inserimento(int&, array, int&);
    
    
    
    void inserimento (int& num_elem, array a, int&positivi){
         cout<<"\n quanti elementi vuoi inserire? ";
         cin>>num_elem;
         
         int i;
         for(i=0;i<num_elem;i++){
                                 cout<<"\n l'elemento numero"<< i+1 << " e' ";
                                 cin>>a[i];
                                }
       
         if(a[i]>0) {
                    positivi++;
        cout<<"\n gli elementi positivi sono: "<<positivi;
                         }   
                 float somma=0;
                 somma=somma+a[i];
                 float media;
                 media=somma/positivi;
                 cout<< "\n la media dei numeri positivi e'= "<<media; }
                 
                  cout<<endl;
         }
         
    
         
         int main(){
             int num_elem;
             int positivi;
             float media;
             inserimento(num_elem, a,positivi);
             
             system("pause");
         
             }
    in pratica quando vado a compilare tutta la parte dall'if in poi non me la considera..forse sbaglio la condizione dell'if..qualcuno mi può aiutare?grazie mille

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La tua if non è dentro la for.

    Il ciclo for inizia con la { e termina con la }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62
    se metto la if nella for fa comunque cose anomale..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62
    quanti elementi vuoi inserire? 4

    l'elemento numero1 e' -3


    l'elemento numero2 e' -4


    l'elemento numero3 e' 5


    l'elemento numero4 e' 6


    gli elementi positivi sono: 74
    la media dei numeri positivi e'= 3.30595e-039Premere un tasto per continuare .
    . .

    succede una cosa del genere quando compilo

  5. #5
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Ahem... mi "intrufolo" per far presente che questo
    codice:
    a[i]>0
    è un evidente errore grave (ammesso che il docente se ne accorga).
    Qualsiasi strategia utilizzi per definire un numero positivo ti servirà una metrica che definisca l'intorno dello zero.
    Anche un brutalissimo modulo < eps (non è il massimo della vita, non è continuo), meglio ancora la classica metrica quadrata (sempre meglio di niente)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62
    vabè..basta anche un maggiore uguale a zero..
    il problema nn è quello però..

  7. #7
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Originariamente inviato da milu
    vabè..basta anche un maggiore uguale a zero..
    il problema nn è quello però..
    il problema non è quello, ma non basta di certo >=0

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62
    magari dopo vedo di capire come risolvere la cosa..
    adesso il programma riesce a riconoscere gli elementi positivi in che posizione sono e quali sono..ma non riesco a farne la media..

    codice:
     
    #include<iostream>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    
    #define N 30
    typedef float array[N];
    array a;
    
    void inserimento(int&, array, int&);
    void media_positivi(array,int&,int&);
    
    
    void inserimento (int& num_elem, array a, int&positivi){
         cout<<"\n quanti elementi vuoi inserire? ";
         cin>>num_elem;
         
         int i;
         for(i=0;i<num_elem;i++){
                                 cout<<"\n l'elemento numero"<< i+1 << " e' ";
                                 cin>>a[i];
                                 }
                                 
         float somma=0;
        for(i=0;i<num_elem;i++){     
         if(a[i]>0) {
                    
                    positivi++;
         cout<< "\n l'elemento numero " <<i+1<< " e' positivo ed e'= ";
         cout<<a[i];
        
                   
                      
                 somma=somma+a[i];
                 float media;
                 media=somma/positivi;
                 }
                 }
                                 cout<<endl;
         
         }
    
         
         int main(){
             int num_elem;
             int positivi;
            float media;
             inserimento(num_elem, a,positivi);
             cout<< "\n la media dei numeri positivi e'= "<<media;
             system("pause");
         
             }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il problema grave del tuo codice è che la variabile media che usi nel main non è quella che utilizzi all'interno della funzione. E quindi il suo valore è casuale.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    62
    effettivamente posso mettere la variabile media come parametro della funzione void inserimento,nel main la dichiaro e chiamo la funzione inserimento che avrà come parametri oltre a num_elem,a,positivi anche media..ma continuo ad avere il problema..quindi che significa che la variabile media della funzione è diversa da quella del main?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.