Vous êtes sur la page 1sur 5

Université Hassan II

Faculté des Sciences Aïn Chock de Casablanca


Département Mathématiques & Informatique
SMA S5
Examen Final (Rattrapage) Durée : 1h30
informatique 5 Date : 30/01/2020

SOLUTION

Exercice 1 (5 points)

Donnez le résultat d’exécution des codes suivants

cout << setprecision(5) << 100.45678; cout << boolalpha << (5 < 6);

100.46 true
cout << Salam Casa; cout << setw(5) << setfill('0') << 100;

Erreur ! 00100
int X = -1;
int V = 0xF, W = 02; int Y = 1 + 2 * 3 / 4;
cout << V * --W; int Z = X * Y++;
cout << X << " " << Y << " " << Z;

15 -1 3 -2
int a = 2020, m = 1, j = 30;
cout << setfill('0') << setw(2) << j << '-';
cout << setfill('0') << setw(2) << m << '-' << a;

30-01-2020
char ch[10] = "Salam";
cout << strlen(ch) << endl;

5
cout << setfill('-') << setw(3) << '>' ;
cout << " X " << left << setfill('-') << setw(3) << '<';

--> X <--
int T[10] = {1,2,3,4,5,6,7,8,9,0};
int *q = T;
cout << *q - 2 << endl;

-1
1/5

www.al3abkari-pro.com
Exercice 2 (5 points)
Le code suivant permet de déclarer deux fonctions pour le calcul de la division et du modulo
de deux entiers. Ce code contient 10 erreurs. Donnez dans le tableau ci-dessous le numéro
de chaque ligne (contenant une erreur) ainsi que la correction de l’instruction.

1 include <iostream>
2 using namespace std;
3
4 float division(int x ; int y){
5 if (y != 0)
6 return x/y;
7 else
8 throw y;
9 }
10
11 int modulo(int x, int y){
12 if (y =! 0)
13 return x mod y;
14 else
15 throw 'Calcul du modulo impossible';
16 }
17
18 int main(){
19 try{
20 cout << modulo(17, 10); << " " << division(17, 20);
21 }catch(int z)
22 cerr << "Division sur 0 impossible !!!";
23 }catch(const char* msg){
24 cerr << msg;
25 }
26 return 9;
27 };

Numéro de ligne Instruction corrigée

1 #include <iostream>

4 float division(int x , int y){

12 if (y != 0)

13 return x % y;

15 throw "Calcul du modulo impossible";

21 }catch(int z){

20 cout << modulo(17, 10) << " " << division(17, 20);

26 return 0;

27 }

6 return (float)x/y;

2/5
www.al3abkari-pro.com
Exercice 3 (10 points)
Donnez le prototype et l’implémentation de toutes les méthodes de la classe Etudiant. Cette
classe possède quatre attributs privés :
1. Nom : chaine de caractères,
2. Prénom : chaine de caractères,
3. Age : entier,
4. Notes : Tableau composé de 34 valeurs réelles,

Aussi, cette classe possède les méthodes publiques suivantes :

• Un constructeur avec arguments (pour initialiser chacun des attributs de la classe


sauf les notes pour lesquelles des zéros seront affectés),
• Un constructeur par copie,
• Un Getter et un Setter pour chaque attributs (sauf les notes),
• Une méthode nommée « getNote » permettant de récupérer une note du tableau
des notes à une position donnée,
• Une méthode nommée « setNote » permettant de modifier une note du tableau
des notes à une position donnée,
• Surcharge de l’operateur d’affichage sur la sortie standard de la manière suivante :

Prénom Nom (Age)

Enfin, créez une fonction principale main pour créer une instante de la classe Etudiant
et de l’afficher.

Répondez à l’exercice 3 sur l’intercalaire

3/5

www.al3abkari-pro.com
#include<iostream>
#include<cstring>
using namespace std;
class Etudiant{
private:
char nom[30];
char prenom[30];
short age;
int notes[34];
public:
Etudiant(char *n, char *p, short a);
Etudiant(Etudiant &e);

char* getNom();
char* getPrenom();
short getAge();

void setNom(char *n);


void setPrenom(char *p);
void setAge(short a);

int getNote(int position);


void setNote(int position, int note);

void afficher();
};

Etudiant::Etudiant(char *n, char *p, short a){


strcpy(this->nom, n);
strcpy(this->prenom, p);
age = a;
for(int i = 0; i < 34; i++)
this->notes[i] = 0;
}

Etudiant::Etudiant(Etudiant &e){
strcpy(this->nom, e.nom);
strcpy(this->prenom, e.prenom);
this->age = e.age;
for(int i = 0; i < 34; i++)
this->notes[i] = e.notes[i];
}

char* Etudiant::getNom(){
return nom;
}

www.al3abkari-pro.com
char* Etudiant::getPrenom(){
return prenom;
}

short Etudiant::getAge(){
return age;
}

void Etudiant::setNom(char *n){


strcpy(this->nom, n);
}

void Etudiant::setPrenom(char *p){


strcpy(this->prenom, p);
}

void Etudiant::setAge(short a){


age = a;
}

int Etudiant::getNote(int position){


return this->notes[position];
}

void Etudiant::setNote(int position, int note){


this->notes[position] = note;
}

void Etudiant::afficher(){
cout << this->prenom << " " << this->nom << " (";
cout << this->age << ")" << endl;
for(int n : this->notes)
cout << n << '\t';
cout << endl;
}

int main(){
Etudiant e("ABBASSI", "Abbass", 19);
e.afficher();
}

www.al3abkari-pro.com

Vous aimerez peut-être aussi