Duda de programa en java :( condicional simple.

Iniciado por rub'n, 30 Septiembre 2010, 07:01 AM

0 Miembros y 2 Visitantes están viendo este tema.

rub'n

Código (java) [Seleccionar]
//Un postulante a un empleo, realiza un test de capacitación, se obtuvo la siguiente información: cantidad
//total de preguntas que se le realizaron y la cantidad de preguntas que contestó correctamente.
//Se pide confeccionar un programa que ingrese los dos datos por teclado e informe el nivel del mismo según el
//porcentaje de respuestas correctas que ha obtenido, y sabiendo que:
//Nivel máximo:    Porcentaje>=90%.
//Nivel medio:    Porcentaje>=75% y <90%.
//Nivel regular:    Porcentaje>=50% y <75%.
//Fuera de nivel:    Porcentaje<50%.
   
import java.util.Scanner;
public class Postulanteaempleo {

   public static void main(String[] args) {
       Scanner teclado= new Scanner(System.in);
       
       int preguntotal;
       int preguntascorrectas;
       int porcentaje;
             
       System.out.println("Introduce cantidad total de preguntas que se le realizaron: ");
       preguntotal=teclado.nextInt();
       
       System.out.println("Cantidad de preguntas que contestó correctamente: ");
       preguntascorrectas=teclado.nextInt();
       
       porcentaje= preguntascorrectas*100/preguntotal;
               
       
       if(porcentaje >= 90 )
       {
           System.out.println("Nivel máximo");
       }
           else
           {
               if(porcentaje >= 75 && porcentaje < 90)
                   {                    
                   System.out.println("Nivel medio");
                   }
                   else
                   {
                       if(porcentaje >= 50 && porcentaje < 75)
                       {
                       System.out.println("Nivel regular");
                       }
                       else
                       {
                       System.out.println("Fuera de nivel");
                       }




                                                               
                   }
               
           }
       
                       
   }

}



en el proceso de hallar el porcentaje de preguntas correctas

 porcentaje= preguntascorrectas*100/preguntotal;  si  introducimos primero asi,

Introduce cantidad total de preguntas que se le realizaron:
20
Cantidad de preguntas que contestó correctamente:
15
Nivel medio


pero  si matematicamente al dividir 15/20= 0.75 *100 = 75   que seria nivel medio

entonces al yo hacer

porcentaje = preguntascorrectas / preguntotal*100;


Introduce cantidad total de preguntas que se le realizaron:
20
Cantidad de preguntas que contestó correctamente:
15
Fuera de nivel

no entiendo aqui la prioridad de operador ,,,  xq sera ???   :-[







rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Shell Root

Así, <Tienes que hacer que ingrese los números desde la consola>,
Código (java) [Seleccionar]
public class PoC {
 public static void main(String[] args){
   int sTotalPreguntas;
   int sPreguntasCorrectas;
   double sPorcentaje;

   sTotalPreguntas = 20;
   sPreguntasCorrectas = 10;

   sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;

   System.out.println(sPorcentaje + "\n");

   if(sPorcentaje >= 90){
     System.out.println("Nivel máximo");
   }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
     System.out.println("Nivel medio");
   }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
     System.out.println("Nivel regular");
   }else{
     System.out.println("Fuera de nivel");
   }
 }
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Debci

sabes que puedes usar parentesis para forzar la priorizacion de calculos?

Saludos


Shell Root

Simon. Como en matemáticas, verdad?
Código (java) [Seleccionar]
sPorcentaje = (sPreguntasCorrectas * 100) / sTotalPreguntas;
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Debci

Mmm no entiendo tu primera respuesta :S

Saludos

rub'n

 
Cita de: Shell Root en 30 Septiembre 2010, 19:28 PM
Así, <Tienes que hacer que ingrese los números desde la consola>,
Código (java) [Seleccionar]
public class PoC {
  public static void main(String[] args){
    int sTotalPreguntas;
    int sPreguntasCorrectas;
    double sPorcentaje;

    sTotalPreguntas = 20;
    sPreguntasCorrectas = 10;

    sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;

    System.out.println(sPorcentaje + "\n");

    if(sPorcentaje >= 90){
      System.out.println("Nivel máximo");
    }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
      System.out.println("Nivel medio");
    }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
      System.out.println("Nivel regular");
    }else{
      System.out.println("Fuera de nivel");
    }
  }
}



gracias por la respuesta shell root , pero es que osea asi como lo tienes,,tambien con todas la variables de tipo int da correcto todo...    debe ser que me explique mal...   


entonces en lo que tienes hay el resultado seria verdad,  50 que segun la condicion es NIVEL REGULAR

pero si hacemos lo siguente CON lavariables de tipo int

ponemos porcentaje = preguntascorrectas / preguntotal*100;  el resultado da

Introduce cantidad total de preguntas que se le realizaron:
20
Cantidad de preguntas que contestó correctamente:
10
Fuera de nivel
0

entonces hay era lo que decia YO EL ERROr fetido ese que me daba


y hay lo que hize fue poner todas las variables float y ahora da bien... es mas puse solo

int preguntotal;         
float preguntascorrectas;
float porcentaje;


con eso me daba bien igual ...

mira dudilla es ,,,hay que controlar ajuro ,,todos los resultados de salida de todas la variables de salida ? cierto para estar mejor ?  y ver posibles errores ?

creditos también Javier Salcedo coder and desing.


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Shell Root

Cómo?, No entendí, hice esto,
Código (java) [Seleccionar]
[SNIP]
   sTotalPreguntas = 20;
   sPreguntasCorrectas = 10;
[/SNIP]

y me dio como resultado lo siguiente,
Código (PoC) [Seleccionar]
shellroot@alex-laptop:~/Escritorio$ java PoC
50.0

Nivel regular
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

rub'n

#7
disculpa si estoy hablando mal o algo ,,,osea si te entiendo tu codigo esta perfecto me ayudo del todo ,,,pero es que ve

desde un principio ,,el codigo que puse estaba bien ves, con la variables de tipo int

pero con las variables de tipo int   si ponia

  sPorcentaje = sPreguntasCorrectas  / sTotalPreguntas *100 ; pero con la variables tipo int

hay da error ves,,,  si ponemos las variables a float no da error.o double;  :)  


gracias por la ayuda... pana


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Shell Root

jajajjaa pero entonces, cual es tú pregunta!
Código (java) [Seleccionar]
public class PoC {
 public static void main(String[] args){
   int sTotalPreguntas;
   int sPreguntasCorrectas;
   int        sPorcentaje;

   sTotalPreguntas        = 20;
   sPreguntasCorrectas    = 2;

   sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;

   System.out.println(sPorcentaje + "\n");

   if(sPorcentaje >= 90){
     System.out.println("Nivel máximo");
   }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
     System.out.println("Nivel medio");
   }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
     System.out.println("Nivel regular");
   }else{
     System.out.println("Fuera de nivel");
   }
 }
}

Resultado,
Código (PoC) [Seleccionar]
shellroot@alex-laptop:~/Escritorio$ javac PoC.java
shellroot@alex-laptop:~/Escritorio$ java PoC
10

Fuera de nivel
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

1mpuls0

Cita de: RuB'n. en 30 Septiembre 2010, 22:04 PM
hay da error ves,,,  si ponemos las variables a float no da error.o double;  :) 

Es qué no se trata de solo corregir para solucionar el problema, recuerda que Java es un lenguaje Orientado a Objetos y como tal una de sus caracteristicas es la Abstracción de la información, por ejemplo como mencionas de colocar las variables tipo float; sTotalPreguntas, no te pueden hacer 1.25 preguntas. Pero si tú maestro (o a quien vayas a entregar tu trabajo) no te dice nada pues vale.

Cita de: Shell Root en 30 Septiembre 2010, 23:11 PM
jajajjaa pero entonces, cual es tú pregunta!
+1
abc