• Jueves 18 de Abril de 2024, 23:58

Autor Tema:  Tabla de verdad  (Leído 21284 veces)

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Tabla de verdad
« en: Miércoles 6 de Abril de 2011, 02:29 »
0
Hola que tal, estoy empezando con programación en c++ en la U y nos pidieron un programa que nos haga las tablas de verdad principales conjunción, disyunción, implicación y doble implicación, y ps las negaciones, aunque se como hacerlas a mano, no tengo ni idea de como pasar esto a un programa, de como ingreso valores, en que modo, y pues les pido ayuda, para orientarme de como hacerlo.
de antemano agradezco su ayuda
Saludos!

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #1 en: Miércoles 6 de Abril de 2011, 02:54 »
0
Si te sirve algo sencillo (aunque un poco largo xd) quizás lo puedas hacer con bucles anidados if ¿?

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #2 en: Miércoles 6 de Abril de 2011, 05:51 »
0
Pero como???
lo unico que se me ocurre es que por ejemplo que si p y q son iguales a V o 1 entonces que muestre V o 1, sino que muestre F o 0
pero no se como hacer eso :S

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Tabla de verdad
« Respuesta #3 en: Miércoles 6 de Abril de 2011, 08:16 »
0
Pues a mí me parece bastante, por no decir muy, fácil.

Código: C++
  1. bool p, q;
  2. unsigned int operacion_logica;
  3.  
  4. cin >> p;
  5. cin >> q;
  6. cin >> operacion_logica;
  7.  
  8. switch(operacion_logica)
  9. {
  10.     etc...
  11. }
  12.  

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #4 en: Sábado 9 de Abril de 2011, 05:49 »
0
ummm de verdad perdon pero es que estoy empezando en esto y la verdad no entiendo nada de lo que me pusieron :S

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #5 en: Sábado 9 de Abril de 2011, 12:40 »
0
Lo que te pone m0skit0 es que crees dos valores de tipo booleanos (sólo toman valores entre true y false, es decir 1 o 0) y luego la operación lógica (esta tomará los valores de negación, disyunción...). Le haces un switch para cada uno de los valores que le asignes a la operación lógica y después en los "case" vas poniendo según sea disyunción, negación.. hacer esto;  y así continuamente. Por ejemplo, con una disyunción. p sería por ejemplo estar cansado y q es de noche, estos tomarán los valores 1 o 0. Le tendrías que decir; case 1 (disyunción){ si p==1 y q ==1 --> devolver 1; si p==0 y q ==0 -->devolver 0;...; } y así para los 4 posibles valores entre 0 y 1 y para los tipos de operaciones que quieras realizar. Te doy un ejemplo (aunque ya está casi hecho xdd)

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     bool p, q;
  5.  
  6.     cout<<"Introduce el valor (0 | 1) del primer valor de verdadn";
  7.  
  8.     cin>>p; cout<<"n";
  9.  
  10.     cout<<"Introduce el valor (0 | 1) del segundo valor de verdadn";
  11.  
  12.     cin>>q; cout<<"n";
  13.  
  14.     cout<<"Introduce la operación lógican";
  15.  
  16.     cout<<"1->DISYUNCIONn"<<"2->CONJUNCIONn"; //etc....
  17.  
  18.     int unsigned operacion_logica;
  19.  
  20.     cin>>operacion_logica;cout<<"n";
  21.    
  22.     switch (operacion_logica){
  23.  
  24.         case (1):{
  25.  
  26.             if(p==1||q==1){
  27.  
  28.                 cout<<"1n";
  29.  
  30.             }
  31.  
  32.             else{
  33.  
  34.                 cout<<"0n";
  35.  
  36.             }
  37.  
  38.         break;
  39.         }
  40.         case (2):{
  41.  
  42.             if (p==1 && q==1){
  43.  
  44.                 cout<<"1n";
  45.  
  46.             }
  47.             else{
  48.  
  49.                 cout<<"0n";
  50.  
  51.             }
  52.  
  53.         }
  54.     break;
  55.     }
  56.  
  57. }
  58.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Tabla de verdad
« Respuesta #6 en: Sábado 9 de Abril de 2011, 15:43 »
0
Pero no se lo des hecho, hombre...  :brickwall: Y además para qué te complicas la vida:

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     bool p, q;
  6.  
  7.     cout<<"Introduce el valor (0 | 1) del primer valor de verdadn";
  8.  
  9.     cin>>p; cout<<"n";
  10.  
  11.     cout<<"Introduce el valor (0 | 1) del segundo valor de verdadn";
  12.  
  13.     cin>>q; cout<<"n";
  14.  
  15.     cout<<"Introduce la operación lógican";
  16.  
  17.     cout<<"1->DISYUNCIONn"<<"2->CONJUNCIONn"; //etc....
  18.  
  19.     int unsigned operacion_logica;
  20.  
  21.     cin>>operacion_logica;cout<<"n";
  22.    
  23.     bool resultado;
  24.     switch (operacion_logica)
  25.     {
  26.  
  27.         case (1):
  28.             resultado  = (p||q);
  29.             break;
  30.  
  31.         case (2):
  32.             resultado  = (p&&q);
  33.             break;
  34.     }
  35.     cout << resultado << endl;
  36.  
  37. }
  38.  

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #7 en: Sábado 9 de Abril de 2011, 22:37 »
0
Tambien tienes razon ... jajaja

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #8 en: Miércoles 27 de Abril de 2011, 02:27 »
0
gracias checho y mosquito, aun no entiendo muy bien el código, pero pues es que estoy empezando, y de verdad gracias poco a poco voy empezando a entender mase esto es que si me cuesta :S

rogerfor

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #9 en: Miércoles 27 de Abril de 2011, 05:29 »
0
solo tengo una duda, para sirven en si estos 2??
no entiendo muy bien la diferencia

||
&&

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #10 en: Miércoles 27 de Abril de 2011, 16:45 »
0
|| -> OR :

&& -> AND

Código: C
  1. if( numero == 4 || numero == 6 ) //Entrara al if si el número es 4 O 6.
  2.  
  3. if( numero > 5 && numero < 10 ) //Entrara al ciclo si numero es mayor que 5 Y menor que 10
  4.  

Saludos  ^_^

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Tabla de verdad
« Respuesta #11 en: Miércoles 27 de Abril de 2011, 23:24 »
0
Cita de: "Leber"
|| -> disyunción lógica :

&& -> conjunción lógica
^_^
« última modificación: Jueves 28 de Abril de 2011, 10:49 por m0skit0 »

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #12 en: Miércoles 27 de Abril de 2011, 23:36 »
0
Uhm, creo que me he colado pues, pensaba que se refería a los otros. Fallo mio  :brickwall:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Tabla de verdad
« Respuesta #13 en: Jueves 28 de Abril de 2011, 10:48 »
0
No no, perdón, me he explicado mal. Es lo mismo, sólo traducido (¿para qué ponerlo en inglés si existe en español?).

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Tabla de verdad
« Respuesta #14 en: Jueves 28 de Abril de 2011, 10:56 »
0
Aclarado entonces  :P , fallo mio por no pensar en castellano  :lol: