Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/09/2013, 17:03
plink6363
 
Fecha de Ingreso: septiembre-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Que pasa con mi operacion!!

Cita:
Iniciado por guzzano Ver Mensaje
Buenas, el problema está en:
Código C:
Ver original
  1. printf("%.2f",&promedio);

Cuando usas el operador & estás especificando la dirección en la memoria donde está almacenado la variable promedio más no los datos que están en dicha variable. La solución es sencilla, solo quitarle el operador & y listo.

Código C:
Ver original
  1. printf("%.2f",promedio);

Tengo dos recomendaciones para ti, creo que es mejor tratarlas ahora.

La primera recomendación, usar la librería conio.h es una mala práctica de programación. Primero, porque no es portable a otro sistema operativo, y segundo al usuario final, lo que interesa es que el programa funcione correctamente, posicionar el texto ya está de más. Si de igual forma quieres hacerlo, puedes usar otras librerías como ncurses que si es portable haciendo solo unos pocos cambios.

Y como segunda recomendación, la función gets desde hace bastante tiempo está resaltada como peligrosas en la mayoría de los compiladores, ¿por qué? fácil, no tiene un limite de caracteres a introducir en la variable. Supongamos que quieres introducir en la variable matricula un texto mayor a los 20 caracteres que especificaste, esto hace que el programa tenga un error inesperado y se cierre, porque escribe en una parte de la memoria donde no debería escribir, y esto es un fallo grande en la seguridad de tu programa, donde se pudieran hacer diferentes tipos de ataques comprometiendo al usuario final.

Como solución, puedes usar la función fgets, para introducir un string en una variable. Ejemplo:

Código C:
Ver original
  1. fgets(matricula, sizeof(matricula), stdin)

Saludos.
Woooow!
Gracias, No esperaba una respuesta tan completa y mucho menos tan buenas recomendaciones, de verdad muchas gracias