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
ho messo anche i commenti spero si capisca dov'è il problemacodice: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();

Rispondi quotando
