Foro de elhacker.net

Programación => Java => Mensaje iniciado por: rub'n en 30 Septiembre 2010, 07:01 am



Título: Duda de programa en java :( condicional simple.
Publicado por: rub'n en 30 Septiembre 2010, 07:01 am
Código
  1. //Un postulante a un empleo, realiza un test de capacitación, se obtuvo la siguiente información: cantidad
  2. //total de preguntas que se le realizaron y la cantidad de preguntas que contestó correctamente.
  3. //Se pide confeccionar un programa que ingrese los dos datos por teclado e informe el nivel del mismo según el
  4. //porcentaje de respuestas correctas que ha obtenido, y sabiendo que:
  5. //Nivel máximo:    Porcentaje>=90%.
  6. //Nivel medio:    Porcentaje>=75% y <90%.
  7. //Nivel regular:    Porcentaje>=50% y <75%.
  8. //Fuera de nivel:    Porcentaje<50%.
  9.  
  10. import java.util.Scanner;
  11. public class Postulanteaempleo {
  12.  
  13.    public static void main(String[] args) {
  14.        Scanner teclado= new Scanner(System.in);
  15.  
  16.        int preguntotal;
  17.        int preguntascorrectas;
  18.        int porcentaje;
  19.  
  20.        System.out.println("Introduce cantidad total de preguntas que se le realizaron: ");
  21.        preguntotal=teclado.nextInt();
  22.  
  23.        System.out.println("Cantidad de preguntas que contestó correctamente: ");
  24.        preguntascorrectas=teclado.nextInt();
  25.  
  26.        porcentaje= preguntascorrectas*100/preguntotal;
  27.  
  28.  
  29.        if(porcentaje >= 90 )
  30.        {
  31.            System.out.println("Nivel máximo");
  32.        }
  33.            else
  34.            {
  35.                if(porcentaje >= 75 && porcentaje < 90)
  36.                    {                    
  37.                    System.out.println("Nivel medio");
  38.                    }
  39.                    else
  40.                    {
  41.                        if(porcentaje >= 50 && porcentaje < 75)
  42.                        {
  43.                        System.out.println("Nivel regular");
  44.                        }
  45.                        else
  46.                        {
  47.                        System.out.println("Fuera de nivel");
  48.                        }
  49.  
  50.  
  51.  
  52.  
  53.  
  54.                    }
  55.  
  56.            }
  57.  
  58.  
  59.    }
  60.  
  61. }


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 ???   :-[







Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Shell Root en 30 Septiembre 2010, 19:28 pm
Así, <Tienes que hacer que ingrese los números desde la consola>,
Código
  1. public class PoC {
  2.  public static void main(String[] args){
  3.    int sTotalPreguntas;
  4.    int sPreguntasCorrectas;
  5.    double sPorcentaje;
  6.  
  7.    sTotalPreguntas = 20;
  8.    sPreguntasCorrectas = 10;
  9.  
  10.    sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;
  11.  
  12.    System.out.println(sPorcentaje + "\n");
  13.  
  14.    if(sPorcentaje >= 90){
  15.      System.out.println("Nivel máximo");
  16.    }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
  17.      System.out.println("Nivel medio");
  18.    }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
  19.      System.out.println("Nivel regular");
  20.    }else{
  21.      System.out.println("Fuera de nivel");
  22.    }
  23.  }
  24. }


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Debci en 30 Septiembre 2010, 19:40 pm
sabes que puedes usar parentesis para forzar la priorizacion de calculos?

Saludos



Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Shell Root en 30 Septiembre 2010, 19:42 pm
Simon. Como en matemáticas, verdad?
Código
  1. sPorcentaje = (sPreguntasCorrectas * 100) / sTotalPreguntas;


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Debci en 30 Septiembre 2010, 19:44 pm
Mmm no entiendo tu primera respuesta :S

Saludos


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: rub'n en 30 Septiembre 2010, 21:03 pm
 
Así, <Tienes que hacer que ingrese los números desde la consola>,
Código
  1. public class PoC {
  2.  public static void main(String[] args){
  3.    int sTotalPreguntas;
  4.    int sPreguntasCorrectas;
  5.    double sPorcentaje;
  6.  
  7.    sTotalPreguntas = 20;
  8.    sPreguntasCorrectas = 10;
  9.  
  10.    sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;
  11.  
  12.    System.out.println(sPorcentaje + "\n");
  13.  
  14.    if(sPorcentaje >= 90){
  15.      System.out.println("Nivel máximo");
  16.    }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
  17.      System.out.println("Nivel medio");
  18.    }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
  19.      System.out.println("Nivel regular");
  20.    }else{
  21.      System.out.println("Fuera de nivel");
  22.    }
  23.  }
  24. }


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

Código:
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.


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Shell Root en 30 Septiembre 2010, 21:27 pm
Cómo?, No entendí, hice esto,
Código
  1. [SNIP]
  2.    sTotalPreguntas = 20;
  3.    sPreguntasCorrectas = 10;
  4. [/SNIP]
y me dio como resultado lo siguiente,
Código
  1. shellroot@alex-laptop:~/Escritorio$ java PoC
  2. 50.0
  3.  
  4. Nivel regular


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: rub'n en 30 Septiembre 2010, 22:04 pm
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


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: Shell Root en 30 Septiembre 2010, 23:11 pm
jajajjaa pero entonces, cual es tú pregunta!
Código
  1. public class PoC {
  2.  public static void main(String[] args){
  3.    int sTotalPreguntas;
  4.    int sPreguntasCorrectas;
  5.    int        sPorcentaje;
  6.  
  7.    sTotalPreguntas        = 20;
  8.    sPreguntasCorrectas    = 2;
  9.  
  10.    sPorcentaje = sPreguntasCorrectas * 100 / sTotalPreguntas;
  11.  
  12.    System.out.println(sPorcentaje + "\n");
  13.  
  14.    if(sPorcentaje >= 90){
  15.      System.out.println("Nivel máximo");
  16.    }else if((sPorcentaje >= 75) && (sPorcentaje < 90)){
  17.      System.out.println("Nivel medio");
  18.    }else if((sPorcentaje >= 50) && (sPorcentaje < 75)){
  19.      System.out.println("Nivel regular");
  20.    }else{
  21.      System.out.println("Fuera de nivel");
  22.    }
  23.  }
  24. }
Resultado,
Código
  1. shellroot@alex-laptop:~/Escritorio$ javac PoC.java
  2. shellroot@alex-laptop:~/Escritorio$ java PoC
  3. 10
  4.  
  5. Fuera de nivel


Título: Re: Duda de programa en java :( condicional simple.
Publicado por: 1mpuls0 en 1 Octubre 2010, 01:29 am
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.

jajajjaa pero entonces, cual es tú pregunta!
+1