Foros del Web » Programando para Internet » Javascript »

problema con variable numerica

Estas en el tema de problema con variable numerica en el foro de Javascript en Foros del Web. Hola buenas tardes: tengo inconvenientes en mostrar el promedio de una lista de estudiantes que se van registrando uno a uno me arroja el valor ...
  #1 (permalink)  
Antiguo 18/08/2017, 11:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 43
Antigüedad: 17 años, 2 meses
Puntos: 0
problema con variable numerica

Hola buenas tardes: tengo inconvenientes en mostrar el promedio de una lista de estudiantes que se van registrando uno a uno me arroja el valor NaN. Ademas, extrañamente las funciones de mostrarMayor y mostrarMenor no funcionan correctamente. Si se ejecuta una la otra no me envia resultados. En mi opinion creo que es la variable numerica que se captura en el arreglo estudiante. Pero ya he revisado e intentado muchas cosas pero no se que mas hacerle.. Agradezco la ayuda.. adjunto el html y javascript respectivo...

Código HTML:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="js/ejercicio.js"></script>
    <link rel="stylesheet" href="css/ejercicio.css">
  </head>
  <body>

    <h1>Registro Estudiante</h1>
    <b>Codigo</b>
    <br>
    <input type="text" id="txtCodigo">
    <br>
    <b>Nombre</b>
    <br>
    <input type="text" id="txtNombre">
    <br>
    <b>Nota:</b>
    <br>
    <input type="text" id="txtNota">
    <br>
    <br>
    <button type="button" id="btnRegistrar">Registrar Estudiante</button>
    <button type="button" id="btnPromedio">Registrar Promedio</button>
    <button type="button" id="btnNotaMayor">Mostrar Nota Mayor</button>
    <button type="button" id="btnNotaMenor">Mostrar Nota Menor</button>
    

  </body>
</html> 


Código Javascript:
Ver original
  1. window.onload=function(){
  2.   let estudiante=new Array();
  3.   let codigo;
  4.   let nombre;
  5.   let nota;
  6.  
  7.  document.getElementById("btnRegistrar").addEventListener("click",registrar);
  8.   document.getElementById("btnPromedio").addEventListener("click",mostrarPromedio);
  9.   document.getElementById("btnNotaMayor").addEventListener("click",mostrarMayor);
  10.   document.getElementById("btnNotaMenor").addEventListener("click",mostrarMenor);
  11.  
  12.  
  13.   function registrar(){
  14.     codigo=document.getElementById("txtCodigo").value;
  15.     nombre=document.getElementById("txtNombre").value;
  16.     nota=parseFloat(document.getElementById("txtNota").value);
  17.     estudiante.push({'codigo':codigo,'nombre':nombre,'nota':nota});
  18.     document.getElementById("txtCodigo").value="";
  19.     document.getElementById("txtNombre").value="";
  20.     document.getElementById("txtNota").value="";
  21.  
  22.     mostrarTabla();
  23.  
  24.    
  25.  
  26.   }
  27.  
  28.   var tabla=document.createElement("table");
  29.  
  30.   function mostrarTabla(){
  31.  
  32.  
  33.     tabla.setAttribute("border","1");
  34.  
  35.     var fila;
  36.     var celda;
  37.  
  38.     for (var i = 0; i < estudiante.length; i++) {
  39.  
  40.       fila=document.createElement("tr");
  41.       celda=document.createElement("td");
  42.  
  43.       celda.appendChild(document.createTextNode(estudiante[i].codigo));
  44.       celda.appendChild(document.createTextNode(estudiante[i].nombre));
  45.       celda.appendChild(document.createTextNode(estudiante[i].nota));
  46.     }
  47.  
  48.     fila.appendChild(celda);
  49.     tabla.appendChild(fila);
  50.  
  51.     document.body.appendChild(tabla);
  52.  
  53.  
  54.   }
  55.  
  56.   function mostrarPromedio(){
  57.  
  58.     var sum=0;
  59.  
  60.     for(var i=0;i<estudiante.lenght;i++){
  61.       sum+=estudiante[i].nota;
  62.     }
  63.  
  64.     var prom=sum/i;
  65.  
  66.     alert("El promedio de la clase es "+prom);
  67.   }
  68.  
  69.   function mostrarMayor(){
  70.     var salida="";
  71.     var mayor=estudiante[0].nota;
  72.  
  73.     for(var i=0;i<estudiante.length;i++){
  74.         if(mayor<estudiante[i].nota){
  75.           mayor=estudiante[i].nota;
  76.           alert("El estudiante con mayor nota es "+estudiante[i].nombre+
  77.                                                             " con una nota de "+mayor);
  78.         }
  79.     }
  80.  
  81.  
  82.   }
  83.  
  84.   function mostrarMenor(){
  85.     var salida="";
  86.     var menor=estudiante[0].nota;
  87.  
  88.     for(var i=0;i<estudiante.length;i++){
  89.         if(estudiante[i].nota<menor){
  90.           menor=estudiante[i].nota;
  91.           alert("El estudiante con menor nota es "+estudiante[i].nombre+
  92.                                                             " con una nota de "+menor);
  93.         }
  94.  
  95.     }
  96.  
  97.   }
  98.  
  99.  
  100. }
  #2 (permalink)  
Antiguo 18/08/2017, 13:31
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: problema con variable numerica

Bueno ya intnetaste especificar tus varibles dandoles la propiedad segun sea

for(var i=0;i<estudiante.lenght;i++){
sum+=estudiante[i].nota;
}

var prom=parseFloat(sum/i);

parseInt o parseFloat según el tipo de valor enviado, ya sea entero o con decimales según corresponda.

calculo = saldo - cobro + parseInt(valpago);// enteros

o bien
calculo = saldo - cobro + parseFloat(valpago); // con decimales
__________________
Ing. Emilio Viguri de NEXCEN Visitamos en lo que podamos ayudarte.
  #3 (permalink)  
Antiguo 18/08/2017, 13:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 43
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: problema con variable numerica

Cita:
Iniciado por emilio_viguri Ver Mensaje
Bueno ya intnetaste especificar tus varibles dandoles la propiedad segun sea

for(var i=0;i<estudiante.lenght;i++){
sum+=estudiante[i].nota;
}

var prom=parseFloat(sum/i);

parseInt o parseFloat según el tipo de valor enviado, ya sea entero o con decimales según corresponda.

calculo = saldo - cobro + parseInt(valpago);// enteros

o bien
calculo = saldo - cobro + parseFloat(valpago); // con decimales

Hola gracias por la sugerencia.. si ya lo hice... pero no me funciona.. hay algo en el elemento estudiante[i].nota que creo esta mal.. pero no se me ocurre otra forma de calcular el promedio de la lista de estudiantes que no sea traves de un arreglo y comparar la nota mayor y menor. Lo extraño es que ya esta parseada deberia funcionarme pero no se por que no lo hace.
  #4 (permalink)  
Antiguo 18/08/2017, 14:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: problema con variable numerica

La propiedad que obtiene el total de elementos de un arreglo es length, no "lenght". Ese error se encuentra en el bucle que usas en la función mostrarPromedio(). Solo cambia eso y obtendrás el resultado que esperas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 18/08/2017, 15:04
 
Fecha de Ingreso: febrero-2007
Mensajes: 43
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: problema con variable numerica

Cita:
Iniciado por Alexis88 Ver Mensaje
La propiedad que obtiene el total de elementos de un arreglo es length, no "lenght". Ese error se encuentra en el bucle que usas en la función mostrarPromedio(). Solo cambia eso y obtendrás el resultado que esperas.

Que error tan bobo, pude haberme pasado horas y horas tratando de ver errores de lógica cuando la respuesta era tan elemental de sintaxis... Solucionado, De verdad muchas gracias.

Etiquetas: funcion, html, js, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:12.