ciao a tutti amici di html forum !
Sto facendo un programma in c# che deve fare queste cose:
-chiede quanti alunni ci sono in una classe e il loro voto.
-e poi li deve riordinare in ordine di voto dal più bravo al meno bravo.
Premetto che il programma l'ho già fatto solo che trova solo l'alunno più bravo e lo riordina correttamente ma gli altri no !
adesso posto il codice
codice:
int numAlunni;
bool inputOK;
do
{
Console.WriteLine("da quanti alunni è composta la classe ?");
inputOK = int.TryParse(Console.ReadLine(), out numAlunni);
if ((!inputOK) || (numAlunni <= 0))
Console.WriteLine("Errore input, Riprova!");
} while ((numAlunni <= 0) || (!inputOK));
string[] nomi = new string[numAlunni];// dichiaro l'array dei nomi
float[] voti = new float[numAlunni];// dichiaro array voti
int n = numAlunni;// variabile temporanea per lo scambio dei nomi
Console.WriteLine("inserisci i nomi degli alunni che fanno parte della classe");
for (int nome = 0; nome < numAlunni; nome++)// ciclo inserimento nomi
{
Console.WriteLine("alunno numero: " + (nome + 1));
nomi[nome] = Convert.ToString(Console.ReadLine());
}
Console.WriteLine("ora inserisci il voto degli alunni");
for (int voto = 0; voto < numAlunni; voto++)// ciclo inserimento voti
{
Console.WriteLine("voto numero: " + (voto + 1));
voti[voto] = Convert.ToInt32(Console.ReadLine());
}
for (int iEsterno = 0; iEsterno < n-1; iEsterno++)//ciclo di riordinamento
{
float valoreMax = voti[iEsterno];
int indiceMax = iEsterno; // individuo il massimo
for (int iInterno = iEsterno + 1; iInterno < n-1; iInterno++)
{
if (voti[iInterno] > valoreMax)
{
valoreMax = voti[iInterno];
indiceMax = iInterno;
}
voti[indiceMax] = voti[iEsterno];
voti[iEsterno] = valoreMax;
// scambio nomi
string nomeseccha = nomi[indiceMax];
nomi[indiceMax] = nomi[iEsterno];
nomi[iEsterno] = nomeseccha;
}
}
for (int i = 0; i < numAlunni; i++)
{
Console.WriteLine(" " + nomi[i]);
}
Console.ReadLine();
ho messo anche i commenti spero si capisca dov'è il problema