Exercice langage C programme permettant de gérer des fichiers de QCM

Il s’agit de faire un programme permettant de gérer des fichiers de QCM. Un qcm sera représenté par une :

structure du type :

typedef truct qcm {

int numquest;

char quest[256];

char rep1[256];

char rep2[256];

char rep3[256];

char rep4[256];

int solrep;

} TQCM;

Où numquest est le numéro de la question, quest est la chaine de caractère représentant la question,  rep1 à rep 4 les 4 réponses possibles.

solrep est le numéro de la seule solution à la question

Le programme permet de passer en mode administrateur pour générer des fichiers de qcm, ou en mode utilisateur pour utiliser les qcm. Ces deux modes font l’objet de deux parties différentes. Il est conseillé de commencer par la partie administrateur. Le code de la fonction main vous est donné ci-dessous :

int main (void)

{

char calu;

do { printf("(a) mode administrateur,\n(b) mode utilisateur,\n");

printf("(c) quitter,\nvotre choix : ");

scanf(" %c", &calu);

switch(calu)

{ case 'a': gestion_admin();

calu = 'c';

break;

case 'b': gestion_util();

calu = 'c';

break;

case 'c': printf("fin du programme \n\n");

break;

default : printf("\nmauvaise saisie recommencer !!\n");

}

} while( calu !='c');

return 0;

}

1) Faire une fonction de prototype TQCM tsaisie_quest(void) qui permet de saisir au clavier le numéro de la question, le libellé de la question, les 4 réponses possibles, le numéro de la réponse solution.

Nota : vous utiliserez de préférence la fonction fgets(char *ligne, 255, stdin) qui permet la lecture au clavier d’une chaine de caractères jusqu’au retour chariot. En cas de problème vous utiliserez la fonction scanf(« %s », char *ligne)  en remplaçant les espaces par les caractères ‘_’.

2) Faire une fonction de prototype  void fenr_quest(TQCM *Q, FILE * fq) qui permet d’enregistrer la structure Q, passée en paramètre dans le fichier fq ouvert préalablement en écriture en fin de fichier.

La correction exercice C/C++ (voir page 2 en bas)

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *