Tema destacado: ¡Aprende hacking con práctica! - arZone, el wargame de elhacker.net
Autor
|
Tema: Programa que sepa los signos que hay que poner en una igualdad (Leído 1,023 veces)
|
javirk
Desconectado
Mensajes: 73
|
No he podido jaja estaba en el colegio. El problema no tiene enunciado, me lo he planteado a mí mismo y no se me ocurría forma de hacerlo y por eso pregunté, gracias a todos, de verdad. Lo de la reordenación, pues yo creo que sería como dice Xandrete, en vez de poner al primero el signo positivo, que pueda cambiar entre positivo y negativo.
Y en cuanto a la multiplicación y la división... mejor las dejo de lado, que ahí habría que tener en cuenta demasiadas cosas y no creo que supiera...
|
|
|
|
|
En línea
|
|
|
|
javirk
Desconectado
Mensajes: 73
|
Hola, he estado pensando todos estos días para hacer lo de poner delante del primer número un + o - y así evitar lo del orden, se necesitaría hacer una matriz tridimensional, ¿no? Otra cosa, Xandrete, no entiendo en tu código por qué cuando comb[i][0]=='-' entonces res=a-b. Muchas gracias.
|
|
|
|
« Última modificación: 9 Febrero 2012, 22:28 por javirk »
|
En línea
|
|
|
|
Xandrete
Desconectado
Mensajes: 195
|
A ver. Respondiendo a tu primera pregunta. No, seguiría siendo bidimensional. Sería una matriz 8x3, porque habría 8 casos en total (23) y 3 operadores a decidir.
En el código que te puse (antes del de los if's) la matriz comb es 4x2 porque hay 4 casos en total (22)) y 2 operadores a decidir. El nombre, de hecho, se lo puse por la palabra combinaciones. El sentido de esa matriz es guardar todos los casos posibles: que el primer signo sea - y el segundo -, el primero - y el segundo +, etc.
En cualquier caso, esta solución de la matriz sólo tiene gracia cuando hay poquitos casos. Con 8 casos se me antojaría ya una forma poco elegante y me pasaría a la solución con bucles anidados que te han dado ya con anterioridad.
Tu segunda pregunta. El elemento comb[ i ][0] representa al primer operador de la i-ésima combinación, y comb[ i ][1] al segundo. Si comb[ i ][0] = '-' entonces en res guardamos a - b, y si no, a + b. Luego, a res le sumamos o le restamos c en función de comb[ i ][1]. Comparamos res con result y si son iguales, imprimimos la combinación.
Saludos
|
|
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 604
Cuando me afeito, recuerdo porque me dejo barba.
|
¡Buenas! No te hace falta una matriz. Con tres bucles tienes de sobra: for(i = 0 ; i < 2 ; i++) { for(j = 0 ; j < 2 ; j++) { for(k = 0 ; k < 2 ; k++) { (1 - (i * 2)) * a + (1 - (j * 2)) * b + (1 - (k * 2)) * c // ... } } } ¡Saludos!
|
|
|
|
|
En línea
|
¡¡¡Feliz año nuevo!!!
|
|
|
|
|