• Aucun résultat trouvé

Evaluation n°2 Structures, tableaux, classes, objets

N/A
N/A
Protected

Academic year: 2022

Partager "Evaluation n°2 Structures, tableaux, classes, objets"

Copied!
5
0
0

Texte intégral

(1)

Evaluation n°2

Structures, tableaux, classes, objets

Nom : Prénom :

Un intervalle est soit vide, soit défini par deux bornes inf et sup qui, dans le contexte de cet exercice, sont des valeurs entières. Par convention, tout intervalle ayant une borne inf plus grande que sa borne sup sera considéré comme vide.

Complétez les déclarations et définitions suivantes permettant de gérer des intervalles en langage C.

Déclarez ici la structure intervalle.

Donnez ici la définition complète d'une fonction min acceptent deux entiers en paramètres et retournant le plus petit des deux.

void printIntervalle(intervalle* w) {

}

Affiche un intervalle sous la forme [min,max] ou [] si l'in- tervalle est vide.

int testIntersect(intervalle* a, intervalle* b) {

} Retourne vrai si l'inter-

section des deux inter- valles n'est pas vide, faux sinon.

Réalisez un code concis en utilisant la fonction min définie précédemment et une fonction max dont on supposera l'existence.

Stru ctur es

(2)

Vous devez maintenant réaliser une classe Intervalle en langage C++ avec les mêmes fonction- nalités que celles décrites précédemment. Seuls la déclaration de la classe et les codes complets du constructeur et de la méthode d'affichage sont demandés.

void testIntervalle() {

}

Écrivez ici le code per- mettant de créer les intervalles [1,3], [2,4], et [5,6], de les affi- cher, et d'afficher leurs intersections.

intervalle intersection(intervalle* a, intervalle* b) {

} Retourne l'intervalle (

éventuellement vide ) résultat de l'intersec- tion de deux intervalles.

Utilise la fonction tes- tIntersect présentée pré- cédemment.

class Intervalle {

private:

public:

};

Variables d'instance

Constructeur

Affichage

Test d'intersection

Calcul d'intersection

Stru ctur es

Clas ses

(3)

Définition complète de la méthode d'affichage d'un intervalle.

Définition complète du construc- teur de la classe Intervalle

On déclare de la manière suivante une classe ListeInter représentant une liste d'interval- les. Complétez les définitions demandées.

class ListeInter {

private:

Intervalle* tab;

int n;

int capacite;

public:

ListeInter(int capa);

void add(Intervalle i);

void retireVides();

};

n est le nombre d'intervalles actuellement enregis- trés dans la liste et capacite est le nombre maximum d'intervalles pouvant y être stockés.

Le constructeur crée une liste vide, mais ayant une capacité de stockage précisée en paramètre.

La méthode add ajoute un intervalle à la liste. La méthode retireVides retire de la liste tous les intervalles vides.

ListeInter::ListeInter(int capa) {

}

void ListeInter::retireVides() {

} Adoptez un algorithme

simple et efficace, de complexité en temps linéaire, qui peut mo- difier l'ordre des in- tervalles restants dans la liste.

Clas ses

Clas ses

Tabl eaux 1D

(4)

class Damier {

private:

char** tab;

int n;

public:

Damier(int n);

void random();

void print();

};

Définition complète de la fonction initListeInter Déclaration de la structure

listeInter

Vous devez à présent définir en langage C une structure listeInter et implanter deux fonc- tions initListeInter et retireVides qui remplissent les rôles respectifs du constructeur et de la méthode retireVide de la version C++.

Permet l'accès à un tableau à deux dimensions de caractères. Une cellule contenant une reine a la valeur 1, sinon elle a la valeur 0.

Définition complète de la fonction retireVide.

Le problème des reines consiste à placer n reines sur un damier de n par n de manière à ce que chaque ligne, chaque diagonale et chaque colonne ne contienne pas plus d'une reine.

Lorsque deux reines sont sur une même ligne, colonne ou diagonale, on dit qu'elles sont en conflit. Une classe Damier est définie de la manière suivante.

Le constructeur crée le tableau 2D représentant le damier vide. Les cellules du tableau doivent donc être initialisées à 0.

random place n reines au hasard sur le damier.

print affiche le damier en représentant les reines par le caractère 'O' et les cases vides par le caractère '-'.

Stru ctur es

Tabl eaux 1D

(5)

Damier::Damier(int n) {

}

Crée et initialise à 0 un damier de n par n.

Complétez les définitions des méthodes indiquées.

Remet le damier à 0 puis place n reines aléatoirement dans des cases distinctes.

Pour mémoire, rand()

% n retourne un entier aléatoire compris en- tre 0 et n-1 inclus.

void Damier::random() {

}

Clas ses Tabl eaux 2D

void Damier::print() {

}

Affiche le damier sous forme de caractères.

Références

Documents relatifs

Réalisez une fonction int f0(int x)qui retourne un Booléen ayant la valeur vrai si et seulement si les 4 bits de poids faibles de la représentation binaire de x sont tous à 0..

Vous devez ensuite réaliser une fonction main() qui crée des éléments contenant les chaînes. «aaa», «bbb», «ccc», qui les ajoute à un ensemble initialement vide, puis qui

Réalisez une fonction int getPar(char t[], char p[] int n) qui place dans le tableau p toutes les valeurs paires conte- nues dans le tableau t, qui est supposé être de longueur n,

Cette fonction devra utiliser une fonction int nbJours(int mois) qui retourne le nombre de jours dans un mois donné (1 pour janvier, 2 pour février…) d'une année non bissextile,

Point p2=p1 ; // constructeur de recopie : création de l’objet p2 // et son initialisation avec les données de p1.. Attention : il faut différencier entre recopie et

Au total, on a 10 tableaux à déclarer, à écrire sur les en-têtes des fonctions et des appels. Avec le type structure, il est possible d'utiliser un seul tableau :

Toutes les extensions actuellement connues de la th6orie des fonctions presque-p6riodiques de BonR se rattachent s la d6finition de ces fonetions donn6es par

I1 serait aisg de faire des vdrifieations analogues pour les fonctions m~mes considdrdes par ROSESHAIS; mais il y aurait surtout intdr~t h prendre cette question