Aiuto per capire il funzionamento di un programma

di il
1 risposte

Aiuto per capire il funzionamento di un programma

Ciao a tutti per un compito di scuola mi è stato chiesto di creare un programma che permette di disporre in ordine i numeri dati.
Io ho già creato il programma ma non riesco a capire perchè dove ho messo /////(per capire la riga) se metto j > i non funziona, mentre con j>= i funziona.
qualcuno mi può spiegare tutti i passaggi che fa per entrambi i casi ?
Grazie.


#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>


using namespace std;

struct alunno
{
string nome;
int voto;
};

void struttura(struct alunno classe[], int N, float med, float &media)
{
for(int i=0;i<N;i++)
{
cout << "Inserire nome studente ";
cin >> classe.nome;
cout << "Inserire voto studentre ";
cin >> classe.voto;
med += classe.voto;
media = med / N;
}
}

void calcoli(int N, struct alunno classe[])
{
struct alunno temp;

for(int i = 0; i < N-1; i++)
{
for(int j = N-2; j >= i; j--) ///////////////////////////////////////
{
if (classe[j].voto < classe[j+1].voto)
{
temp = classe[j];
classe[j] = classe[j+1];
classe[j+1]= temp;
}
}
}

for(int i=0;i<N;i++)
{
cout << classe.voto << endl;
}
}
//media = med / N;
//(struct alunni alunni[], float med, float &media, int v[20])


int main (void)
{
struct alunno classe[5];
float media, med;
int N;
N=5;
struttura(classe, N, med, media);
calcoli(N, classe);
cout << media << endl;
}

1 Risposte

  • Re: Aiuto per capire il funzionamento di un programma

    Alcune osservazioni:

    - dall'utilizzo di cin, cout e string deduco che si tratti di C++, sbaglio?
    - nel C++ una struct/class definisce un nuovo tipo e non c'è bisogno di ripetere la parola-chiave struct ogni volta che si vuole creare un'istanza di quella classe;
    - l'unica libreria necessaria per il funzionamento del programma è iostream, le altre sono superflue;
    - il nome struttura, oltre ad essere ambiguo, non spiega per niente quello che fa quella funzione;
    - la variabile med è superflua, basta solo media (che va opportunamente inizializzata). Inoltre la riga di codice "media = med / N;" va messa al di fuori del ciclo.

    Nel main invece di fare:
    alunno classe[5];
    int N;
    N=5;
    basta dichiarare N come costante.

    Prima di rispondere alla tua domanda, potresti dirmi cosa dovrebbe fare la funzione calcoli?
Devi accedere o registrarti per scrivere nel forum
1 risposte