• Aucun résultat trouvé

Directives et modèle de l’examen Intra (20 %) IFT 1166, été 2005

N/A
N/A
Protected

Academic year: 2022

Partager "Directives et modèle de l’examen Intra (20 %) IFT 1166, été 2005"

Copied!
1
0
0

Texte intégral

(1)

Directives et modèle de l’examen Intra (20 %)

IFT 1166, été 2005

Veuillez fermer, s’il y a lieu, votre cellulaire.

Directives pédagogiques:

Les matières vues

au mois de mai

( sections A+B : 4 semaines x 3 heures, sections L+M : 5 semaines x 2.5 heures = 12.50 heures) font partie de l’examen intra.

Malgré que la remise du TP2 aura lieu dimanche le 19 juin (après l’intra!), toutes les matières du TP2 seront demandées à l’intra. Il est préférable alors de passer à travers les questions du TP2 avant l’intra quitte à finaliser, polir le TP2 plus tard pour la remise.

Dates de l’examen intra :

sections A+B : jeudi le 02 juin durant l’heure de cours (11 :30 à 13 :30 au Z-317) sections L+M: mardi le 07 juin de 19:30 à 21:30 à la salle 15 après un cours « réduit » de 17 :30 à 19:00 suivi d’une pause de 30 minutes.

Si vous avez un motif sérieux, vous pouvez faire l’intra dans les sections que vous n’êtes pas inscrits à la condition de m’écrire, par courriel, une semaine avant la date de l’examen à passer : [email protected]

Toute documentation sur papier permise.

Ordinateurs personnels prohibés.

Calculatrice permise mais non nécessaire.

Veuillez répondre dans le cahier d’examen et remettre obligatoirement l’énoncé

Partie 1 : quelques nouveautés de C++ (total de 35 points) Partie 2 : quelques notions de la POO (total de 35 points)

Partie 3 : liste linéaire chaînée des personnes (total de 30 points)

Vous trouverez dans les pages suivantes un modèle pour l’examen intra. Ce modèle est aussi disponible au Calendrier du site Web de notre cours.

L’auxiliaire Rabah présentera une séance de révision reliée à la solution de ce modèle, jeudi le 26 mai, de 14:30 à 16:30, salle Z-200 (campus UDM). Mardi soir le 31 mai, de 20:00 à 22:00, à la salle # 15 du campus Longueuil, l’auxiliaire Wissam fera la même chose pour les

(2)

Partie 1 : quelques nouveautés de C++ (total de 35 points)

Question 1)

La fonction suivante, écrite en langage C, permet de vérifier et de retourner vrai (1) ou faux (0) selon que deux tableaux des entiers sont identiques (les deux contiennent le même nombre d’éléments et les éléments correspondants sont égaux) ou non.

int estIdentique(int tableau1[], int n1, int tableau2[], int n2) { int i;

if (n1 != n2) return 0;

else {

for (i = 0 ; i < n1 ; i++)

if ( tableau1[i] != tableau2[i] ) return 0;

return 1;

} }

Ré-écrivez la fonction estIdentique, en utilisant les nouveautés possibles du C++ et écrivez les instructions pour tester et afficher les résultats des tests des tableaux suivants :

age1 vs age2, age1 vs age3 où :

int age1[10] = { 50, 27, 62, 14, 58, 40 }, age2[15] = { 50, 27, 62, 14, 58, 40, 70 }, age3[10] = { 50, 72, 62, 14, 58, 40 };

et : sexe1 vs sexe2 où :

char sexe1[5] = { 'F', 'F', 'M', 'M', 'M' },

sexe2[7] = { 'F', 'F', 'M', 'M', 'M' };

(3)

Question 2)

Soit la fonction principale incomplète suivante : void main() {

char ville[20] = "laval";

int age[15] = { 5, 25, 12, 12, 25, 5 };

// à compléter : …….

}

La ville "laval" est symétrique car ville[0] == ville[4], ville[1] == ville[3].

Le tableau age est aussi symétrique car age[0] == age[5], age[1] == age[4], age[2] == age[3].

Écrivez une ou plusieurs fonctions (à votre jugement) et leurs appels pour tester la symétrie de la chaîne ville et du tableau age.

Question 3)

Pour la gestion la plus simple des immeubles à vendre (au maximum 25), un courtier doit avoir les informations suivantes reliées à chaque immeuble :

- année de construction (un entier, exemple 1989) - type de l'immeuble : un caractère

'P' : résidence privée 'C' : immeuble commercial 'A' : immeuble d'autre type

- prix évalué par la ville : un réel (exemple 123456.75 $) 1) Écrire les déclarations d'un tableau dynamique des immeubles;

2) Écrire :

a) seulement l’en-tête d’une fonction permettant de lire le fichier

"Im.txt", de remplir le tableau dynamique des immeubles,

de compter et transmettre par référence le nombre exact d’immeubles lus;

b) un appel (une utilisation) approprié de cette fonction.

3) Écrire une fonction permettant d'afficher un seul immeuble;

Écrire une autre fonction portant le même nom qui permet d'afficher tous les immeubles d’un type donné.

Quelle est la nouveauté de C++ vs C dans ces deux écritures ?

Quel genre de fonctions membres d'une classe qui utilisent souvent cette

(4)

Partie 2 : quelques notions de la POO (total de 35 points)

Question 2.1) : réaliser la partie d’implémentation de la classe :

class Rectangle { private :

int longueur, largeur;

public :

Rectangle(int = 5, int = 3);

Rectangle (const Rectangle&);

void afficher(char *);

// fonction constante!

int surface() const { return longueur * largeur ; } // surcharger l'opérateur < (plus petit selon la surface) bool operator < (const Rectangle & );

// surcharger l'opérateur l'addition. Pour cet exemple, la somme // de 2 rectangles est un rectangle avec la longueur qui est la // somme des 2 longueurs et la même chose pour la largeur Rectangle operator + (const Rectangle &);

// fonction amie

friend void afficher(const Rectangle & r, char * message) ;

// fonction amie permettant de surcharger l'opérateur * (produit de deux // rectangles selon la définition (pédagogique) semblable à l'addition friend Rectangle operator * (const Rectangle & r1,const Rectangle & r2) ; };

Question 2.2)

Supposons que vous disposez d’un tableau dynamique des rectangles (

rect

) qui contient exactement

nbRect

rectangles.

a) Supprimez le 3ième élément du tableau avant le tri sachant que nbRect > 3 b) Triez le tableau selon les surfaces de ses éléments

c) Supprimez le 2ième élément du tableau après le tri

(5)

Partie 3 : liste linéaire chaînée des personnes (total de 30 points)

En classe, on a déjà expliqué un exemple sur une liste linéaire chaînée des personnes (ListePers.cpp)::

const int LONG_NP = 30; // 30 caractères pour nom et prénom

class Personne { private:

string nomPre;

char sexe;

double taille, poids;

int numero;

public:

Personne(string nomPre, char sexe, double taille, double poids, int numero) { this->nomPre = nomPre;

this->sexe = sexe;

this->taille = taille;

this->poids = poids;

this->numero = numero;

}

Personne() { }

string getNomPre() { return nomPre; } char getSexe() { return sexe ; } void setSexe(char nouvSexe) {

sexe = nouvSexe;

}

void setTaille(double nouvTaille) { taille = nouvTaille;

}

void afficher() { . . .

} };

(6)

. . .

Pointeur liste ; . . .

Pour l’intra, on suppose qu’on a déjà lu un fichier, rempli la liste linéaire chaînée des personnes. Cette liste est nommée liste pour l’examen intra.

3.1) Écrivez une fonction permettant de compter et d’afficher : a) le nombre de femmes dans cette liste ;

b) le nombre d’hommes dans cette liste

3.2) Écrivez des fonctions et leurs appels afin de permuter les informations a) de la première .et de la deuxième personne

b) de la 6ième et 12ième personne

3.3) Écrivez des fonctions et leurs appels pour supprimer (s’il existe) : a) la personne ayant le numéro 4371

b) la personne ayant le numéro 2754

Bonne chance et bon succès!

Équipe du IFT 1166, été 2005

Références

Documents relatifs

Écrivez un constructeur de la classe Liste qui, à partir d’un tableau dynamique d’éléments, crée la liste contenant les mêmes éléments dans le même ordre.. Donnez un

Quel pourrait ˆ etre l’avantage de cette seconde mani` ere dans le contexte o` u on veut utiliser une m´ ethode de type quasi-Monte Carlo pour simuler le processus?... Dire aussi

• Vous pouvez donner des d´efinitions en extension d’une application (injective, surjec- tive ou bijective) dont le domaine est N et, dans ce cas, vous n’avez pas ` a

• que le mot de passe comporte au moins 6 caract` eres tels que d´ efinis ci-haut, dont au moins un chiffre, au moins une minuscule et au moins une majuscule. • que l’adresse

// fonction amie permettant de surcharger l'opérateur * (produit de deux // rectangles selon la définition (pédagogique) semblable à l'addition friend Rectangle operator *

un tableau, nommé nbEnfant, capable de mémoriser le nombre d’enfants (des entiers) un tableau, nommé nbVoiture, capable de mémoriser le nombre de voitures utilisées

Returns the index in this list of the first occurrence of the specified element, or -1 if the List does not contain this element. Retourner l’indice de la première occurence

Profitez les périodes de Consultation théorique (CT) et de Pratique Libre (P.L.) pour poser des questions (avec Youssef Zine, Rabah, Wissam, Youssef Kadri, Janice…)3. Un