Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - EstudXx

#1
Entiendo que existan combinaciones que excedan la expresión y sean invalidas.

Sin embargo, el código que te mostré no imprime valores inválidos ni repite combinaciones.

La reinicializacion en 1 existe para que todas las combinaciones posibles sean evaluadas.

Puesto que no es lo mismo probar

T=1 con P=1 y R=6

Con:

T=1 con P=2 y R=6 

O dicho de otra manera:

Lo que este código hace es probar 1,1,X, cuando X sea tan grande que la condicion no se cumpla, prueba con 1,2,X de nuevo hasta que no se cumpla. Sin esa reinicializacion estaria discriminando combinaciones.

Como sea, creo que no has analizado este argumento:

Cita de: EstudXx en  7 Octubre 2012, 20:05 PM
El problema que veo es que yo puedo hacer esto:

Asignarle a  T: 1
Asignarle a  P: 1
Asignarle a  R: 1

Si sustituimos, veremos como estos 3 valores cumplen adecuadamente la condición, puesto que:

(7*1^4) - (6*1^3) + 12*(1^5) = 7 - 6 + 12 = 13  13 < 5850

Ok, después de esto, yo puedo incrementar a P por uno y dejar los otros 2 en 1.

Y como el termino donde esta P siempre resta, el resultado seria aun menor al anterior y seguiría cumpliendo.

Yo puedo repetir este proceso teóricamente en infinitas ocasiones, y esto ocasiona que las posibles respuestas sean infinitas.

¿Si me explico?




Este es independiente de cualquier implementacion del problema en lenguaje computacional y permite analizar mejor la duda que tengo. Te pido que por favor le pongas especial atención a este argumento, ya que si no existe ningún error en el, entonces mi teoría de que las combinaciones son infinitas queda probada.
#2
Por cierto, ya tengo un código que no se ve limitado en la cantidad de valores que prueba, usando while´s anidados.


int main()
{
unsigned int T=1,P=1,R=1;
while (7* pow (float(T),4) - 6* pow (float (P),3) + 12 * pow (float(R),5) < 5850)
{
while (7* pow (float(T),4) - 6* pow (float (P),3) + 12 * pow (float(R),5) < 5850)
{
while (7* pow (float(T),4) - 6* pow (float (P),3) + 12 * pow (float(R),5) < 5850)
{
printf ("%d, %d y %d cumplen \n",T,P,R);
R++;
}
R = 1;
P++;
}
P = 1;
T++;
}
return 0;
}


Y nunca termina de arrojar salidas validas.
#3
El problema que veo es que yo puedo hacer esto:

Asignarle a  T: 1
Asignarle a  P: 1
Asignarle a  R: 1

Si sustituimos, veremos como estos 3 valores cumplen adecuadamente la condición, puesto que:

(7*1^4) - (6*1^3) + 12*(1^5) = 7 - 6 + 12 = 13  13 < 5850

Ok, después de esto, yo puedo incrementar a P por uno y dejar los otros 2 en 1.

Y como el termino donde esta P siempre resta, el resultado seria aun menor al anterior y seguiría cumpliendo.

Yo puedo repetir este proceso teóricamente en infinitas ocasiones, y esto ocasiona que las posibles respuestas sean infinitas.

¿Si me explico?


#4
Hola, espero que me puedan ayudar con un problema de programación.

En el libro "Fundamentos de programación - Piensa en C", existe este problema:

Construye un programa en C que escriba todos los valores positivos de T, P y R que satisfagan la siguiente expresión:

(7*T^4) - (6*P^3) + 12*(R^5) < 5850

Nota: T, P y R solo pueden tomar valores positivos.


Ya he realizado el código, sin embargo, he notado que este no termina de arrojar valores que cumplen la expresión. Pienso que esto es debido a que teóricamente la cantidad de posibilidades es infinita debido a que un termino se encuentra restando.

Por lo tanto mi duda es: ¿Este problema de verdad tiene una cantidad infinita de posibles soluciones, o existe algo que no este tomando en cuenta y deba limitar la cantidad de estas?

Saludos y gracias por la ayuda.