Last active
December 1, 2015 12:35
-
-
Save Steffo99/8d7868f83fb75b78ea0f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <math.h> | |
using namespace std; | |
//Il prof suggeriva di fare input decimale | |
void printBin(int n, int cifre) | |
{ | |
///Scrivi 'cifre' cifre binarie del numero 'n' | |
bool binario[cifre]; //Array con tutte le cifre | |
//Inserisci le cifre all'interno dell'array | |
for(int i = 0; i < cifre; i++) | |
{ | |
binario[i] = n % 2; | |
n = n / 2; | |
} | |
//Scrivi le cifre all'interno dell'array binario | |
for(int i = cifre-1; i >= 0; i--) | |
{ | |
cout << binario[i] << ' '; | |
} | |
} | |
int main() | |
{ | |
//Numero di domande di ingresso | |
int l_question; | |
cout << "Quante domande di ingresso devono esserci?\n"; | |
cin >> l_question; | |
//Inserimento domande di input | |
string question[l_question]; | |
cout << "Inserisci le domande da fare all'utente (SENZA SPAZI, PER ORA).\n"; | |
for(int i = 0; i < l_question; i++) | |
{ | |
cout << "Domanda #" << i+1 << ": "; | |
cin >> question[i]; | |
} | |
//Numero di risposte di uscita | |
int l_answer; | |
cout << "Quante risposte in uscita devono esserci?\n"; | |
cin >> l_answer; | |
//Inserimento risposte di uscita. | |
string answer[l_answer][2]; | |
cout << "Inserisci le risposte da far avere all'utente; separa con uno spazio o un invio il caso falso dal caso vero.\n"; | |
for(int i = 0; i < l_answer; i++) | |
{ | |
cout << "Risposta #" << i+1 << ": "; | |
cin >> answer[i][0] >> answer[i][1]; | |
} | |
//Inserimento tabella di verità | |
bool elab[(int) pow(2, l_question)][l_answer]; | |
cout << "Inserisci le uscite corrispondenti alle entrate; separa con uno spazio le diverse uscite\n"; | |
for(int i = 0; i < pow(2, l_question); i++) | |
{ | |
printBin(i, l_question); | |
cout << (char) 0xBA << ' '; | |
for(int y = 0; y < l_answer; y++) | |
{ | |
cin >> elab[i][y]; | |
} | |
} | |
//Inizio programma | |
bool u[l_question]; | |
int dec = 0; | |
//Input dell'utente | |
for(int i = 0; i < l_question; i++) | |
{ | |
char user_input; | |
while(true) | |
{ | |
cout << question[i] << " (y / n) "; | |
cin >> user_input; | |
//Controlla che l'input sia una cosa possibile! | |
if(user_input == 'y') | |
{ | |
u[i] = true; | |
break; | |
} | |
else if(user_input == 'n') | |
{ | |
u[i] = false; | |
break; | |
} | |
} | |
} | |
//Calcolo del numero decimale corrispondente alle risposte. | |
for(int i = 0; i < l_question; i++) | |
{ | |
if(u[i] == true) | |
{ | |
dec += pow(2, i); | |
} | |
} | |
//Output delle risposte secondo la tabella della verità inserita in precedenza. | |
for(int i = 0; i < l_answer; i++) | |
{ | |
cout << answer[i][elab[dec][i]] << " | "; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment