Dev - C++ - Tabla de Verdad

 
Vista:

Tabla de Verdad

Publicado por Juan (3 intervenciones) el 14/01/2018 04:13:42
Hola, tengo un proyecto en la escuela, el cual consiste en hacer un programa sobre el tema de "Tablas de verad".

El usuario debe de dijitar un numero, y al presionar enter debe de salir la tabla de verdad con el numero de entradas que solicito el usuario (Recuerden que se eleva, y la base es 2)
---------------------------------------------------
Ingrese un numero:
4
//el numero dos es la base, a si que se eleva a la potencia que dijito el usuario, esto dara 16.
//AQUI TENDRA QUE SALIR LA TABLA DE LA VERDAD RESPECTO JUNTO CON SUS ENTRADAS Y LAS SALDAS.



me podrian ayudar a resolverlo, llevo dias investigando, graciasss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tabla de Verdad

Publicado por harol (31 intervenciones) el 14/01/2018 07:30:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <stdlib.h>
#include <math.h>//para usar pow(base,potencia)
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char** argv) {
 
	int num = 0, razon = 0;
	int fi = 0, fil = 0;
	int cont = 1;
	int i = 0, div = 2;
	string tabla[100][100];
 
	cout<<"Ingrese un numero: ";cin>>num;
 
	fi = pow(2,num);
 
 
	for(int j=0; j<num; j++){
		i = 0;
		cont = 1;
		razon = fi / div;
		do{
			for(int fil=i; fil <i+razon; fil++ ){
				if(cont%2!=0){
					tabla[fil][j] = "V";
				}
				else{
					tabla[fil][j] = "F";
				}
			}
			cont++;
			i += razon;
		}while(i<fi);
		div *= 2;
	}
 
	for(int fil=0; fil < fi; fil++){
		for(int col=0; col<num; col++){
			cout<<tabla[fil][col]<<" ";
		}
		cout<<endl;
	}
 
	system("pause>null");
	cout<<endl;
	return 0;
}
//espeero te ayude este codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tabla de Verdad

Publicado por Juan (3 intervenciones) el 14/01/2018 20:57:37
Me ayudaste mucho, y te lo agradezco. Pero me podrías decir, o completar el código para que muestre salidas también, Me servirias mucho mass. Gracias


pd, (La tabla que muestra es de "or" o de "and"?, busco las dos formas.

p q| >q| pV>q|
0 0| 1| 0 |
0 1| 0| 0 |
1 0| 1| 1 |
1 1| 0| 0 |

Algo asi que muestre, esto dependerá obviamente de las entradas y el valor de la potencia que se de
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Tabla de Verdad

Publicado por Andrés (53 intervenciones) el 14/01/2018 20:12:21
Para un número máximo de 31 variables:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
void calcular(unsigned int*);
void imprimir(unsigned int*, unsigned long int*);
 
int main(int argc, char** argv) {
 
    //Valor máximo 31, i. e. 31 variables
	unsigned int num = 0;
 
	cout<<"Ingrese un número: ";
	cin>>num;
    cout<<endl;
 
    calcular(&num);
 
	return EXIT_SUCCESS;
 
}
 
void calcular(unsigned int* num) {
	//potencia de 2, total de impresiones
	unsigned long total = (1 << *num);
	//registro de hasta 32 bits
	unsigned long int holder = 0;
 
	while(total != 0) {
 
    	imprimir(num, &holder);
 
    	//incrementar el valor en el registro
    	holder++;
    	//decrementar las impresiones
		total--;
 
	}
 
}
 
void imprimir(unsigned int* num, unsigned long int* holder) {
 
    //para impresión, valor máximo 31   
    register unsigned int i;
    //asignar el número de bits-1  
	i = (*num)-1;
    //mientras el numero de bits no es 0
    while (i!=0) {
        //comprobar el bit e imprimir V o F
		cout <<((((*holder) >> i) & 1) == 1 ? "V" : "F")<<" ";
		//decrementa i
		i--;
    }
 
    //imprimir el bit 0
    cout <<((((*holder) >> 0) & 1) == 1 ? "V" : "F")<<" ";
 
    cout<<endl;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tabla de Verdad

Publicado por Juan (3 intervenciones) el 14/01/2018 20:58:19
Me ayudaste mucho, y te lo agradezco. Pero me podrías decir, o completar el código para que muestre salidas también, Me servirias mucho mass. Gracias


pd, (La tabla que muestra es de "or" o de "and"?, busco las dos formas.

p q| >q| pV>q|
0 0| 1| 0 |
0 1| 0| 0 |
1 0| 1| 1 |
1 1| 0| 0 |

Algo asi que muestre, esto dependerá obviamente de las entradas y el valor de la potencia que se de
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar