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";
}