Mi date un suggerimento in Cpp?

di il
2 risposte

Mi date un suggerimento in Cpp?

Il programma in C++ l'ho tutto commentato. Inserisco il n. di alunni, inserisco il n. di materie, inserisco i nomi degli alunni, inserisco i voti per ogni materia ma non riesco a legare il programma alla media...

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

void inserimento(string n, string a[], int dim);

int main()
{
int dim, dim_mat;
int mat;

// dimensionamento vettore di stringhe alunni
do {
cout << "quanti alunni vuoi inserire ";
cin >> dim;
} while (dim < 5 or dim >10);

// dichiarazione vettore di stringhe alunni dinamico
string* alunni = new string[dim];

// dimensionamento vettori di stringhe materie
do {
cout << "quante materie voui inserire ";
cin >> dim_mat;
} while (dim_mat < 4 or dim_mat >8);

// dichiarazione vettore di stringhe materie
string* materie = new string[dim_mat];

//caricamento dati su vettori di stringhe
inserimento("alunni", alunni, dim);
inserimento("materie", materie, dim_mat);

// dichiarazione matrice dinamica
float** matrice;
matrice = new float* [dim];

for (int i = 0; i < dim; i++) {
matrice = new float[dim_mat];
}

//inserimento dati dentro la matrice
for (int i = 0; i < dim; i++)
{
for (int j = 0; j < dim_mat; j++)
{
cout << "Inserire il voto di " << alunni << " per la materia " << materie[j] << endl;
cin >> matrice[j];
matrice[j] = round(matrice[j]);
}
}

// calcolo vettore media finale per ciascun alunoìno
float somma = 0, media = 0;
//dichiariamo il vettore dinamico legato alla media finale di dim alunni
float* media_finale = new float[dim];
// indago su ogni cella della matrice, attraverso i due cicli for
for (int i = 0; i < dim; i++)
{
somma = 0;
// indago su ogni colonna legata alla riga i corrispondente ad ogni alunno ed effettuo i calcoli
for (int j = 0; j < dim_mat; j++)
{
somma = somma + matrice[j];
}
media = somma / dim_mat;
media_finale = media;
}

int insufficienze = 0;
// dichiarato un vettore di stringhe che contenga i risultati finali leggendo i singoli voti di ogni alunno
string* risultato = new string[dim];
// leggo la matrice, e conto le insufficienze per ogni alunno
for (int i = 0; i < dim; i++)
{
insufficienze = 0;
// leggo le insufficienze per l'alunno i in ogni materia j
for (int j = 0; j < dim_mat; j++)
{
if (matrice[j] < 6)
insufficienze++;
}
// creo i 3 possibili casi per ogni alunno leggendo il numero di insufficienze
switch (insufficienze)
{
case 0:
risultato = "promosso";
break;
case 1:
case 2:
case 3:
risultato = "rimandato";
break;
default:
risultato[i] = "bocciato";
}
}

// calcolo medie per singole materie
float* mediePerMaterie = new float[dim_mat];
for (int j = 0; j < dim_mat; j++)
{
for (int i = 0; i < dim; i++)
{
somma = somma + matrice[i][j];
}
media = somma / dim;
mediePerMaterie[j] = media;
}

return 0;

}

// caricamento dati su vettore di stringhe generico
void inserimento(string n, string a[], int dim)

{
for (int i = 0; i < dim; i++) {

cout << "inserisci " << n;
cin >> a[i];
}
}
//Grazie!

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte