Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24

    [C++] Programma media alunni

    Programma che fa uso dei vettori per fare alcune operazioni sui voti degli alunni:

    non va la funzione numero 4 per la ricerca della posizione di un certo valore nel vettore e non va nemmeno il calcolo della media, potete correggere gli errori presenti in questo codice per favore? Passando i vettori per indirizzo alle funzioni codeblocks bloccava la compilazione, cosa comporta il passarli per valore?

    codice:
    #include <iostream>
    
    using namespace std;
    
    const int max_alunni= 32;
    int voti[max_alunni];
    int i,somma_voti, num_alunni, quanti_sopra_media,cerca_voto,posizione,voto_inserito;
    float media;
    
    //procedura per il caricamento degli elementi del vettore
    void carica_vettore(int vet[], int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            cout<<"Inserisci voto n: "<<i+1<<" ";
            cin>>vet[i];
        }
    }
    //funzione per determinare il valore minimo presente nel vettore
    int posizione_min(int vet[], int n)
    {
        int pos_min=0;
        for(i=0;i<n;i++)
        {
            if(vet[i]<vet[pos_min])
                pos_min= i;
        }
        return pos_min;
    }
    
    //funzione per determinare il valore massimo presente nel vettore
    int posizione_max(int vet[], int n)
    {
        int pos_max=0;
        for(i=1;i<n;i++)
        {
            if(vet[i]>vet[pos_max])
                pos_max= i;
        }
        return pos_max;
    }
    
    //funzione per la ricerca di un valore nel vettore
    int cerca_vettore(int vet[], int n, int cercato)//restituisce il primo voto trovato
    {
        int posizione=0;
        do
        {
            if(vet[i]==cercato)
                posizione= i;
            i=i+1;
        }while(i!=n or posizione==0);
        return posizione;
    }
    
    //funzione per l'ordinamento del vettore mediante algoritmo di scambio semplice(bubble sort)
    void bubble_sort(int vet[], int n)
    {
        int i,j,tmp;
        for(i=0;i<n;i++)
        {
            for(j=0;j<n-1;j++)
            {
                if(vet[j]>vet[j+1])
                {
                    tmp=vet[j];
                    vet[j]= vet[j+1];
                    vet[j+1]= tmp;
                }
            }
        }
    }
    
    //funzione che conta il numero di occorrenze di un determinato valore nel vettore
    int conta_alunni(int vet[], int n, int voto_cercato)
    {
        int i, quanti;
        for(i=0;i<n;i++)
        {
            if(vet[i]==voto_cercato)
                quanti= quanti+1;
        }
        return quanti;
    }
    int main()
    {
        somma_voti=0; media=0; quanti_sopra_media=0;
        cout<<"Quanti alunni ci sono?";
        cin>>num_alunni;
        cout<<"Inserisci ora i voti degli alunni: ";
    
        //caricamento voti alunni
        carica_vettore(voti, num_alunni);
    
    
        //voto minimo e massimo
        cout<<"Il voto piu basso e' " <<voti[posizione_min(voti,num_alunni)]<<" ";
        cout<<"Quello piu alto e invece: " <<voti[ posizione_max(voti,num_alunni)];
        cout<<endl;
        posizione di inserimento di un voto
        cout<<"Vuoi sapere in che posizione hai inserito un determinato voto? Inserisci il voto: ";
        cin>>cerca_voto;
        posizione= cerca_vettore(voti,num_alunni,cerca_voto);
        if (posizione>0)
            cout<<"Voto "<<cerca_voto <<"trovato in posizione "<<posizione;
        else
            cout<<"Voto non trovato";
        cout<<endl;
    
        //media voti
        for(i=1;i<num_alunni;i++)
            somma_voti=somma_voti+voti[i];
        media= somma_voti/num_alunni;
        cout<<"La media dei voti degli alunni e': " <<media;
        cout<<endl;
    
        //quanti alunni hanno un voto sopra la media
    
        for(i=0;i<num_alunni;i++)
            if(voti[i]>media)
                quanti_sopra_media=quanti_sopra_media+1;
    
    
        cout<<"Ci sono " <<quanti_sopra_media<<" voti sopra la media";
    
        //ordinamento voti in ordine crescente
    
        cout<<"I voti inseriti in ordine crescente sono i seguenti: ";
    
        bubble_sort(voti,num_alunni);
    
        for(i=0;i<num_alunni;i++)
            cout<<" "<<voti[i];
    
        //numero di alunni che hanno preso un certo voto
        cout<<"Vuoi sapere quanti alunni hanno preso un determinato voto? Inserisci un voto da 1 a 10:";
        cin>>voto_inserito;
    
        cout<<"Hanno preso il voto: "<<voto_inserito<<" "<<conta_alunni(voti,num_alunni,voto_inserito)<<"alunni";
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un primo errore:


    codice:
    int cerca_vettore(int vet[], int n, int cercato)//restituisce il primo voto trovato
    {
        int posizione=0;
        do
        {
            if(vet[i]==cercato)
                posizione= i;
            i=i+1;
        }while(i!=n or posizione==0);
        return posizione;
    }

    L'OR logico si fa con il doppio pipe... ma questo dovrebbe dare un errore in compilazione, quindi non dovrebbe nemmeno "partire".


    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

  3. #3
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24
    Grazie, lo compilava uguale code blocks, comunque anche inserendo il doppio pipe(||) al posto di or il programma continua ad andare in crash quando viene chiesto di voler sapere in che posizione si trova un determinato voto. Per quanto riguarda il passaggio degli array alle funzioni di default avviene per indirizzo giusto? Cioè viene passato il puntatore al primo elemento dell'array usando la notazione di questo codice vero?
    Ultima modifica di pongo; 19-02-2014 a 16:12

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.