Hola chicos,
son ya 3 dias que no consigo solucionar este programa...he hecho un montón de pruebas, este es el ultimo borrador que hice...
El programa debería:
- Hacer un promedio de las notas de las materias de cada alumno
- Imprimir los aprobados (promedio > 4,5)
- Imprimir el numero de promedios > 8
- Imprimir el numero de promedios < 4
- Imprimir el promedios máximo
import java.util.Scanner;
public class PRUEBAS {
private static final int NUM_ALUMNOS = 2;
private static final int MATERIAS = 3;
public static void main(String[] args) {
Scanner teclat = new Scanner(System.in);
float nota;
float notaFinal=0;
int aprovats=0;
int inferior = 0;
int superior = 0;
float promedio = 0;
float notaMax = 0;
System.out.println("Introducció qualificacions FOL (Formació i Orientació laboral).");
for(int indAlumne=0; indAlumne<NUM_ALUMNOS; indAlumne++){
for (int i=0; i 0) {
notaMax = notaFinal;
}
} while ((nota 10.0));
}
promedio = notaFinal/MATERIAS;
System.out.println("Promedio: " + promedio);
if ((promedio > 8) && (promedio 4.5) && (promedio <= 10)) {
aprovats++;
} else if ((promedio = 0)){
inferior++;
} else {
nota=0;
}
}
System.out.println("Alumnes que han aprobado : "+ aprovats + ".");
System.out.println ("Numero alumnos con nota inferior a 4: " + inferior + " (" + inferior* 100 / NUM_ALUMNOS + "%).");
System.out.println ("Número alumnos con nota superior a 8: " + superior + " (" + superior* 100 / NUM_ALUMNOS + "%).");
System.out.println("La nota maxima es: " + notaMax);
}
}
Alguien puede corregirlo para que salga correcto?
Gracias.
Es un algoritmo muy sencillo, puedes hacerlo con matrices así:
import java.util.Scanner;
public class NotaSys {
Scanner read;
public Object[][] fillStudents() {
read = new Scanner(System.in);
System.out.println("Cuantos alumnos desea procesar?");
int cant_stud = read.nextInt();
System.out.println("Cuantas notas se van a promediar?");
int cant_calif = read.nextInt();
Object[][] students = new Object[cant_stud][cant_calif+1];
for(byte i=0; i<students.length; i++) {
for(byte k=0; k<students[i].length; i++) {
if(k==0) {
System.out.println("Ingrese el nombre del alumno:");
students[i][k] = read.nextLine();
read.next();
}
else {
System.out.println("Ingrese la nota del alumno:");
students[i][k] = read.nextInt();
}
}
}
return students;
}
public Object[][] getAverage(Object[][] students) {
Object[][] average = new Object[students.length][2];
for(byte i=0; i<students.length; i++) {
double total = 0d; // suma las notas
for(byte k=0; k<students[i].length; i++) {
if(k!=0) {
total += students[i][k];
}
if(k==students[i].length) {
average[i][0] = students[i][0]; // guarda el nombre
average[i][k] = total / students[i].length-1; // y el promedio
}
}
}
return average;
}
public double getMaxAverage(Object average[][]) {
double max = 0d;
double prom = average[0][1];
for(byte i=0; i<average.length; i++) {
for(byte k=0; k<average.length; i++) {
if(k!=0) {
if(average[i][k] > prom) {
max = prom;
}
}
}
}
return max;
}
public byte getApproved(Object[][] average) {
byte cant = 0;
for(byte i=0; i<average.length; i++) {
for(byte k=0; k<average.length; i++) {
if(k!=0) {
if(k > 4.5) {
cant++;
}
}
}
}
return cant;
}
public byte getApprovedPlus8(Object[][] average) {
byte cant = 0;
for(byte i=0; i<average.length; i++) {
for(byte k=0; k<average.length; i++) {
if(k!=0) {
if(k > 8) {
cant++;
}
}
}
}
return cant;
}
public byte getDisapproved(Object[][] average) {
byte cant = 0;
for(byte i=0; i<average.length; i++) {
for(byte k=0; k<average.length; i++) {
if(k!=0) {
if(k < 4.5) {
cant++;
}
}
}
}
return cant;
}
public static void main(String[] args) {
NotaSys n = new NotaSys();
Object[][] myStudents = n.fillStudents();
Object[][] average = n.getAverage();
double max = n.getMaxAverage(average);
double cant_approved = n.getApproved(average);
double approved8 = n.getApprovedPlus8(average);
double disapproved = n.getDisapproved(average);
// imprimes
}
}
Lo he hecho en un editor de texto así que quizás tiene algunos errores pero la idea es esa. Salu2.
Hola, agradezco mucho tu respuesta. Y tu proposición está muy bien...el problema es que me estoy volviendo loco porque hay que resolver el ejercicio sólo con estructuras while, for, if...con variabile a y costantes però sin vectores...con el Scanner y nada mas...por esto no me sale...
Hola gente...ya lo he resuelto...me ha costado 2 dias de faena pero bien!!!!!!! :)