menu.cpp
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "menu.h"
int Menu::est_dans(char c, char * s)
{
int n = strlen(s) ;
for(int i=0 ; i<n ; i++)
{
if(c==s[i])
return i ;
}
return -1 ;
}
Menu::Menu(char * n, int t, char * * c, char * a)
{
int s = strlen(n) ;
nom = new char [s+1] ;
strcpy(nom, n) ;
taille = t ;
composants = new char * [t] ;
for(int i=0 ; i<t ; i++)
{
s = strlen(c[i]) ;
composants[i] = new char [s+1] ;
strcpy(composants[i],c[i]) ;
}
s = strlen(a) ;
acces = new char [s+1] ;
strcpy(acces, a) ;
}
Menu::~Menu()
{
delete [] nom ;
delete [] composants ;
delete [] acces ;
}
void Menu::Affiche()
{
printf("\n \t \t*** %s ***\n \n", nom) ;
for(int i=0 ; i<taille ; i++)
printf("\t [%c] : %s \n", acces[i], composants[i]) ;
printf("\n Votre choix ? \n") ;
}
int Menu::Reponse()
{
char * format = new char(2*taille+3) ;
strcpy(format, "%[") ;
strcat (format, acces) ;
unsigned int i;
for ( i=0 ; i<strlen(acces) ; i++)
acces[i]=tolower(acces[i]) ;
strcat (format,acces) ;
strcat (format,"]") ;
for (i=0 ; i<strlen(acces) ; i++)
acces[i]=toupper(acces[i]) ;
char rep ;
do
{
scanf(format, &rep) ;
fflush(stdin) ;
rep=toupper(rep) ;
}
while (est_dans(rep, acces)==-1) ;
return (est_dans(rep, acces)) ;
}