Ayuda con programa en C.

Iniciado por EdgarKrieger, 30 Octubre 2018, 19:18 PM

0 Miembros y 1 Visitante están viendo este tema.

EdgarKrieger

Hola comunidad, ahora les tengo un problema que para algunos les será bastante fácil, otros no se jejejeje como a mi, lo que sucede es que tengo que hacer un programa en C que dados tres números p,s,r se debe determinar el número d de días, es decir, si se tiene una profundidad d=10 y se sube al día s=5 y se resbala r=2, cuantos días se tarda en recorrer la profundidad establecida. El resultado es d=3 días, mi problema es que no me funciona para otros casos y solamente puedo resolver este problema por medio de si condicionales (if-else), el código que hice es este:


/*
Dados los numeros p,s,r deberas determinar el numero d de dias que tarda en salir
el caracol del agujero.

La entrada consiste de tres numeros enteros p,s,r (con s>r), separados por espacios
que tendran un valor entre 1 y 1000000. La salida consiste de un numero entero d.
*/

#include <stdio.h>

int main(){
int p=0,s=0,r=0,d=0,res=0,res2=0;

scanf("%d %d %d",&p,&s,&r);

if(r>s){
printf("El caracol nunca lograra salir del agujero\n");
}else{
if(d<p){
res=s+r;
d=p-res;
}
printf("%d\n",d);
}

    return 0;
}


lo intente con otras formulas y la función while, pero aún así no me funciona.


while(d<p){
res=p-s;
res2=res+r;
d++;
}


Alguien que me pueda ayudar, se lo agradecería mucho, es un ejercicio que tengo que realizar, pero nada más no me sale. Gracias por su ayuda.
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei

AlbertoBSD

Hola que tal, estos problemas tienen trampa, generalmente si los tratas de resolver de forma iterativa (Simulando con while la cantidad de dias transcurridos haciendo las operaciones de suma y resta del avance diario) tarda mucho, bueno si y no, con la velocidad actual de las computadoras no se siente, pero este tipo de problemas es para concursos donde miden el tiempo de uso del CPU y la cantidad de tiempo que tarda el programa en responder.

Por que la verdad es muy distinto, realizar un simple par de sumas, restas y una division a realizar un ciclo while con 1000000 repeticiones de sumas y restas.

La solución a este problema es de forma Matemática.

Ejemplo, si te dicen que Sube S cantidad de metros por dia, y de noche baja R cantidad.
En un ciclo completo cuantos metros T totales realmente sube?

T = S - R

Entonces tenemos que por dia avanza T metros. Entonces el minimo numero de D dias para completar una distancia P es de

D = P /T

D= P / (S-R)

Puede darnos un numero Decimal ? SI

Solo necesitamos la parte entera de ese numero, es decir redondeamos hacia el Entero mas Bajo

Por ejemplo un resultado de 9.9 se redondea a 9.

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

EdgarKrieger

Muchas gracias por tu ayuda AlbertoBSD, pues si estaba algo perdido jejeje, seguiré practicando mucho más.
Saludos.
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei