Skip to content

Instantly share code, notes, and snippets.

@Steffo99
Last active December 1, 2015 12:35
Show Gist options
  • Save Steffo99/8d7868f83fb75b78ea0f to your computer and use it in GitHub Desktop.
Save Steffo99/8d7868f83fb75b78ea0f to your computer and use it in GitHub Desktop.
#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