elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa que sepa los signos que hay que poner en una igualdad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Programa que sepa los signos que hay que poner en una igualdad  (Leído 7,185 veces)
javirk

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #10 en: 5 Febrero 2012, 16:46 pm »

Hola, muchas gracias por vuestras respuestas, de verdad.

do-while, creo que tu solución se me queda algo grande, no sé ni por dónde empezar, pero muchas gracias, lo tendré que mirar más en detalle.

ghastlyX, aún no sé nada de vectores, pero parece que los entiendo más o menos al ver tu solución, muchas gracias.

Xandrete, creo que tu solución es la que más me interesa, posiblemente por ser la más corta, pero no me funciona cuando la compilo, es decir,  que no me sale nada, y meto 4 números y sale del programa; lo mismo me pasa con la de ghastlyX, pero este no sale, simplemente no hace nada. ¿Por qué puede ser eso?

Bueno, a lo que iba, Xandrete, lo que no entiendo del tuyo es eso del "comb[][2]", ¿por qué dos corchetes?

Un saludo y gracias a todos.


En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #11 en: 6 Febrero 2012, 00:30 am »

Hola, muchas gracias por vuestras respuestas, de verdad.

do-while, creo que tu solución se me queda algo grande, no sé ni por dónde empezar, pero muchas gracias, lo tendré que mirar más en detalle.

ghastlyX, aún no sé nada de vectores, pero parece que los entiendo más o menos al ver tu solución, muchas gracias.

Xandrete, creo que tu solución es la que más me interesa, posiblemente por ser la más corta, pero no me funciona cuando la compilo, es decir,  que no me sale nada, y meto 4 números y sale del programa; lo mismo me pasa con la de ghastlyX, pero este no sale, simplemente no hace nada. ¿Por qué puede ser eso?

Bueno, a lo que iba, Xandrete, lo que no entiendo del tuyo es eso del "comb[][2]", ¿por qué dos corchetes?

Un saludo y gracias a todos.

¿Quizás sea porque no existe ninguna combinación de operadores que haga que se cumpla la igualdad? No he tenido ningún problema con el código que te he propuesto. Yo lo he compilado con las opciones -Wall, -Werror y -Wextra para asegurarme de que no había ni error ni warnings de ninguna clase (siempre compilo así) y lo he probado con la entrada que das como ejemplo y con otras.

Con 7 2 1 8 la salida es:

7+2-1=8

Con 0 0 0 0 la salida es:

0-0-0=0
0+0-0=0
0-0+0=0
0+0+0=0

Con 1 1 1 1 la salida es

1+1-1=1
1-1+1=1

Y con 0 0 0 1 no se imprime nada (como ha de ser).

¿Por qué dos corchetes? Porque es un array de arrays de caracteres. O sea, una matriz o estructura de datos bidimensional. Se suelen declarar así, con un par de corchetes. Mírate bien el tema de los arrays.

Otra manera. Con if's, tal y como habías pensado tú al principio:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int a,b,c,result;
  6. cin >> a >> b >> c >> result;
  7. if (a-b-c == result)
  8. cout << a << "-" << b << "-" << c << "=" << result << endl;
  9. if (a-b+c == result)
  10. cout << a << "-" << b << "+" << c << "=" << result << endl;
  11. if (a+b-c == result)
  12. cout << a << "+" << b << "-" << c << "=" << result << endl;
  13. if (a+b+c == result)
  14. cout << a << "+" << b << "+" << c << "=" << result << endl;
  15. }

Este último código si que es claro a más no poder. De todas formas, no nos has sacado de dudas aún acerca del número de signos que consideras. ¿Están la multiplicación y la división también incluidos? Todos estamos asumiendo que sólo te interesan sumas y restas.

Saludos





En línea

ghastlyX
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.900



Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #12 en: 6 Febrero 2012, 01:18 am »

Si no te hace nada mi programa y no termina es porque no le pasarás correctamente la entrada. Si te fijas en lo que he dicho o en el código, verás que mi programa no trabaja con tres números, sino con los que tú quieras, lo he hecho para el caso general . El formato de la entrada es primero la cantidad de números que usarás (en tu caso sería 3), a continuación el resultado que buscas y luego los números que se deban usar (tantos como hayas indicado). Por ejemplo, para tu ejemplo sería:
Código:
3 8                                                                                                                                           
7 2 1

Y la salida que produce es
Código:
+7+2-1

Otro caso por ejemplo sería
Código:
5 8
7 2 1 1 1

Y su salida es
Código:
+7+2+1-1-1
+7+2-1+1-1
+7+2-1-1+1
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #13 en: 6 Febrero 2012, 01:39 am »

¡Buenas!

No se si el problema esta bien planteado. ¿Los numero hay que utilizarlos en el orden en el que se introducen, o se pueden reordenar?

Lo digo porque si se pueden reordenar, en principipo tendras 4 formas de poner los simbolos de suma y resta en los dos huecos que tienes, y 6 (3!) formas de reorganizar los tres numeros para buscar el resultado, en total 24 casos (que luego se quedan en menos, ya que la suma es conmutativa). Si estas en este ultimo caso, introducir todas las condiciones a mano es largo y bastante propenso a cometer errores...

¡Saludos!

Editado:

Si lo miras con mas detenimiento, solo tienes que variar los coeficientes de los elementos. +/-a, +/-b y +/-c y luego sumarlos, asi queda mas claro, ya que solo tendras que comprobar 8 casos y te olvidas de reordenar los elementos:

a+b+c
a+b-c
a-b+c
-a+b+c
a-b-c
-a+b-c
-a-b+c
-a-b-c
« Última modificación: 6 Febrero 2012, 01:53 am por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #14 en: 6 Febrero 2012, 09:14 am »

¿Reordenar? Bueno, javirk no nos había planteado esa posibilidad.

Si fuera posible, lo que haría simplemente sería considerar un signo más (un - o + antes de la a) y me ahorraría reordenar, que es justo lo que propone do-while. En ese caso habría 23= 8 casos, tal y como nos sugiere. De todas formas, yo apuesto por la Navaja de Ockham y creo que el problema es la versión más sencilla de la que hemos planteado por aquí: sólo dos operadores (suma y resta) y sin posibilidad de reordenación. Y si no es así, que javirk nos dé el enunciado completo de su problema. No tiene sentido que especulemos mientras él no nos dice ni mu xD (javirk, no te mosquees, lo digo sin intención de ofender, a lo mejor no has podido responder aún por alguna razón >.<)

¡Saludos!
En línea

javirk

Desconectado Desconectado

Mensajes: 102


Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #15 en: 6 Febrero 2012, 15:56 pm »

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 Desconectado

Mensajes: 102


Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #16 en: 9 Febrero 2012, 22:10 pm »

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
Código:
comb[i][0]=='-'
entonces res=a-b.

Muchas gracias.

« Última modificación: 9 Febrero 2012, 22:28 pm por javirk » En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #17 en: 10 Febrero 2012, 01:10 am »

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 Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Programa que sepa los signos que hay que poner en una igualdad
« Respuesta #18 en: 10 Febrero 2012, 04:33 am »

¡Buenas!

No te hace falta una matriz. Con tres bucles tienes de sobra:

Código
  1.  
  2. for(i = 0 ; i < 2 ; i++)
  3. {
  4.    for(j = 0 ; j < 2 ; j++)
  5.    {
  6.        for(k = 0 ; k < 2 ; k++)
  7.        {
  8.            (1 - (i * 2)) * a + (1 - (j * 2)) * b + (1 - (k * 2)) * c
  9.            // ...
  10.        }
  11.    }
  12. }
  13.  
  14.  

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hace caso omiso de la igualdad (en un if)
Programación Visual Basic
Servia 4 3,016 Último mensaje 6 Abril 2010, 20:03 pm
por agus0
hacking netbook conectar igualdad
Bugs y Exploits
nelsodan 2 10,427 Último mensaje 20 Diciembre 2010, 17:00 pm
por volteo0101
limpiar un str de signos raros « 1 2 »
PHP
Kase 12 8,791 Último mensaje 13 Abril 2011, 16:09 pm
por ~ Yoya ~
Conectar igualdad Netbook
Seguridad
nachorav 4 3,687 Último mensaje 19 Abril 2014, 08:44 am
por Crazy.sx
Conectar Igualdad, intercambiemos ideas
Dudas Generales
Markks 1 1,802 Último mensaje 18 Febrero 2018, 12:29 pm
por Machacador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines