Buenas, estoy haciendo ejercicios para resolver algoritmos ya que es algo que necesito practicar y bueno, he logrado hacer el ejercicio, que es el siguiente (copiado y pegado):
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:
#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:
#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