Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Séries Exos Python

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

Séries d’exercice – PYTHON

Exercice 0
Une boutique propose à ces clients, une réduction de 15% pour les montants d’achat supérieurs à 200 dh.
Écrire un programme Python permettant de saisir le prix total HT et de calculer le montant TTC en prenant en
compte la réduction et la TVA=20%.

Exercice 1
Ecrire un programme qui permet de saisir un nombre puis déterminer s’il appartient à un intervalle donné,
sachant que les extrémités de l’intervalle sont fixées par l’utilisateur.

Exercice 2
Ecrire un programme qui demande deux nombres à l’utilisateur et l’informe ensuite si leur produit est négatif
ou positif. Attention toutefois on ne doit pas calculer le produit des deux nombres.

Exercice 3
Ecrire un programme qui permet de calculer le montant des heures supplémentaires d’un employé,
sachant le prix unitaire d’une heure, selon le barème suivant :
 Les 39 premières heures sans supplément,
 De la 40ième à la 44ième heure sont majorées de 50%,
 De la 45ième à la 49ième heure sont majorées de 75%,
 De la 50ième heure ou plus, sont majorées de 100%.

Exercice 4
Ecrivez un programme qui lira au clavier l’heure et les minutes, et il affichera l’heure qu’il sera une
minute plus tard.
Par exemple, si l'utilisateur tape 21 puis 32, le programme doit répondre : "Dans une minute, il sera
21 heure(s) 33".
NB : on suppose que l'utilisateur entre une heure valide. Pas besoin donc de la vérifier.

Exercice 5
Ecrire un programme qui à partir d’une note affiche la mention correspondante ?

Exercice 6
Ecrire un programme qui permet de saisir un entier N et d'afficher s'il est premier ou non. Un nombre
est dit premier s'il est divisible uniquement par 1 et par lui-même.

Exercice 7
Ecrire programme permettant de lire un nombre entier N puis calcule son factoriel.
 N !=1*2*3*. .. *(n-1)*N
 0 !=1
En utilisant les boucles suivantes
1. while
2. for

Exercice 8
Ecrire un programme qui permet de calculer la moyenne de notes fournies au clavier avec un dialogue de ce
type :
 note 1 : 12
 note 2 : 15.25
 note 3 : 13.5
 note 4 : 8.75
 note 5 : -1
 moyenne de ces 4 notes : 12.37
Le nombre des notes n"est pas connu a priori et l"utilisateur peut en fournir autant qu"il le désire. Pour signaler
qu"il a terminé, on convient qu"il fournira une note fictive négative. Celle-ci ne devra naturellement pas être
prise en compte dans le calcul de la moyenne.
Exercice 9
Ecrire un programme qui demande à l'utilisateur un nombre compris entre 1 et 3 jusqu'à ce que la réponse
convienne.

Exercice 10
Ecrire un programme qui demande un nombre compris entre 10 et 20, jusqu'à ce que la réponse convienne.
En cas de réponse supérieure à 20, on fera apparaître un message : "Plus petit ! ", et inversement, " Plus
grand !" si le nombre est inférieur à 10.

SUITES - PYTHON
Exercice 1
On se propose de calculer une valeur approchée de la constante K de Catalan en utilisant la formule suivante :

Ecrire une fonction val_app(epsilon) qui permet de retourner une valeur approchée de la constante K en
utilisant la formule ci-dessus et en s’arrêtant dès que la valeur absolue de la différence entre deux somme
successives devienne inférieure ou égale à une erreur epsilon donnée en paramètre.

Exercice 2
Soit la formule suivante qui permet de déterminer une valeur approchée de cos(x) :

Ecrire une fonction Calcul_cos(x)qui permet de :


 Saisir un réel x appartenant à l’intervalle [-1, 1],
 Calculer et afficher une valeur approchée de cos(x) en utilisant la formule donnée ci-dessus. Le
calcul s’arrête lorsque la différence entre deux termes consécutifs devient inférieure à 10-4.
print(Calcul_cos(0.5))

Exercice 3
Soit la suite U définie par :
 U0 est un entier positif pris au hasard (avec 3 < U0<40 )
 Un=Un-1/2 si Un-1 est pair, sinon Un=3*Un-1+1 (n>0)
Cette suite aboutit au cycle redondant formé par les trois termes 4,2,1 à partir d’un certain rang.
Exemple
 Pour U0=3
 U1=10. U2=5. U3=16. U4=8. U5=4 U6=2. U7=1. U8=4. U9=2 U10=1,
Donc la suite U entre dans le cycle redondant 4,2,1 à partir du 6ème terme(rang=6)
Ecrire une fonction permettant de déterminer le rang à partir du quel la suite U aboutit au cycle
redondant 4, 2 et 1

Exercice 4
Ecrivez un programme permettant de calculer la limite à epsilon près de la suite définie par la relation
de récurrence :
 U0 =2
 Un+1= Un + 2/Un , n>0.
On arrête d’itérer quand l’intervalle entre 2 termes consécutifs devient strictement inférieur à epsilon.

Exercice 5
Ecrivez un programme Python permettant de calculer la nième terme de la suite définie par :
 F0=1, F1=2
 Fn=4 *Fn-1 + 3*Fn-2 (n >=2 )

Exercice 6
La suite de Fibonacci est définie comme suit :

Ecrire une fonction récursive calculant Fib(n)


Solution :

Exercice 7
Soit la suite définie par :

Ecrire une fonction récursive permettant de calculer le nième terme de la suite.

Exercice 8
Soient u et v les deux suites définies par :

Ecrire deux fonctions CalculerU(a,b,n) et CalculerV(a,b,n) pour calculer respectivement les deux
termes Un et Vn des deux suites.

Programmation Orientée Objet


Exercice 1
Problème ! Étant donné les poids et les valeurs de n articles, nous devons mettre ces articles dans un sac à dos de
capacité C pour obtenir la valeur totale maximale dans le sac à dos.

Une solution naive consisterait à essayer tous les sous-ensembles possibles avec des fractions différentes, mais cela
prendrait trop de temps.

Une solution efficace consiste à utiliser l'approche gloutonne. L'idée de l'approche gloutonne est de calculer le rapport
valeur/poids pour chaque article et de trier les articles sur la base de ce rapport. Ensuite, prenez l’élément avec le
rapport le plus élevé et ajoutez-le jusqu’à ce que nous ne puissions plus ajouter l’élément suivant dans son intégralité et
à la fin, ajoutez-le autant que possible. Qui restera toujours la solution optimale à ce problème.

Exercice 2 : classe Rectangle


Écrire en Python une classe « Rectangle » ayant deux variables « a » et « b » et une fonction
membre « surface () » qui retournera la surface du rectangle.
Exercice 3 : classe Somme
Écrire en Python une classe « Somme » ayant deux variables « n1 » et « n2 » et une fonction
membre « som() » qui calcule la somme. Dans la méthode principale main demandez à l’utilisateur
d’entrer deux entiers et passez-les au constructeur par défaut de la classe « Somme » et afficher le
résultat de l’addition des deux nombres.

Exercice 4 : classe Etudiant


Écrire classe Python appelée « Etudiant » avec les membres suivant :
nom : (de type char),
note1, note2 : (de type float)
calc_moy() : calcule la note moyenne.
afficher () : affiche le nom et la note moyenne.
Le programme principal (main) demande à l’utilisateur d’entrer le nom et les notes d'un étudiant. et
affiche leur nom et la note moyenne.

Exercice 5 : classe point


Réaliser en Python une classe point permettant de manipuler un point d'un plan.on prévoira :
1) un point est définit par ses coordonnées x et y (des membres privés)
2) les constructeurs
3) une fonction membre déplace effectuant une translation définie par ses deux arguments dx et dy
(double)
4) une fonction membre affiche se contentant d'afficher les coordonnées cartésiennes du point.
5) une fonction membre saisir se contentant de saisir les coordonnées cartésiennes du point.
6) une fonction membre distance effectuant calculant la distance entre deux point.
7) une fonction membre milieu donnant le milieu d'un segment.
8) un petit programme d'essai (main) gérant la classe point.

Exercice 6 : classe Compte


Écrire un programme en Python qui simule la gestion d’un simple compte bancaire. Le compte est
créé avec un solde initial. Il est possible de déposer et de retirer des fonds, d’ajouter des intérêts et
de connaître le solde actuel. Cela devrait être implémenté dans une classe nommée Account qui
comprend:
1) Un constructeur par défaut qui met le solde initial à zéro.
2) Un constructeur qui accepte une balance initial comme paramètre.
3) Une fonction getBalance qui renvoie le solde actuel.
4) Une méthode deposer pour déposer un montant spécifié.
5) Une méthode retirer pour retirer un montant spécifié.
6) Une méthode ajouter_Interet pour ajouter de l’intérêt au compte.
La méthode ajouter_Interet prend le taux d’intérêt comme paramètre et modifie le solde du compte
en solde * (1 + taux d’intérêt).

Exercice 7 : classe temps


Créer en Python une classe appelée Temps, qui a des membres de type int tels que heures, minutes
et secondes.(rendez-les private)
1) Un constructeur doit initialiser ces données à 0
2) Un autre constructeur devrait l’initialiser à des valeurs fixes.
3) Une fonction membre devrait l’afficher, au format 17h 59min 59s.
4) Une autre fonction pour renvoyer les données de chaque membre nommez-les getheurs, getMin
et getSec
5) Une fonction membre doit ajouter deux objets de type Temps passé en arguments.

Exercice 8 : Classe rectangle

Écrire en Python un programme utilisant une classe rectangle dont le constructeur prend deux
paramètres, largeur et hauteur et qui offre les fonctions suivantes :

1) calcul du périmètre
2) calcul de la surface
3) affichage
ainsi que les accesseurs et mutateurs triviaux (lecture et modification de la largeur et de la hauteur).

Exercice 9 :
1. Définissez ci-dessous une classe Etudiant dont les attributs
sont : nom, prenom, note_nsi, note_maths et note_phy.
Puis créez une méthode spéciale **str (self) qui permettra d'afficher 'NOM Prenom a obtenu note_nsi
en NSI, note_maths en Mathématiques et note_phy en Physique' en tapant print(E) où E est une
instance de la classe Etudiant .

2. Tapez ci-dessous le code permettant de créer les instances E1, E2, E3 et E4 qui représentent
l'étudiant SARR Junior qui a eu 18 en NSI, 18 en Maths et 15 en Physique, l'étudiant FUSIL Morgan
qui a eu 17 en NSI, 15 en Maths et 16 en Physique, l'étudiant BEYA Noa qui a eu 14 en NSI, 19 en
Maths et 18 en Physique et l'étudiant BONNET Anne qui a eu 5 en NSI, 7 en Maths et 9 en
Physique.
Puis faites afficher ces instances à l'aide de la méthode spéciale **str (self)** créée juste avant.

3. Ci-dessus, en dessous de la méthode **init(self), écrivez une méthode moyenne(self)** qui permet de calculer
la moyenne des 3 notes d'un étudiant.
Puis exécutez les tests qui doivent passer sans erreur si le code est correct.

4. Ci-dessus, en dessous de la méthode moyenne(self), écrivez une méthode spéciale **lt (self,other)** qui permet
de comparer 2 étudiants en fonction de leur moyenne.
Ainsi etudiant1 < etudiant2 renverra True si la moyenne de l'étudiant 1 est strictement inférieure à celle de l'étudiant
2.
Puis exécutez les tests qui doivent passer sans erreur si le code est correct.

Exercice 10 : L’héritage

Écrivez un programme en Python qui définit une classe appelée Forme avec un constructeur qui
donne de la valeur à la largeur(x) et à la hauteur(y). Définir la méthode aire() dans les deux sous-
classes Triangle et Rectangle, qui calculent l’aire. Dans la méthode principale main, définissez deux
variables, un triangle et un rectangle, puis appelez la fonction aire() dans ces deux variables.

Notez que :

L’aire du triangle est = largeur * hauteur / 2

L’aire du rectangle est = largeur * hauteur.

Exercice 11 : Classe rectangle


Ecrire une classe Rectangle en langage Python, permettant de construire un rectangle dotée
d'attributs longueur et largeur.
2) Créer une méthode Perimetre() permettant de calculer le périmètre du rectangle et une méthode
Surface() permettant de calculer la surface du rectangle
3) Créer les getters et setters.
4) Créer une classe fille Parallelepipede héritant de la classe Rectangle et dotée en plus d'un attribut
hauteur et d'une autre méthode Volume() permettant de calculer le volume du Parallélépipède.

Exercice 12 : Compte bancaire

1) Créer une classe Python nommée CompteBancaire qui représente un compte bancaire, ayant
pour attributs : numeroCompte (type numérique ) , nom (nom du propriétaire du compte du type
chaine), solde.
2) Créer un constructeur ayant comme paramètres : numeroCompte, nom, solde.
3) Créer une méthode Versement() qui gère les versements.
4) Créer une méthode Retrait() qui gère les retraits.
5) Créer une méthode Agios() permettant d'appliquer les agios à un pourcentage de 5 % du solde
6) Créer une méthode afficher() permettant d’afficher les détails sur le compte
7) Donner le code complet de la classe CompteBancaire.
Exercice 13 : Classe Cercle

1) Définir une classe Cercle permettant de créer un cercle C(O,r) de centre O(a,b) et de rayon r à
l'aide du constructeur :
2) Définir une méthode Surface() de la classe qui permet de calculer la surface du cercle
3) Définir une méthode Perimetre() de la classe qui permet de calculer le périmètre du cercle
4) Définir une méthode testAppartenance() de la classe qui permet de tester si un point A(x,y)
appartient ou non au cercle C(O,r).

Exercice 14 : Calcul arithmétique

1) Créer une classe Calcul ayant un constructeur par défaut (sans paramètres) permettant d’effectuer
différents calculs sur les nombres entiers.
2) Créer au sein de la classe Calcul une méthode nommée Factorielle() qui permet de calculer le
factorielle d'un entier. Tester la méthode en faisant une instanciation sur la classe.
3) Créer au sein de la classe Calcul une méthode nommée Somme() permettant de calculer
la somme des n premiers entiers: 1 + 2 + 3 + .. + n. Tester la méthode.
4) Créer au sein de la classe Calcul une méthode nommée testPrim() permettant de tester
la primalité d'un entier donné. Tester la méthode.
5) Créer au sein de la classe Calcul une méthode nommée testPrims() permettant de tester si deux
nombres sont premier entre eux.

6) Créer une méthode tableMult() qui crée et affiche la table de multiplication d'un entier donné.
Créer ensuite une méthode allTablesMult() permettant d'afficher toutes les tables de multiplications
des entiers 1, 2, 3, ..., 9.
7) Créer une méthode listDiv() qui récupère tous les diviseurs d'un entier donné sur une liste Ldiv.
Créer une autre méthode listDivPrim() qui récupère tous les diviseurs premiers d'un entier donné.

Exercice 13

Coder une classe myString permettant de doter les chaines de caractères des
méthodes append() et pop() faisant les mêmes opérations que celles des listes. Exemple si on
crée des chaines via l'instanciation s1 = myString("Hello") et s2 = "bonjour", et on lui applique les
méthodes :
print(s1.append(" world !")) # affiche 'Hello world !'
print(s2.pop(2)) # affiche 'bojour'.

Solution :

class myString:
def init (self,s):
self.s = s
def append(self,x):
self.s = self.s + x
return self.s

def pop(self,i):
s1 = self.s[0:i]
s2 = self.s[i+1:len(self.s)]
return s1+s2
def modifier(self,i):
pass

# Tester la classe
S = myString("hello")
print(S.pop(1)) # affiche 'hllo'
print(S.append(" world !")) # affiche 'hello world !'

Exercice 14
1. Définir une classe Book avec les attributs suivants : Titre, Auteur (Nom complet), Prix.
2. Définir un constructeur ayant comme attributs: Titre, Auteur, Prix.
3. Définir la méthode View() pour afficher les informations d'une instance object Book.
4. Ecrire un programme pour tester la classe Book.

MATRICES
Exercice 1
On donne une valeur K et un tableau T de N valeurs entières(N<50) tel que la valeur K ne figure pas
dans le tableau T (T[i]!=K ;i=1..N)
Ecrire une fonction deplacer(T, K) qui permet de déplacer les éléments du tableau T de manière à
regrouper en tête de celui-ci toutes les valeurs inférieures à K et en queue les valeurs supérieures à
K (sans utiliser un autre tableau).

Exercice 2
Soit une matrice A(n,m) de valeurs entières (n<50,m<100)
Ecrire une fonction trier(A) qui permet de faire un tri décroissant sur toutes les colonnes de la matrice A

Exercice 3
Soit une matrice A de n ligne et m colonnes(n<100, m<50). Et soit le tableau T définie par rapport à
la matrice A comme suit : L’ième élémént de T représente le nombre d’éléments de la ligne i de A qui
n’existe pas dans la ligne i+1 (la ligne suivante si elle existe).
Ecrire une fonction build(A) qui construit et affiche le tableau T.

Exercice 4
En mathématiques, une matrice stochastique (aussi appelée matrice de Markov) est une matrice
carrée dont chaque élément est un réel compris entre 0 et 1 et dont la somme des éléments de
chaque ligne vaut 1. Cela correspond, en probabilité, à la matrice de transition d'une chaîne de
Markov finie.
Une matrice est dite bistochastique (ou doublement stochastique) si la somme des éléments de
chaque ligne et de chaque colonne vaut 1.
Voici un exemple de matrice stochastique P (dans cet exemple, la somme des éléments de chaque
ligne est égale à 1 ; on remarque que la somme des éléments de chaque colonne est quelconque):

Exemple

Si G est une matrice stochastique, alors on appelle vecteur stable pour G un vecteur h tel que :

Et

1. Ecrire une fonction eststochastique(P) qui permet de vérifier est ce que la matrice P est stochastique ou
non
2. Ecrire une fonction estbistochastique(P) qui permet de vérifier est ce que la matrice P est bistochastique
ou non
3. Ecrire une fonction vecteurstable(G, h) qui permet de vérifier est ce que h est un vecteur stable de G ou
non

LES TABLEAUX
Exercice 1
Étant donné un tableau tab[] et deux entiers X et Y. La tâche consiste à trouver un sous-tableau de taille
supérieure ou égale à X et d'au plus Y, qui contient la moyenne maximale (moyenne des éléments du sous-
tableau).
Exemple :
tab[] = {1, 2, 3, 4, 5} X = 2, Y = 3
4.5

tab[] = {6, 7, 8, 3, 2, 4, 2} X = 2, Y = 4
7.5
return maximum

Exercice 2
Étant donné un tableau contenant uniquement des 0 et des 1, recherchez le plus grand sous-tableau
contenant le même nombre de 0 et de 1. La complexité attendue est O(n).
Exemple :
tab[] = {1, 0, 1, 1, 1, 0, 0}
1à6

tab[] = {0, 0, 1, 1, 0}
0 à 3 ou 1 to 4

PROBLÈME DE SÉQUENCEMENT DES TÂCHES


Exercice 1
Problème ! Étant donné un ensemble de travaux pour lesquels chaque travail a une date limite et les bénéfices associés
si le travail est terminé avant la date limite. Il est également indiqué que chaque travail prend une seule unité de temps,
de sorte que le délai minimum possible pour tout travail est 1. Comment maximiser le profit total si un seul travail peut
être planifié à la fois.

Exemple :

travail date limite bénéfice


a 4 20
b 1 10
c 1 40
d 1 30

Ce qui suit est la séquence de profit maximum des travaux (c,a)


PROBLÈME DE LA SÉLECTION D'ACTIVITÉS
Exercice 1
Problème ! Vous avez n activités avec leurs heures de début et de fin. Sélectionnez le nombre
maximal d'activités pouvant être effectuées par une seule personne, en supposant qu'une personne
ne peut travailler que sur une seule activité à la fois.
Exemple :
considérer les 3 activités suivantes triées par par heure de finition..
debut[] = {10, 12, 20};
fin[] = {20, 25, 30};
Une personne peut effectuer au plus deux activités. activité 1 et 3

considérer les 6 activités suivantes triées par par heure de finition


debut[] = {1, 3, 0, 5, 8, 5}; fin[] = {2, 4, 6, 7, 9, 9};
Une personne peut effectuer au plus quatre activités. (1, 2, 4 et 5)
Le choix glouton consiste à toujours choisir l'activité suivante dont l'heure de fin est la plus petite des activités
restantes et l'heure de début supérieure ou égale à l'heure de fin de l'activité précédemment sélectionnée.
Nous pouvons trier les activités en fonction de leur heure de fin, de sorte que nous considérions toujours la
prochaine activité comme une activité de temps de finition minimum.

PROBLÈME D'INSTALLATION DES ÉTAGÈRES


Exercice 1
Problème ! Etant donné la longueur du mur L et des étagères de deux longueurs m et n, trouvez le
nombre de chaque type d'étagère à utiliser et l'espace disponible restant dans la solution optimale,
de sorte que l'espace vide soit minimal. La plus grande des deux étagères est moins chère, c'est
donc préférable. Cependant, le coût est secondaire et la première priorité est de minimiser l'espace
vide sur le mur.
Exemple :
L=7m=3n=5
2 0 1 (Nous utilisons deux unités de type m et il reste 1 place.)

L = 29 m = 3 n = 9
0 3 2 (0 * 3 + 3 * 9 = 27 ; 29 - 27 = 2 )
Une approche simple et efficace consistera à essayer toutes les combinaisons possibles d'étagères
qui s'insèrent dans la longueur du mur.
Pour mettre en œuvre cette approche avec la contrainte que les plus grandes étagères coûtent
moins cher que la plus petite, à partir de 0, nous n'augmentons pas les étagères de type plus grand
jusqu'à ce qu'elles puissent être ajustées. Pour chaque cas, nous calculons l'espace vide et stockons
finalement cette valeur qui minimise l'espace vide. si l’espace vide est identique dans les deux cas,
nous préférons celui qui n’a plus aucun des plus grands étagères.

LA RECHERCHE DICHOTOMIQUE
Exercice 1
Problème ! Etant donné un tableau trié tab[] de n éléments, écrivez une fonction pour rechercher un élément
donné x dans tab[].

Une approche simple consiste à effectuer une recherche linéaire. La complexité temporelle de
l'algorithme ci-dessus est O (n). Une autre approche pour effectuer la même tâche consiste à utiliser
la recherche binaire.
La recherche dichotomique consiste à rechercher dans un tableau trié en divisant de manière
récursive l'intervalle de recherche en deux.
Commencez par un intervalle couvrant tout le tableau. Si la valeur de la clé de recherche est
inférieure à l'élément situé au milieu de l'intervalle, limitez l'intervalle à la moitié inférieure. Sinon, le
réduire à la moitié supérieure. Vérifiez à plusieurs reprises jusqu'à ce que la valeur soit trouvée ou
que l'intervalle soit vide.
L’idée de la recherche dichotomique est de profiter du tableau trié et de réduire la complexité
à O(Log n).
Implémentation récursive de la recherche dichotomique

RÉCURSIVITÉ EN PYTHON
Exercice 1
Soit une chaine de caractères, écrire un algorithme récursif permettant de déterminer sa longueur

Rendre récursive la fonction somme suivante :

Exercice 1
Pour convertir un nombre entier positif N de la base décimale à la base binaire, il faut opérer par des
divisions successives du nombre N par 2. Les restes des divisions constituent la représentation
binaire.

Ecrire une fonction récursive « Binaire » permettant d’imprimer à l’écran la représentation binaire
d’un nombre N (voir exemple en face).

Exercice 2
La suite de Fibonacci est définie comme suit :

Ecrire un programme récursif calculant Fib(n)

Exercice 3
Soit la suite définie par :

Ecrire un programme récursif permettant de calculer le nième terme de la suite ;

Exercice 4

Exercice 5
Soit un tableau X de N entiers, écrire une fonction récursive simple permettant de déterminer le maximum du
tableau

Exercice 5

Exercice 6
Un mot est un palindrome si on peut le lire dans les deux sans de gauche à droite et de droite à gauche.
Exemple KAYAK est un palindrome. Ecrire une fonction récursive permettant de vérifier si un mot est
palindrome.

Exercice 7
Soit un tableau d’’entiers contenant des valeurs 0 ou bien 1. On appel composante connexe une
suite contigue de nombres égaux à 1. On voudrait changer la valeur de chaque composante connexe
de telle sorte que la première composante ai la valeur 2 la deuxième ai la valeur 3, la 3ème ait la
valeur 4 et ainsi de suite. Réaliser deux fonctions :
1. La première fonction n’est pas récursive et a pour rôle de chercher la position d’un 1 dans un
tableau.
2. La deuxième fonction est récursive. Elle reçoit la position d’un 1 dans une séquence et propage
une valeur x à toutes les valeur 1 de la composante connexe.

Exercice 8
Soit une image binaire représentés dans une matrice à 2 dimension. Les éléments m[i][j] sont dits pixels et
sont égaux soit à 0 soit à 1. Chaque groupement de pixels égaux à 1 et connectés entre eux forment une
composante connexe(figure). L’objectifs est de donner une valeur différente de 1 à chaque composante (2
puis 3 puis 4 etc.)
1. Ecrire une fonction récursive propager permettant de partir d’un point (i,j) situé à l’intérieur d’une
composante connexe et de propager une étiquette T à tous les pixels situés à l’intérieur de la
composante.
2. Ecrire une fonction etiqueter permettant d’affecter une étiquette différente à chaque composante
connexe.

Gestion des fichiers


Exercice 1
Une molécule est un regroupement d’au moins deux atomes qui sont unis par des liens chimiques et
elle est représentée par une formule chimique. Exemple : H2O.
Une formule chimique est une succession de symboles d’atomes, suivi chacun par un entier
représentant le nombre d’apparitions(nbr) de l’atome dans la molécule.
Chaque atome est symbolisé par la première lettre de son nom en majuscule, suivie éventuellement
d’une deuxième lettre en minuscule pour distinguer des atomes ayant des initiales identiques. Ainsi,
le Fluor(F) se distingue de Fer(Fe), du Fermium(Fm) et du Francium(Fr).
Le calcul de la masse molaire moléculaire d’une molécule, notée M(Molécule), sera comme suit :
 Pour chaque atome de la molécule, calculer le produit (nbr * A(atome)) ou A(atome) est un réel
représentant la masse atomique de l’atome ;
 Calculer la somme des produits obtenus.
Exemple

Pour la molécule dichromate de potassium (K2Cr2O7) qui est constituée de 2 atomes de


potassium(K), 2 atomes de chrome(Cr) et 7 atomes d’oxygène(O), sa masse molaire
moléculaire M(K2Cr2O7) est égale à 2*A(K)+2*A(Cr)+7*A(O).
Puisque A(K)=39,1 g/mol, A(Cr)=52 g/mol et A(O)=16
g/mol, alors M(K2Cr2O7)=2*39,1+2*52+7*16=294,2 g/mol
Travail demandé :
En disposant d’un fichier texte ‘Molécules.txt’ dont chaque ligne contient le nom d’une molécule
suivi de sa formule chimique, séparés par le caractère astérisque ‘*’.
1. Ecrire une fonction remplireAtome() qui permet de remplir le fichier ‘Atomes.txt’ par les données relatives
à N atomes (N<=50), ou chacun est représenté par son symbole et sa masse atomique,
2. Ecrire un fonction masseAtome() qui permet de stocker dans un fichier ‘Resultats.txt’ le nom et la masse
molaire moléculaire de chaque molécule figurant dans le fichier ‘Molecules.txt’.

Exercice 2
Dans un contexte arithmétique, on définit les nombres premiers factoriels et les nombres premiers
primoriels comme indiqué ci-après.
Un nombre PF est dit premier factoriel s’il vérifie les deux propriétés suivantes :
 PF est un nombre premier
 Et PF s’écrit sous la forme d’un factoriel incrémenté ou décrémenté de 1 (PF=F! + 1 ou PF=F! - 1), sachant
que le factoriel de F noté F ! est égal à F*(F-1) *…*1
Exemple

 7 est un nombre premier factoriel car 7 est premier et il s’écrit sous la forme 3! + 1.
 719 est un nombre premier factoriel car 719 est premier et il s’écrit sous la forme 6! - 1.
Un nombre PP est dit premier primoriel s’il vérifie les deux propriétés suivantes :
 PP est un nombre premier
 PP s’écrit sous la forme d’une primorielle incrémentée ou décrémentée de 1 (PP=P#+1 ou PP=P#-1),
sachant que la primorielle de P notée P# est égale au produit des nombres premiers inférieurs ou égaux à
P.
Exemple

 211 est un nombre premier primoriel car 211 est premier et il s’écrit sous la forme 7# + 1. En effet,
7#+1=2*3*5*7 + 1 =210 + 1=211
 30029 est un nombre premier primoriel car 30029 est premier et il s’écrit sous la forme 13# - 1. En effet,
13# - 1 = 2*3*5*7*11*13-1=30030 – 1 =30029
Travail demandé :
1. Ecrire une fonction premier_fact(n) qui permet de vérifier est ce que n est un nombre premier factoriel ou
non
2. Ecrire une fonction premier_primoriel(n) qui permet de vérifier est ce que n est un nombre premier
primoriel ou non

Exercice 3
Soit un fichier typé intitulé concours.txt qui comporte les enregistrements relatifs aux candidats d’un
concours. Chaque enregistrement est composé de : NCIN, NOM, PRENOM, AGE, DECISION : (type
contenant les identificateurs suivants : admis, refusé, ajourné), et séparé par point virgule (;).
Travail demandé :

1. Définir la fonction saisir() qui permet de remplir les données relatives aux candidats dans le fichier
concours.txt
2. Définir la fonction admis() qui permet créer le fichier admis.txt comportant les données relatives aux
candidat admis
3. Afin de sélectionner en priorité les candidats admis et âgés moins de 30 ans, créer la fonction attente() qui
produira à partir du fichier admis.txt, un nouveau fichier intitulé attente.txt comportant les données relatives
aux candidats admis et âgés plus que 30 ans. Une ligne du fichier attente.txt comprend le NCIN,
le NOM et PRENOM d’un candidat séparés par point virgule (;).
4. Définir la fonction statistiques(dec) qui permet de retourner le pourcentage des candidats pour la
décision dec (admis, refusé et ajourné). Exemple : Le pourcentage des candidats admis = (Nombre des
candidats admis / Nombre des candidats) *100
5. Définir la fonction supprimer() qui supprimera du fichier admis.txt les candidat âgés plus que 30
N.B : On suppose que les fichiers seront mis à la racine du lecteur C.

Exercice 4

Après la réussite au baccalauréat, les meilleurs bacheliers sont orientés vers les classes préparatoires aux
grandes écoles. En effet, la priorité est à celui qui a le score (nombre de points) le plus élevé. Ce score est
appelé formule globale.
Les élèves admissibles seront classés par ordre décroissant selon la formule globale, Puis, une fois classés, ces
bacheliers seront divisés en 4 groupes de la façon suivante :
Groupe description Nb d’étudiants Répartition
40% (SMA) ; 30% (SMB) ; 20% (PC)
Principale Liste principale 30
; 10% (SVT)
50% (SMA) ; 25% (SMB) ; 20% (PC)
Tranche 1 Liste d’attente N°1 40
; 5% (SVT)
40% (SMA) ; 30% (SMB) ; 20% (PC)
Tranche 2 Liste d’attente N°2 60
; 10% (SVT)
55% (SMA) ; 25% (SMB) ; 20% (PC)
Tranche 3 Liste d’attente N°3 50
;
Dans le répertoire C:/bachelier, on dispose d’un fichier nommé ‘PSI.txt’ contenant la liste des bacheliers
admissibles de la section Physique et sciences industrielles. Dans ce fichier, chaque bachelier est défini par :
 Num_insc : le numéro d’inscription
 NP : le nom et prénom
 FILIERE : le nom de la filière (SMA, SMB, PC ou SVT)
 MG : moyenne générale.
 FS (formule spécifique) : un réel déjà calculé à partir des notes obtenues dans les diverses matières.
 i : un réel=1 si l’élève est redoublant en BAC et 1.10 sinon
On souhaite réaliser les fonctions suivantes :
1. formule_gen() qui permet de créer un autre fichier ‘PSI_FG.txt’, à partir du fichier ‘PSI.txt’, et y stocker,
pour les mêmes bacheliers, les informations suivantes : Num_insc, NP, FILIERE et FG. Sachant que la
formule globale (FG) de chaque élève est calculée par l’équation :
FG=((5*MG+FS)*i)
2. classer() qui permet de classer les bacheliers du fichiers ‘PSI_FG.txt’ par ordre décroissant selon la formule
globale(FG).
N.B : pour faire cette tache, on doit transmettre les informations dans un tableau, les trier puis les transmettre
ordonnées dans le fichier, implémenter un algorithme de tri que vous voulez pour trier le tableau
3. generer() qui permet d’extraire, dans le même répertoire, 4 autres fichiers (‘PSI_princ.txt’, ‘PSI_t1.txt’,
‘PSI_t2.txt’, ‘PSI_t3.txt’) contenant respectivement les bacheliers appartenant au groupe liste principale,
tranche 1, tranche2 et tranche3.
4. afficher(Num_insc) qui permet d’afficher, pour un candidat donné, en fonction de son numéro d’inscription
(donnée fournie en argument), le groupe auquel il appartient

Vous aimerez peut-être aussi