Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
Soit un tableau T de n caractères (n<=100). Ecrire un algorithme qui :
1. Déclare T
2. Lit la taille réelle de ce tableau (sans contrôle de la saisie) puis lit les éléments de ce
tableau T ;
3. Affiche le nombre de ‘(‘ dans T ;
4. Affiche le nombre d’occurrence de chaque caractère de T ; Que remarquez-vous ?
améliorer l’algorithme (devoir à remettre).
5. Affiche le caractère qui se répète le plus dans T ; Si égalité, afficher le 1er. Maximum.
Exercice 2
Soit une matrice Mat de taille nxm d’entiers avec n,m <=100
1. Lire la taille de Mat ainsi que ses éléments (ligne par ligne)
2. Compter et afficher le nombre de valeurs nulles de Mat (ligne par ligne)
3. Créer un tableau V contenant tous les éléments non nuls de Mat (ligne par ligne) et
créer un tableau P contenant le nombre d’éléments nuls de chaque ligne.
4. Afficher l’indice de la ligne où il y a le plus de valeurs nulles.
Exercice 3
Dans un garage, une voiture est caractérisée par une marque, un matricule, le numéro de
téléphone de son propriétaire ainsi que la dernière date d’entrée et de sortie de cette voiture
dans ce garage.
Exercice 1
Soit un tableau T de n caractères (n<=100). Ecrire un algorithme qui :
1) Variables
T [100] : caractère ;
2)
Algorithme exo1
Variable
T[100] : caractère ;
n,i :entier ;
Début
Ecrire("donner la taille du tableau") ;
Lire(n) ;
Pour i de 1 à n faire
Ecrire( "T[",i, "]=") ;
Lire(T[i]) ;
Finpour
3) On déclare m : entier ;
m0 ;
Pour i de 1 à n faire
Si T[i]=’(’ alors mm+1
Fsi
Finpour
Ecrire(" le nombre de parenthèse ouvrantes dans T est= ",m) ;
4)
On déclare m : entier ;
Pour i de 1 à n faire
m0 ;
Pour j de 1 à n faire
Si (T[i]=T[j]) alors mm+1 ;
Fsi
Finpour
Ecrire ("le nombre d’occurrences de", T[i], "= ", m) ;
finpour
Exemple de déroulement :
n=6 T[]={‘*’,’-‘,’*’,’+’,’-‘,’*’}
n i m T[i] j T[j]
6 1 0
1 * 1 *
2 -
2 3 *
4 +
5 -
3 6 *
le nombre d’occurrences de * = 3
2 0
1 *
1 - 2 -
3 *
4 +
2 5 -
6 *
le nombre d’occurrences de - = 2
3 0
1 * 1 *
2 -
2 3 *
4 +
5 -
3 6 *
le nombre d’occurrences de * = 3
1. Transfert de tous les éléments de T dans V une seule occurrence par caractère.
On déclare B :booleen ; k : entier ;
k 0 /* taille de V, initialement elle est à 0 car V n’existe pas encore*/
Pour i de 1 à n faire
B vrai ; /*B deviendra faux si on trouve que le caractère de T existe dans V sinon il reste à vrai pour
dire qu’il n’existe pas dans V et qu’on doit le rajouter dans V*/
Pour j de 1 à k faire
Si T[i]= V[j] alors B faux fsi
Fpour
Si (B= vrai) alors
Kk+1
V[k] T[i]
Fsi
Fin pour
La solution optimale pour le transfert serait de remplacer la boucle j par un tantque, ce qui
signifie que dès qu’il trouve un élément de T déjà dans V il arrête la recherche et il passe à
l’élément suivant de T.
1*. Transfert de tous les éléments de T dans V une seule occurrence par caractère (solution
optimale)
Pour i de 1 à k faire
m0 ;
Pour j de 1 à n faire
Si (V[i]=T[j]) alors mm+1 ;
Fsi
Finpour
Ecrire ("le nombre d’occurrences de" ,V[i], "= ", m) ;
finpour
Facultés des sciences appliqués Département d’informatique
Licence L1 : MI (2023/2024) Module : Algorithmique et structure de données I
Fiche TD4/TP4 : les types structurés
Déroulement :
n=6 T[]={‘*’,’-‘,’*’,’+’,’-‘,’*’}
k=3 V[]={‘*’,’-‘,’+’}
n k i m V[i] j T[j]
6 3 1 0
1 * 1 *
2 -
2 3 *
4 +
5 -
3 6 *
le nombre d’occurrences de * = 3
2 0
1 *
1 -- 2 -
3 *
4 +
2 5 -
6 *
le nombre d’occurrences de - = 3
3 0 +
1 *
2 -
3 *
1 4 +
5 -
6 *
le nombre d’occurrences de + = 3
Max0 ;
Pour i de 1 à k faire
m0 ;
Pour j de 1 à n faire
Si (V[i]=T[j]) alors mm+1 ;
Fsi
Finpour
Si m>max alors maxm ; c V[i] ;
finsi
finpour
ecrire("le caractère qui se répète le plus dans T" ,c) ;
Exercice 2
1)
Variable
Mat[100][100] : entier ;
i,j,n,m : entier ;
Début
Ecrire( "donner la taille de la matrice" );
Lire(n,m) ;
Pour i de 1 à n faire
Pour j de 1 à m faire
Ecrire( "MAT [",i , "][",j, "] ="),
Lire(Mat[i][j]) ;
Finpour
Finpour
k0 ;
Pour i de 1 à n faire
Pour j de 1 à m faire
Si (Mat[i][j]=0) alors kk+1;
fsi
Finpour
Finpour
Ecrire("le nombre de valeurs nulles dans la matrice=",k) ;
Facultés des sciences appliqués Département d’informatique
Licence L1 : MI (2023/2024) Module : Algorithmique et structure de données I
Fiche TD4/TP4 : les types structurés
k0 ;
Pour i de 1 à n faire
L0 ;
Pour j de 1 à m faire
Si (Mat[i][j]=0) alors
LL+1;
sinon
kk+1 ;
V[k]Mat[i][j]
fsi
Finpour
P[i] L ;
Finpour
Exercice 3
2. 1)
Variables
V1, V2 : voiture ;
2.2)
Algorithme premiere_voiture_garage
type Date = structure {jour, mois, annee : entier ;}
type voiture = structure {
Mark, Matri, : chaine ;
tel : entier ;
DE, DS : Date } ;
Variables
V1, V2 : voiture ;
Début
Ecrire ( "informations première voiture") ;
Ecrire (" marque matricule et numéro téléphone du propriétaire") ;
Lire (V1.Mark, V1.Matri,V1.tel) ;
Ecrire ("date d’entrée au garage") ;
Lire(V1.DE.jour, V1.DE.mois, V1.DE.annee) ;
Ecrire ("date de sortie du garage") ;
Lire (V1.DS.jour, V1.DS.mois, V1.DS.annee) ;
/********* 2eme voiture******/
Ecrire ( "informations deuxième voiture") ;
Ecrire (" marque matricule et numéro téléphone du propriétaire") ;
Lire (V2.Mark, V2.Matri, V2.tel) ;
Ecrire ("date d’entrée au garage") ;
Lire (V2.DE.jour, V2.DE.mois, V2.DE.annee) ;
Ecrire ("date de sortie du garage") ;
Lire (V2.DS.jour, V2.DS.mois, V2.DS.annee) ;
/*******/
Si (V1.DE.mois < V2.DE.mois) alors
Ecrire (" la voiture dont le matricule", V1.Matri, " est la première
a être au garage en 2023") ;
Sinon
Si (V1.DE.mois > V2.DE.mois) alors
Ecrire (" la voiture dont le matricule", V2.Matri, " est la
première à être au garage en 2023") ;
Facultés des sciences appliqués Département d’informatique
Licence L1 : MI (2023/2024) Module : Algorithmique et structure de données I
Fiche TD4/TP4 : les types structurés
Sinon
Ecrire (" les 2 voitures sont rentrées au même mois") ;
Finsi
Finsi
Fin.
3. a)
Algorithme premiere_voiture_garage
type Date = structure { jour, mois, annee : entier ;}
type voiture = structure {
Mark ,Matri: chaine ;
tel : entier ;
DE, DS : Date } ;
Variables
V[50] : voiture ;
i :entier
Début
Pour i de 1 à 50 faire
Ecrire ( "la voiture ", i)
Ecrire (" Marque :") ;
Lire (V[i].Mark) ;
Ecrire (" Matricule :") ;
Lire (V[i].Matri) ;
Ecrire (" Téléphone propriétaire :") ;
Lire (V[i].tel) ;
Ecrire ("date d’entrée au garage") ;
Lire(V[i].DE.jour, V[i].DE.mois, V[i].DE.annee) ;
Ecrire ("date de sortie du garage") ;
Lire (V[I].DS.jour, V[I].DS.mois, V[I].DS.annee) ;
b)
K0; /* k est le nombre de voitures de marques clio*/
Pour i de 1 à 50 faire
Si (V[i].Mark= "clio" ) alors kk+1 ;
Finsi
Finpour
Ecrire ("le nombre de voitures de marque clio au garage est",k) ;
c) Afficher le numéro de téléphone de la voiture dont le matricule est
"002356-109-31"
Facultés des sciences appliqués Département d’informatique
Licence L1 : MI (2023/2024) Module : Algorithmique et structure de données I
Fiche TD4/TP4 : les types structurés
i1 ;
Tantque (V[i].tel≠ "002356-109-31) et (i<=50) faire
Ii+1 ;
Fintantque
Si (V[i].tel= "002356-109-31) alors
Ecrire( "le numéro de téléphone du propriétaire de la voiture est ", V[i].tel) ;
Sinon
Ecrire( "voiture inexistante au garage") ;
Finsi
FIN