
[Ayuda] Programa funciona en pseudocódigo pero no en java
Publicado por Jhon (14 intervenciones) el 28/04/2015 14:23:28
Cordial saludo:
Estoy muy verde en java (Soy estudiante de sistemas de información) y estoy aprendiendo apenas. Resulta que escribí un código para resolver un problema que me plantearon y en PSeInt funciona muy bien pero en java no me funcionó la "traducción" que realicé de mi algoritmo.
La idea es ir recibiendo las calificaciones de un grupo de diez estudiantes y al final decir cuántos sacaron menos de 50 (Se califica de 1 a 100, cuántos de 50 a 70, cuántos de 70 a 80 y cuántos más de 80.
Como yo quería que el programa preguntara por ejemplo "Nota del estudiante 2: " y si la nota no era entre 1 y 100 dijera error y preguntara de nuevo la nota del estudiante 2, utiicé un do while dentro de otro. Uno controla que la nota sea válida y el otro cuenta estudiantes hasta 10.
El pseudocódigo en PseInt es este:
Al ejecutarlo funciona bien. Pero al adaptarlo a java no funciona. Primero al meter por ejemplo cero se cerraba y me daba los resultados. Después con algunos cambios logré que mostrara el error pero pasaba al siguiente estudiante y se quedaba ahí una y otra vez.
Ahora mismo como lo tengo sea válida o no la nota me pide una y otra vez la calificación del estudiante 1:
PseInt tiene una herramienta para exportar a java y decidí probarla a ver qué error estaba cometiendo pero me dio un resultado parecido (La única diferencia creo que es que yo usé scanner para capturar los datos).
PD: Me doy cuenta que puse
en lugar de || que sería lo correcto, pero estaba probando porque con OR al meter un valor no válido me lanza los resultados y finaliza el proceso.
Les agradecería enormemente cualquier ayuda.
Estoy muy verde en java (Soy estudiante de sistemas de información) y estoy aprendiendo apenas. Resulta que escribí un código para resolver un problema que me plantearon y en PSeInt funciona muy bien pero en java no me funcionó la "traducción" que realicé de mi algoritmo.
La idea es ir recibiendo las calificaciones de un grupo de diez estudiantes y al final decir cuántos sacaron menos de 50 (Se califica de 1 a 100, cuántos de 50 a 70, cuántos de 70 a 80 y cuántos más de 80.
Como yo quería que el programa preguntara por ejemplo "Nota del estudiante 2: " y si la nota no era entre 1 y 100 dijera error y preguntara de nuevo la nota del estudiante 2, utiicé un do while dentro de otro. Uno controla que la nota sea válida y el otro cuenta estudiantes hasta 10.
El pseudocódigo en PseInt es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Proceso calificaciones
nota <- 0; //Todos los datos numéricos ingresados sean válidos o no
menosDe50 <- 0; //Notas inferiores a 50
de50A70 <-0; //Notas entre 50 y 70
de70A80 <- 0; //Notas entre 70 y 80
de80Mas <- 0; //Notas de 80 puntos o más
estudiante <- 1; //Inicia en 1 el conteo de estudiantes
Repetir
Repetir
Escribir "Ingrese calificación del estudiante ",estudiante,"(De 1 a 100):" //Aquí se filtran las notas no válidas para que no las cuente
Leer nota;
Si nota < 1 o nota > 100 Entonces
Escribir "Error: Las notas deben ser entre 1 y 100.";
FinSi
Hasta que nota >= 1 y nota <= 100;
estudiante <- estudiante +1
Si nota < 50 Entonces
menosDe50 <- menosDe50 + 1;
Finsi
Si nota >= 50 y nota < 70 Entonces
de50A70 <- de50A70 + 1;
Finsi
Si nota >=70 y nota < 80 Entonces
de70A80 <- de70A80 + 1;
Finsi
Si nota >= 80 Entonces
de80Mas <- de80Mas + 1;
FinSi
Hasta Que estudiante > 10;
Escribir "Calificaciones de menos de 50: ",menosDe50;
Escribir "Calificaciones entre 50 y menos de 70: ",de50A70;
Escribir "Calificaciones entre 70 y menos de 80: ",de70A80;
Escribir "Calificaciones superiores a 80: ",de80Mas;
FinProceso
Al ejecutarlo funciona bien. Pero al adaptarlo a java no funciona. Primero al meter por ejemplo cero se cerraba y me daba los resultados. Después con algunos cambios logré que mostrara el error pero pasaba al siguiente estudiante y se quedaba ahí una y otra vez.
Ahora mismo como lo tengo sea válida o no la nota me pide una y otra vez la calificación del estudiante 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public static void main(String[] args) {
// TODO code application logic here
Scanner in = new Scanner(System.in);
double nota;
int menosDe50 = 0;
int de50A70 = 0;
int de70A80 = 0;
int de80Mas = 0;
int estudiantes = 1;
do {
do{
System.out.println("Ingrese la calificación del estudiante número " + estudiantes + "( Las notas van de 1 a 100): ");
nota = in.nextDouble();
if (nota < 1 && nota > 100){
System.out.println("Error. Las notas deben ser entre 1 y 100.");
}
}while (!(nota < 1 && nota > 100));
estudiantes = estudiantes +1;
if (nota < 50){
menosDe50 = menosDe50 + 1;
}
else if (nota >= 50 && nota < 70){
de50A70 = de50A70 + 1;
}
else if (nota >=70 && nota < 80){
de70A80 = de70A80 + 1;
}
else if (nota >= 80){
de80Mas = de80Mas + 1;
}
System.out.println("Calificaciones de menos de 50: " + menosDe50);
System.out.println("Calificaciones entre 50 y menos de 70: " + de50A70);
System.out.println("Calificaciones entre 70 y menos de 80: " + de70A80);
System.out.println("Calificaciones de 80 o más: " + de80Mas);
}while (estudiantes <= 10);
}
PseInt tiene una herramienta para exportar a java y decidí probarla a ver qué error estaba cometiendo pero me dio un resultado parecido (La única diferencia creo que es que yo usé scanner para capturar los datos).
PD: Me doy cuenta que puse
1
if (nota < 1 && nota > 100){
Les agradecería enormemente cualquier ayuda.
Valora esta pregunta


0