int main() {
	char prop[LMAX];
	char *vars;
	char *resp;
	bool *vals;	
	
	
	printf("Este programa construye la tabla de verdad de una exprecion logica.\n");
	printf("Los operadores logicos validos son:\n\n");
	printf("\"!\"\tNEGACION\n");
	printf("\"&\"\tCONJUNCION\n");
	printf("\"|\"\tDISYUNCION\n");
	printf("\":\"\tIMPLICACION\n");
	printf("\"=\"\tBICONDICIONAL\n\n");
	printf("Puede usar expreciones anidadas con parentesis.\n\n");
	
	printf("EXPRECION> ");
	int n = leer_entrada(prop);
	
	resp = new char[n];
	vars = new char[n];
	vals = new bool[n];
	for(int i=0; i<n; i++) {
		resp[i] = ' ';
		vars[i] = '\0';
		vals[i] = false;
	}
	resp[n-1] = '\0';
	
	if(validar_sintaxis(prop, 0, n)) {
		int nvars = buscar_variables(prop, vars);
 		int reps = (int)pow(2, nvars);

        printf("\n");
		for(int i=0; i<nvars; i++)
			printf("%c ", vars[i]);
		printf("| ");
		for(int i=0; i<n; i++)
			printf("%c ", prop[i]);
		printf("\n\n");		
		for(int i=0; i<reps; i++) {
			for(int j=0; j<nvars; j++) {
				if(i%(int)pow(2, nvars-j-1) == 0) {
					vals[j] = !vals[j];
				}
				if(vals[j]) printf("V "); else printf("F ");
			}
			printf("| ");
			evaluar_proposicion(prop, vals, vars, resp, 0, n);
			for(int j=0; j<n; j++)
				printf("%c ", resp[j]);
			printf("\n");
		}
	}
	else {
		printf("ERROR LA SINTAXIS DE LA EXPRECION ES INCORRECTA.\n");
	}
    system("pause>nul");
	return 0;
}
예제 #2
0
파일: tp1.c 프로젝트: wizzard94/TP1
/*
 Crear maquina de votacion con respectivos TDAs
 Procesar comandos de entrada.
*/
int main() {
    maquina_votacion_t* maquina = malloc(sizeof(maquina_votacion_t));
    if(!maquina) return 1;

    cola_t* cola = cola_crear();
    if(!cola) { free(maquina); return 2; }

    maquina->estado = CERRADA;
    maquina->cola = cola;
    maquina->ciclo = NULL;
    maquina->listas = NULL;
    maquina->padron = NULL;
    maquina->votando_cargo = 0;

    COMANDOS_FUNCIONES[CMD_ABRIR] = comando_abrir;
    COMANDOS_FUNCIONES[CMD_INGRESAR] = comando_ingresar;
    COMANDOS_FUNCIONES[CMD_CERRAR] = comando_cerrar;
    COMANDOS_FUNCIONES[CMD_VOTAR] = comando_votar;

    leer_entrada(maquina);

    cerrar_maquina(maquina);
    free(maquina);

	return 0;
}