Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Problema nella somma degli array

    Salve a tutti,
    avrei bisogno di un aiuto per quanto riguarda un esercizio sugli array in c++

    Allora lo scopo del mio esercizio è quello di accettare da input i voti di due prove per x concorrenti (x < 20).
    poi sommare i voti di ogni concorrente( di entrambe le prove) e vedere chi tra tutti ha la media aritmetica più alta (supponendo nessun parimerito)

    il mio programma è questo, ma non funziona, non mi entra nell'ultimo while, oppure mi sbaglia la somma di ""contatore = a1[x] + a2[x];""


    #include <iostream>
    using namespace std;
    int main(){

    float a1[20];
    float a2[20];
    int concorrenti;
    cout <<"Quanti conccorreti?(max 20)"<< endl;
    cin >> concorrenti;
    int a = 0;
    int b = 0;
    int x = 0;
    float contatore = 0;
    float contatore_max = 0;
    int convinc;
    // prima prova

    cout <<"Prima prova"<< endl;
    while(a < concorrenti)
    {
    cin >> a1[a];
    cout << a1[a] << endl;
    a = a + 1;
    }


    // seconda prova

    cout <<"Seconda prova"<< endl;
    while(b < concorrenti)
    {
    cin >> a1[b];
    b = b
    }




    // SVOLGIMENTO


    while (x < concorrenti)
    { contatore = a1[x] + a2[x];
    if (contatore > contatore_max){
    contatore_max = contatore;
    convinc = 1+x;
    }
    x = x+1;
    }
    cout << convinc << endl;
    cout << contatore_max << endl;
    system("pause");
    return 0;
    }

    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Dovresti utilizzare i tag CODE per una migliore leggibilità del codice.
    Comunque quel codice nemmeno compila. Prova a compilarlo e arriverai direttamente ad una riga con un doppio errore: uno sintattico e uno logico.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    #include <iostream>
    using namespace std;
    int main(){


    float a1[20];
    float a2[20];
    int concorrenti;
    cout <<"Quanti conccorreti?(max 20)"<< endl;
    cin >> concorrenti;
    int a = 0;
    int b = 0;
    int x = 0;
    float contatore = 0;
    float contatore_max = 0;
    int convinc;
    // prima prova


    cout <<"Prima prova"<< endl;
    while(a < concorrenti)
    {
    cin >> a1[a];
    cout << a1[a] << endl;
    a = a + 1;
    }




    // seconda prova


    cout <<"Seconda prova"<< endl;
    while(b < concorrenti)
    {
    cin >> a1[b];
    b = b + 1;
    }








    // SVOLGIMENTO




    while (x < concorrenti)
    { contatore = a1[x] + a2[x];
    if (contatore > contatore_max){
    contatore_max = contatore;
    convinc = 1+x;
    }
    x = x+1;
    }
    cout << convinc << endl;
    cout << contatore_max << endl;
    system("pause");
    return 0;
    }


    scusa c'era un piccolo errore ora compila

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti è stato già detto di usare i tag CODE per il codice ...

    Comunque, per la seconda prova utilizzi sempre a1 ?
    Ultima modifica di oregon; 19-01-2015 a 11:52
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    L'errore è che memorizzavi anche i risultati della seconda prova nell'array a1 invece che nell'array a2.
    Ora dovrebbe essere a posto:

    codice:
    #include <iostream>
    using namespace std;
    int main()
    {
        float a1[20];
        float a2[20];
        int concorrenti;
        cout <<"Quanti conccorreti?(max 20)"<< endl;
        cin >> concorrenti;
        int a = 0;
        int b = 0;
        int x = 0;
        float contatore = 0;
        float contatore_max = 0;
        int convinc;
    
        // prima prova
        cout <<"Prima prova"<< endl;
        while(a < concorrenti) {
            cin >> a1[a];
            a = a + 1;
        }
    
        // seconda prova
        cout <<"Seconda prova"<< endl;
        while(b < concorrenti) {
            cin >> a2[b];
            b = b + 1;
        }
    
        // SVOLGIMENTO
        while (x < concorrenti) {
            contatore = a1[x] + a2[x];
            if (contatore > contatore_max) {
                contatore_max = contatore;
                convinc = 1+x;
            }
            x = x+1;
        }
        cout << "Vincitore: " << convinc << endl;
        cout << "Punteggio: " << contatore_max << endl;
        return 0;
    }

    Nota: non stai calcolando la media aritmetica, ma solo la somma dei punteggi. In effetti va bene anche così perché la media più alta corrisponde alla somma più alta, quindi il vincitore è sempre lo stesso. Però te lo segnalo...

  6. #6
    oddio che errore da stupidi haha grazie a tutti e grazie anche per l'errore della media

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.