[ Foro de C ]

Hola. Necesito ayuda con este codigo, lo que pasa es que al ejecutarlo no entra en ninguna condicion.

29-Sep-2019 20:41
Invitado (John)
3 Respuestas

#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);

}


30-Sep-2019 20:30
kiko torres

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


30-Sep-2019 20:54
kiko torres

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


30-Sep-2019 22:54
marisa peña

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.)