[ Foro de C ]
#include <stdio.h>
main()
{
float prom,cur1,cur2,cur3,cur4,cur5,cur6,tot;
char preg_o_pos[8],pregrado[8],posgrado[8] ;
printf (" Introduzca su promedio: \n");
scanf("%f",&prom);
printf (" Introduzca si es 'pregrado' o 'posgrado': \n");
scanf("%s",&preg_o_pos);
cur1=1400;
cur2=1250;
cur3=1000;
cur4=750;
cur5=900;
cur6=450;
if(prom >= 4.5 && preg_o_pos== pregrado){
tot=(0.25*cur1);
tot=(cur1-tot);
}
else{
if(prom >= 4.0 ||prom <=4.5 && preg_o_pos == pregrado){
tot=(0.10*cur2);
tot=(cur2-tot);
}
else{
if(prom >= 2.5 &&prom <=3.5 && preg_o_pos == pregrado){
tot=cur3;
}
else{
if(prom >= 3.5 &&prom <=4.5 && preg_o_pos == pregrado){
tot=cur4;
}
else{
if(prom <= 3.5 && preg_o_pos == pregrado){
printf("No puede matricularse\n");
}
else{
if(prom >= 4.5 && preg_o_pos == posgrado){
tot=(0.20*cur5);
tot=(cur5-tot);
}
else{
if(prom <= 4.5 && preg_o_pos == posgrado){
tot=cur6;
}
}
}
}
}
}
}
printf(" El total a pagar sera: %f \n", tot);
}
hola john
a mi me da varios warnings :
el primero es que main deve devolver un int que no tines
el segundo es que en el primer scanf estas mandando un puntero de un puntero ya que el nombre de un array es en si mismo un puntero por lo que no hace falta el ampersand
el tercer warning es por el if del primer else, por cierto la identacion del codigo es mas clara en forosdelweb pero sobre gustos no hay nada escrito ;-), bueno ese if contiene una sentencia compuesta y el compilador no tiene claro que operacion hacer primero, aunque el orden de precedencia es claro, el compilador quiere que lo dejes mas claro con unos parentesis
suerte
hola de nuevo john
correccion: el segundo warning que me da no es en el primer scanf si no en el segundo
suerte con el programa
buenas john
ademas de como bien dice kiko con los warnings, la logica del programa deja mucho que desear,
por ejemplo, si empiezas preguntando si es pre o posgrado y sabiendo eso pasas a preguntar por el promedio quedara muchiiiiisimo mas claro
por otro lado en el if que marca el warning creo que te equivocas por que si ...
promedio es mayor o igual a cuatro, o pormedio es menor o igual a cuatro coma cinco; es una condicion que se cumple siempre
ademas de la logica del programa tienes muchos mas fallos:
para saber si es pos o pregrado estas comparando dos direcciones de memoria ???¿¿¿
tampoco inicializas los valores de los arrays,
los array no se comparan tal como tu haces,
utilizas dos sentencias para calcular un descuento
.... tot=(0.25*cur1); tot=(cur1-tot);
cuando solo necesitas una sentencia y quedaria mas claro
respecto a preguntar el pos y pregrado yo lo haria ... pulsa 1 si es pregrado, pusal 2 si es posgrado, te ahorraras muchos errores en la introduccion de ese dato
ya me cuentas como te he ido
chao chao
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)