//Cambios
//Validación de notas de 0 a 100
// Validación de 'y' y 'n'
fun main() {
var repetir: Char // Declara variable de repetir como Character
do { // Comienza el do/while
println("Calcule el promedio de notas para una cantidad de estudiantes especificada.")
print("¿Cuántos estudiantes se le va a calcular el promedio? ") // Imprime la pregunta
val studentCount = readLine()?.toIntOrNull() ?: run { // Entrada de los datos y declara variable de studentCount
println("Cantidad inválida") // Validación por Run
return
}
var count = 1 // count comienza en 1
while (count <= studentCount) { // Un loop while
print("Ingrese las tres notas del estudiante $count (entre 0 y 100): ") // Pregunta por las tres notas
val input = readLine()?.split(" ")?.mapNotNull { it.toIntOrNull() } // Declara variable de input y entrada de datos con split
//Cambio 1 validación de notas que sean mayores a 0 y menores a 101
if (input == null || input.size != 3 || input.any { it !in 0..100 }) { // Validación de input
println("Entrada inválida, por favor ingrese tres notas válidas entre 0 y 100.")
continue
}
val (n1, n2, n3) = input // Declara las tres n como input
val promedio = (n1 + n2 + n3) / 3 // Declara promedio y operación matemática
println("El promedio del estudiante $count es: $promedio") // Imprime resultado
count++ // Suma el count
}
//Cambio 2: Valida si el usuario ingresó algo diferente a 'y' o 'n' y vuelve a preguntar
var validInput = false
do {
print("¿Desea calcular el promedio para otro grupo de estudiantes? (Y/N): ")
repetir = readLine()?.firstOrNull() ?: 'N' // Pregunta si quieres repetir
if (repetir.equals('Y', ignoreCase = true) || repetir.equals('N', ignoreCase = true)) {
validInput = true
} else {
println("Opción inválida. Por favor, ingresa 'Y' o 'N'.")
}
} while (!validInput)
} while (repetir.equals('Y', ignoreCase = true)) // Repetir el programa entero con do/While
println("Programa terminado.")
}