IFT1969 TP3 Aut04
Date de remise : 15 décembre 22h30 (fermeture des laboratoires pour la session A04)
À remettre (une remise par équipe de 2 maximum) :
Code (numéro 1 et 2) et copie d'écran (numéro 1 seulement) en version papier et
électronique.
L’absence de remise électronique pour ce numéro, ou du code qui ne compile pas,
entraînera une pénalité de 20 points.
Ce travail compte pour 40% de la note des travaux pratiques.
Adressez toutes questions au sujet de ce travail à [email protected].ca
Retard : La remise étant à la fermeture des labos, aucun tp en retard ne sera accepté.
Numéro 1 : Matrices (10 pts)
Modifiez le programme matrices.c pour qu’il affiche un menu offrant différents
traitements sur des matrices.
1. Afficher le contenu d’une matrice.
2. Déterminer si une matrice est diagonale.
3. Déterminer si une matrice est tridiagonale.
4. Déterminer si une matrice est symétrique.
5. Effectuer la transposée d’une matrice.
6. Effectuer le produit matriciel de 2 matrices
0. Quitter le programme
Votre programme doit aussi déclarer 1 tableau additionnel de taille 5 X 5 et l’initialiser
comme suit :
C = 1 7 0 1
0 9 2 0
3 7 2 5
4 6 7 3
Une matrice A est diagonale si elle est carrée et que aij == 0 pour tout i != j.
Une matrice A est tridiagonale si elle est carrée et que aij == 0 pour tout |i-j|>= 2.
Une matrice A est symétrique si elle est carrée et que aij == aij pour tout i et j.
La matrice B de taille m x n est la transposée de A de taille n x m si bij == aij pour
tout 0 <= i < m et 0 <= j < n .
Le produit d’une matrice A de taille k x n et d’une matrice B de taille n x m est une
matrice C de taille k x mcij = ai0 * b0j +ai1 * b1j + ai2 * b2j + ... + ai n-1 * bn-1 j
pour tout 0 <= i < k et 0 <= j < m .
Écrivez des fonctions pour réaliser chacun des traitements demandés.
Au début du traitement, le programme doit afficher toutes les matrices déjà initialisées
(A, B, C et D) ensuite le menu.
Après le choix dans le menu votre programme demande d’identifier la matrice sur
laquelle l’usager désire effectuer le traitement et dans le cas de la transposée, quelle
matrice recevra le résultat .
Après chaque traitement d’un choix dans le menu, votre programme doit afficher le
résultat à l’écran dans un message significatif.
Ex :
La matrice B est symetrique.
Traitement demandé pour la remise de la partie 2.
Pour la remise, vous devez inclure l’affichage des résultats pour le traitement suivant :
Déterminez si les matrices A, B, C et D sont symétrique
Déterminez si les matrices A et B sont diagonales
Déterminez si les matrices A et D sont tridiagonales
Effectuez le traitement nécessaire pour qu’une matrice Res soit la transposée de D
et affichez ensuite la matrice Res.
Effectuez le traitement nécessaire pour que la matrice C soit sa propre transposée
et affichez le nouveau contenu de C
Effectuez le traitement nécessaire pour qu’une matrice Res soit le produit de
B par D et affichez ensuite la matrice Res.
Critères de correction du numéro 1
Bon fonctionnement ......................................................................... 3 points
Découpage du traitement en fonctions ............................................ 5 points
Présentation des résultats et lisibilité du programme ....................... 2 points
Numéro 2 : Chaînes de caractères, structures, tableaux de structures et liste chaînée (30 pts)
Pour ce numéro, vous devez faire la gestion d’un examen sur ordinateur. Pour vous
faciliter la tâche, nous allons vous diviser le traitement en 3 étapes.
Vous remettez, pour le numéro 2, un seul programme, dans un fichier que vous
nommerez examen.c, qui va combiner les 3 étapes.
-Étape 1 : Déclaration des structures de données, lecture des données et traitements de
base sur les structures de données.
-Étape 2 : Gestion du déroulement de l’examen pour plusieurs étudiants
-Étape 3 : Sauvegarde des résultats
Étape 1 : les données (10 points) :
Vous disposez de 2 fichiers de données : etudiants.txt et questions.txt.
Dans le fichier etudiants.txt, chaque ligne contient le code permanent d’un étudiant :
une chaîne de 12 caractères.
Ce fichier contient, au plus, 40 lignes
Dans le fichier questions.txt, l’information est disposée de la façon suivante :
la première ligne associée à une question contient l’énoncé (max : 256 caractères)
les 4 lignes suivantes contiennent les choix de réponses (max : 60 caractères)
la sixième ligne associée à une question contient l’indice de la bonne réponse, un
entier entre 0 et 3.
La ligne subséquente, s’il y a lieu, est le début d’une nouvelle question.
Ce fichier contient, au plus, 25 questions
Vous programme doit prévoir les traitements suivants:
1- Déclarer une structure nommée Etudiant qui contient les champs suivants :
codePerm : une chaîne de caractères de 12 caractères.
etatExam : un entier qui prend deux valeurs possibles :
o 1 pour indiquer que l’étudiant a passé son examen.
o 0 sinon.
note : un entier pour conserver la note de l’étudiant.
2- Déclarer une structure nommée Question qui contient les champs suivants :
enonce : une chaîne de caractères d’au maximum 256 caractères.
choix : un tableau de quatre chaînes de caractères. Chaque chaîne
d’au plus 60 caractères, représente une réponse possible à
la question.
indiceRep : un entier représentant l’indice (entre 0 et 3), dans le tableau
des choix de réponses, de la bonne réponse.
3 - Lire le fichier etudiants.txt et remplir un tableau de structures Etudiant en
initialisant codePerm avec les codes permanent lus, etatExam et note sont initialisés
à 0 .
4 - Trier le tableau de structures Etudiant, en ordre croissant de codePerm, en utilisant
l’algorithme de tri quicksort.
5 - Rechercher l’indice dans le tableau d’Etudiant trié, en utilisant l’algorithme de
recherche dichotomique, d’un Etudiant selon son code permanent. Si le code
permanent ne s’y trouve pas, l’indice retournée sera1.
6 Lire le fichier questions.txt et remplir un tableau de structures Question.
7 Afficher une Question selon le modèle qui suit :
Un polygone a huit cotes est un ?
a)hexagone
b)pentagone
c)octogone
d)machinegone
8 - Afficher la bonne réponse d’une Question.
9 Déterminer si un caractère ( entre ‘a’ et ‘d’) correspond au bon choix de réponse
d’une Question.
Comme il n’y a pas de fonction prédéfinie en C pour lire une ligne entière, contenant un
nombre indéterminé de caractères et de mots, dans un fichier, voici le code d’une
fonction qui vous permettra de lire une ligne entière :
char * lireLigne(FILE *aLire){
char temp[257];
char *ptr;
int n = 0;
while('\n' != (temp[n]=fgetc(aLire)))
n++;
temp[n]='\0';
ptr = (char*)malloc(strlen(temp)+1);
strcpy(ptr,temp);
return ptr;
}
exemple d’utilisation de lireLigne :
char ligne[257];
FILE *aLire= ...;
...
strcpy(ligne,lireLigne(aLire));
barème du numéro 2, étape 1
Déclarations ..................................................................................... 3 points
Lecture des fichiers et remplissage des tableaux ............................ 2 points
Affichage de question ....................................................................... 1 point
Affichage de la bonne réponse ......................................................... 1 point
Déterminer si c’est la bonne réponse ................................................ 1 point
Découpage du traitement en fonctions et présentation .................... 2 points
Étape 2 : Gestion d’un examen (12 pts)
Tant qu’il y a des étudiants qui désirent passer l’examen vous devez :
1. Demander à l’étudiant de s’identifier en entrant au clavier son code
permanent.
2. Vérifier que l’étudiant se trouve bien dans le tableau des étudiants. si ce
n’est pas le cas, on affiche un message approprié et on passe au à
l’étudiant suivant.
3. Si l’étape précédente est un succès, vérifier si l’étudiant a déjà passé son
examen. Si c’est le cas, afficher le message approprié et passer à
l’étudiant suivant.
4. Si l’étudiant n’a pas encore passé l’examen, commencer le test en
affichant chacune des questions, et attendre la réponse de l’étudiant , qui
doit saisir un caractère (a,b,c ou d) pour chacune de ses réponses . Vous
devez évidemment évaluer chacune de ses réponses pour calculer la note
( 1 point par question) qu’il mérite pour cet examen.
5. Chaque étudiant doit répondre à, au plus, 10 questions.
De plus , pour chaque réponse saisie par l’étudiant , vous devez :
Afficher le message "Bonne reponse" si sa réponse est correcte.
Afficher le message "Reponse erronee" puis afficher la bonne
réponse , sinon.
6. Afficher son résultat sur 10.
7. mettre à jour les informations de notre étudiant candidat (Lui attribuer une
note et changer son état de l’examen pour 1), à la fin de son examen
8. demander si un autre étudiant veut passer l’examen
Le premier étudiant débute l’examen à la première question (indice 0 du tableau des
Question).
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !