Determine el valor de un pasaje en avión , conociendo la distancia a recorrer, el número de días de estancia, y sabiendo que si la distancia a recorrer es superior a 1000 Km y el número de días de estancia es superior a 7, la línea aérea le hace un descuento del 30%. ( el precio por km. es de$35.00)
El código que funciona es el siguiente:
Código
#include <stdio.h> int main() { /* Se declaran las variables */ int distancia,dias; int prectotalkm,descuento,valorpasaje; /* Se pide al usuario la informacion de dos de las variables */ printf("Introduce la distancia.\n"); /* Queda declarada la variable DISTANCIA */ scanf("%d",&distancia); printf("Introduce el numero de dias. \n"); /* Queda declarada la variable DIAS */ scanf("%d",&dias); /* Se declaran variables que ya se pueden declarar */ prectotalkm=distancia*35; descuento=(prectotalkm*30)/100; valorpasaje=prectotalkm-descuento; /* COMIENZA EL ALGORITMO */ /*Mientras que la distancia sea menor a 1000 */ while(distancia<1000) { printf("El precio del pasaje es %d",prectotalkm); return 0; } /* Mientras que la distancia sea mayor a 1000 */ while(distancia>1000) { if(dias>7) { printf("El valor del pasaje es %d",valorpasaje); } else { printf("El valor del pasaje es %d",prectotalkm); } return 0; } return 0; }
Pero yo al principio lo he hecho con DO WHILE y no funcionaba, daba siempre el mismo resultado, sin pasar al segundo DO WHILE, siempre hacía el primero y el código "malo" es el siguiente:
Código
#include <stdio.h> int main() { /* Se declaran las variables */ int distancia,dias; int prectotalkm,descuento,valorpasaje; /* Se pide al usuario la informacion de dos de las variables */ printf("Introduce la distancia.\n"); /* Queda declarada la variable DISTANCIA */ scanf("%d",&distancia); printf("Introduce el numero de dias. \n"); /* Queda declarada la variable DIAS */ scanf("%d",&dias); /* Se declaran variables que ya se pueden declarar */ prectotalkm=distancia*35; descuento=(prectotalkm*30)/100; valorpasaje=prectotalkm-descuento; /* COMIENZA EL ALGORITMO */ /*Mientras que la distancia sea menor a 1000 */ do { printf("El precio del pasaje es %d",prectotalkm); return 0; } while(distancia<1000); /* Mientras que la distancia sea mayor a 1000 */ do { if(dias>7) { printf("El valor del pasaje es %d",valorpasaje); } else { printf("El valor del pasaje es %d",prectotalkm); } } while(distancia>1000); return 0; }
¿Alguien me puede explicar porque el primer código con WHILE funciona pero el mismo y con DO WHILE no? Se que DO WHILE comprueba la condición al final pero no se que tiene que ver realmente, debería funcionar, pero eso se lo dejo a los sabios jeje
P.D: ¿Cómo pongo el código con colores para que no sean tan basto de ver? ¿Tengo que hacerlo manual?
Mod: para que el código se vea en colores, debes usar las etiquetas GeSHi, es el cuadro selector que está a la derecha, arriba de los emoticones