Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    perchè non funziona questo programma....

    ciao a tutti ragazzi
    sono praticamente all'inizio della programmazione e avrei due domandine si questo programma creato da me da due esempi diversi. Voglio con questo programma inizializzare un arrai, e visulaizzare gli elementi in esso contenuto e poi sommarli e visualizzare la somma.
    Poi con un'altra funzione cambiare un determinato elemento e rialcolare la somma

    codice:
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    void somma(int[],int);
    void modificaelemento (int);
    int total=0;
    
    int main ()
      { const int dimensionearray= 10;
        int a[dimensionearray]={1,2,3,4,5,6,7,8,9,10};
        int i ;
    
        cout<<"i valori dell'array sono:\n";
    
        for (i=0; i<dimensionearray;i++)
        	    cout<<a[i];
    
       somma(a,dimensionearray);
    
         cout<<"\nrisultato della somma è:"<<total<<endl;
    
    
         cout<<"\nvisualizzo :"<<a[4]<<endl;
    
         modificaelemento(a[4]);
    
         cout<<"\ncome è cambiata la somma:"<<total<<endl;
               somma(a,dimensionearray);
    
            return 0;
       }
    
    void somma(int b[],int dimensionedellarray)
    		{
    	for (int j=0;j<dimensionedellarray;j++)
    			total += b[j];
                }
    void modificaelemento (int g)
      { cout<<"valore in modificaelemento è:" << (g+=1)<<endl;
         }
    mi esce questo con l'errore del 55: visto che vorrei che uscisse il 56
    codice:
    i valori dell'array sono:
    12345678910
    risultato della somma è:55
    
    visualizzo :5
    valore in modificaelemento è:6
    
    come è cambiata la somma:55

    altra cosa che con la teoria non m isono riuscito a spiegare:
    perchè se metto all'inizio ,nella dichiarazione delle funzioni int, anzicchè void mi esce errore?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Le righe da correggere/modificare in rosso ... riflettici ...

    codice:
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    void somma(int[],int);
    void modificaelemento(int &);
    int total=0;
    
    int main ()
    { 
      const int dimensionearray= 10;
      int a[dimensionearray]={1,2,3,4,5,6,7,8,9,10};
      int i ;
    
      cout<<"i valori dell'array sono:\n";
    
      for (i=0; i<dimensionearray;i++)
        cout<<a[i];
    
      somma(a,dimensionearray);
    
      cout<<"\nrisultato della somma è:"<<total<<endl;
    
      cout<<"\nvisualizzo :"<<a[4]<<endl;
    
      modificaelemento(a[4]);
    
      somma(a,dimensionearray);
    
      cout<<"\ncome è cambiata la somma:"<<total<<endl;
    
      return 0;
    }
    
    void somma(int b[],int dimensionedellarray)
    {
      total=0;
    
      for (int j=0;j<dimensionedellarray;j++)
        total += b[j];
    }
    
    void modificaelemento (int &g)
    { 
       cout<<"valore in modificaelemento è:" << (g+=1)<<endl;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Invito l'autore a rileggere per bene il regolamento del forum

    1) Manca l'indicazione del linguaggio nel titolo (obbligatoria, l'ho aggiunta io)
    2) Il titolo non è conforme: "perchè non funziona questo programma" è un titolo che si può adattare ad almeno il 90% delle discussioni di questo forum, mentre il regolamento indica che il titolo deve dare un'idea precisa dell'argomento della discussione.

    Ho adattato tutto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    Re: Moderazione

    Originariamente inviato da LeleFT
    Invito l'autore a rileggere per bene il regolamento del forum

    1) Manca l'indicazione del linguaggio nel titolo (obbligatoria, l'ho aggiunta io)
    2) Il titolo non è conforme: "perchè non funziona questo programma" è un titolo che si può adattare ad almeno il 90% delle discussioni di questo forum, mentre il regolamento indica che il titolo deve dare un'idea precisa dell'argomento della discussione.

    Ho adattato tutto.


    Ciao.
    I'm sorry,
    non ci avevo proprio pensato,
    grazie dell'avviso



    @oregon
    -credo che la tecnica che hai utilizzato (quella con &) si tratta di puntatori?
    non ci sono ancora arrivato li....

    -cmq il porre il cout dopo la riesecuzione di quella funzione somma, l'ho capito.


    -altro punto: invece di inizializzare 2 volte total a 0, si potrebbe fare anche diversamente?


    -ultimissimo punto:
    perchè se metto all'inizio ,nella dichiarazione delle funzioni int, anzicchè void mi esce errore sulle parentesi graffe?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Re: Moderazione

    Originariamente inviato da Alfoxx
    -credo che la tecnica che hai utilizzato (quella con &) si tratta di puntatori?
    non ci sono ancora arrivato li....
    Passaggio per riferimento ... sì ... c'entrano anche i puntatori, lo capirai quando sara' il momento ... non hai modo di modificare il valore diversamente (a meno che l'array non sia "globale")

    -altro punto: invece di inizializzare 2 volte total a 0, si potrebbe fare anche diversamente?
    No, perche' il totale deve essere calcolato due volte e ogni volta deve partire da zero

    -ultimissimo punto:
    perchè se metto all'inizio ,nella dichiarazione delle funzioni int, anzicchè void mi esce errore sulle parentesi graffe?
    Perche' dovresti metterci int ? Queste funzioni non restituiscono alcun valore intero ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    Re: Re: Re: Moderazione

    ok tutto chiaro
    tnx, allora quando ci arriverò ritornetò a ragionarci su
    Originariamente inviato da oregon

    Perche' dovresti metterci int ? Queste funzioni non restituiscono alcun valore intero ...
    scusa ma un valore come 55 non è un valore intero?

    io il programma l'avevo scritto inizialmente con int, ma poi ho ambiato in void porpio perchè mi dava errore, ed anche se ho capito che void mi indica funzioni che non restituiscono valore, non ho capito bene il "fatto pratico"

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Re: Re: Re: Moderazione

    Originariamente inviato da Alfoxx
    io il programma l'avevo scritto inizialmente con int, ma poi ho ambiato in void porpio perchè mi dava errore, ed anche se ho capito che void mi indica funzioni che non restituiscono valore, non ho capito bene il "fatto pratico"
    Ma quindi tu volevi che la funzione

    somma

    restituisse il valore calcolato?

    Allora devi scrivere

    codice:
    int somma(int b[],int dimensionedellarray)
    {
      int total=0;
    
      for (int j=0;j<dimensionedellarray;j++)
        total += b[j];
    
      return total;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    io volevo che il programma mi dicesse
    codice:
    i valori dell'array sono:
    12345678910
    risultato della somma è:55
    
    visualizzo :5
    valore in modificaelemento è:6
    
    come è cambiata la somma:56

    cmq ho capito che il legame tra l'intestazione (void, int) ed il return (rispettivamente 0, variabile del caso)

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.