/*--------------------------------------------------*/
/**** Correction Quizz, version LG 24/09/2004 ****/
/*-------------------------------------------------*/

/* Remarque : les fonctions ne donnent pas les réponses aux questions, */
/* mais elles demandent une réponse à l'utilisateur, et retournent VRAI */
/* si c'est la bonne réponse, FAUX sinon. */

#include<stdio.h>

/* Booléens VRAI et FAUX */
#define VRAI  1
#define FAUX  0

/* nombre de questions maximum */
#define NB_QUES 6

/*-----------------------------*/
/**** Fonctions "questions" ****/
/*-----------------------------*/

/* Fonction qui correspond à la question "Sont-ils dans l'ordre
   croissant ?*/  
int ordre_croissant(int a, int b, int c)
{
  int res=FAUX;
  int rep;
  printf("\n Sont-ils dans l'ordre croissant ?\n");
  scanf("%d",&rep);

  if (a<=b && b<=c)
   {
      if (rep==1) 
	{
	  res = VRAI;
	}
    }
  else
    {
      if (rep==0) 
	{
	res = VRAI;
	}
    };
  return res;
}

/* Fonction qui correspond à la question "Sont-ils tous impairs ?" */ 
int tous_impairs(int a, int b, int c)
{
  int res=FAUX;
  int rep;
  printf("\n Sont-ils tous impairs ?\n");
  scanf("%d",&rep);
  
  if ((a%2==1) && (b%2==1) && (c%2==1))
   {
      if (rep==1) {res = VRAI;}
    }
  else
    {
      if (rep==0) {res = VRAI;}
    };
  return res;
}

/* Fonction qui correspond à la question "Sont ils tous egaux ?" */  
int egaux(int a, int b, int c)
{
  int res=FAUX;
  int rep;
  printf("\n Sont-ils tous egaux ?\n");
  scanf("%d",&rep);

  if ((a==b) && (b==c))
    {
      if (rep==1) {res = VRAI;}
    }
  else
    {
      if (rep==0) {res = VRAI;}
    };
  return res;
}

/* Fonction qui correspond à la question "Sont-ils tous distincts ?" */  
int distincts(int a, int b, int c)
{
  int res=FAUX;
  int rep;
  printf("\n Sont-ils tous distincts ?\n");
  scanf("%d",&rep);

  if ((a!=b) && (b!=c) && (a!=c))
    {
      if (rep==1) {res = VRAI;}
    }
  else
    {
      if (rep==0) {res = VRAI;}
    };
  return res;
}

/* Fonction qui correspond à la question "L'un des trois est-il plus
   grand que la somme des deux autres ?" */
int somme(int a, int b, int c)
{
  int res=FAUX;
  int rep;
  printf("\n L'un est il la somme des 2 autres ?\n");
  scanf("%d",&rep);
  
  if ((a>b+c) || (b>c+a) || (c>a+b))
    {
      if (rep==1) {res = VRAI;}
    }
  else
    {
      if (rep==0) {res = VRAI;}
    };
  return res;
}

/*Question "est-ce que le triangle est rectangle" ?*/
int rectangle(int a, int b, int c)
{
  int res=FAUX;
  int rep;
    printf("\n Triangle rectangle ?\n");
  scanf("%d",&rep);

  if ((a*a==b*b+c*c) || (b*b==c*c+a*a) || (c*c==b*b+a*a))
    {
      if (rep==1) {res = VRAI;}
    }
  else
    {
      if (rep==0) {res = VRAI;}
    };
  return res;
} 

/*Fonction qui dispatche les questions suivant le numero*/
int reponse_question(int i,int x,int y,int z)
{
  int res;
  if (i==1) 
    {
      res = ordre_croissant(x,y,z);
    }
  else
    {
      if (i==2)
	{
	  res = tous_impairs(x,y,z);
	}
      else
	{
	  if (i==3)
	    {
	      res = egaux(x,y,z);
	    }
	  else
	    {
	      if (i==4)
		{
		  res = distincts(x,y,z);
		}
	      else
		{
		  if (i==5)
		    {
		      res = somme(x,y,z);
		    }
		  else
		    {
		      if (i==6)
			{
			  res = rectangle(x,y,z);
			}
		      else
			{/*cas qui ne doit pas arriver*/
			  res = -1;
			}
		    }
		}
	    }
	}
    }
  return res;
}

/*-----------------------------*/
/****     Fonction main     ****/
/*-----------------------------*/

int main()
{
  /* Déclaration des variables */
  int continuer ;
  int cont;
  int x,y,z;
  int score,numeroi;
  int res;

  /* Lecture des entiers */
  printf("Donnez vos 3 entiers\n");
  scanf("%d %d %d",&x,&y,&z);
  
  /* Gestion du questionnaire */
  continuer = VRAI;
  score = 0;
  numeroi = 1;
  printf("Repondez 1 pour oui, 0 pour non\n");

  while (continuer && numeroi<=NB_QUES)
    {
      res = reponse_question(numeroi,x,y,z);
      if (res) /*remarquer res et pas res == VRAI*/
	{
	printf("Bonne reponse !\n");
	score = score+1;
	}
      else
	{
	  printf("Faux !\n");
	};
      
      printf("Voulez vous continuer (1 pour oui, 0 pour non)?\n");
      scanf("%d",&cont);
      if (cont == 0) {continuer = FAUX;};
      numeroi = numeroi+1;
    }

  /* Affichage du résultat */
  printf("Vous avez %d bonnes reponses sur %d questions\n",score,numeroi-1);
  return 0;
}
/* Remarque : la question "voulez vous continuer" est posée même si on
   vient de faire la derniere question. Comment modifier le programme
   pour que ce ne soit pas le cas ? */

