Académique Documents
Professionnel Documents
Culture Documents
Exercice N°2 :
Q1. Ecrire un sous-algorithme qui permet d’éclater un vecteur d’entiers VE en deux :
Un vecteur VP contenant les entiers pairs.
Un vecteur VI contenant les entiers impairs.
Q2. En utilisant les sous-algorithmes précédents, écrire l’algorithme qui permet de :
Saisir N,
Remplir le tableau
Afficher le contenu du tableau,
Afficher le tableau des paires et le tableau des impaires.
Exercice N°3 :
Un instituteur cherche à vérifier si ses élèves ont appris à réciter l’alphabet lettre par lettre
dans l’ordre. Pour ceci, Il vous demande de lui développer l’algorithme et les sous-algorithmes
d’un programme permettant d’évaluer chaque élève de la façon suivante :
Q1. Le programme demande à chaque élève de remplir un tableau nommé réponse par les
lettres de l’alphabet dans l’ordre. Ecrire un sous-algorithme REMPLIR qui remplit le tableau
réponse.
Q2. Ecrire sous-algorithme CORRIGER qui permet d’examiner le tableau réponse
élément par élément :
Si la lettre est dans sa place, il l’accepte.
Sinon, il la remplace par la lettre adéquate et incrémente le nombre de fautes
Q3. En utilisant les sous-algorithmes précédents, écrire l’algorithme qui permet de :
saisir les réponses de l’élève
d’afficher le nombre total de fautes commises par l’éléve.
Exercice N°4 :
Q1. Ecrire un sous-algorithme qui permet de vérifier si les éléments du tableau de taille
N sont dans l’ordre croissant ou non.
Q2. Ecrire un sous-algorithme qui permet de fusionner deux tableaux V1 de taille N et
V2 de taille M en un troisième tableau V3 de taille N+M trié dans l’ordre croissant.
Q2 : Ecrire un algorithme qui permet de :
Remplir deux tableaux V1 de taille N et V2 de taille M et de vérifier s’ils sont
trié dans l’ordre strictement croissant,
Fusionner les deux tableaux en un troisième tableau V3 trié dans l’ordre croissant.
Exercice N°5 :
Q1. Ecrire un sous-algorithme InsereVal qui insère une nouvelle valeur dans un tableau A
trié dans l’ordre croissant de réel de taille N (Nmax=50).
1ère méthode : on utilise un deuxième tableau comme tableau résultat.
Q2. Si l’utilisateur tape 1 alors il faut afficher VRAI si la salle est pleine, et FAUX sinon.
Ecrire un sous-algorithme PLEINE qui permet de déterminer si la salle est pleine ou non.
Q3. Si l’utilisateur tape 2 alors il faut ajouter un client dans la salle. Si la salle n’est pas
pleine alors :
Ce nouveau client occupera le premier élément libre du tableau Salle.
Un message devra indiquer si l’ajout a été possible.
Ecrire un sous-algorithme AJOUTER qui permet de d’ajouter un client dans la salle
d’attente.
Q4. Si l’utilisateur tape 3 alors il faut faire passer en consultation le client le plus
anciennement arrivé dans la salle d’attente.
Si la salle n’est pas vide alors :
Un message devra indiquer le numéro du client qui est parti en consultation
c’est le numéro qui occupe la première case du tableau « Salle ».
On supprime la case Salle[1] en décalant d’un cran (d’une case) vers la gauche
les numéros des clients restants dans le tableau (si la salle n’est pas vide).
Sinon un message devra indiquer que la salle est vide.
Ecrire un sous-algorithme SUPPRIMER qui permet de supprimer un client de la salle
d’attente.
Q5. Si l’utilisateur tape 4 alors il faut faire passer tous les clients, et afficher, au fur et à
mesure, le numéro des clients qui passent.
Q6. Ecrire l’algorithme qui permet de vider la salle d’attente et ce en utilisant la réponse
de la question précédente.
Exercice N°1 :
Q1. Fonction taille() : entier
VAR N :entier
DEBUT
Repeter
Ecrire("Donnez la taille du tableau")
Lire(N)
Jusqu’à (N>0 ET N<=Nmax)
Taille N
FIN Taille
Q2.
1ère méthode
Procedure RemplirPaire(S T :Tab; E N :entier)
VAR i :entier
Debut
Pour i de 1 à N faire
repeter
Ecrire("T[",i,"]")
Lire(T[i])
Jusqu’à(T[i]>=0 ET T[i]MOD2=0)
Fin Pour
FIN RemplirPaire
2ème méthode
Fonction Parité(X :Entier) :Logique
VAR
Test :Logique Fonction
Debut Parité(X :Entier) :Logique
SI(X MOD 2=0) ALORS Debut
Test Vrai SI(X MOD 2=0) ALORS
SINON Parité Vrai
Test Faux SINON
FIN SI Parité Faux
Parité Test FIN SI
FIN Parité FIN Parité
M T[1]
Pour i de 2 à N Faire
Si (T[i] < M) Alors
M T[i]
FinSi
FinPour
MinTab M //Retourner(M)
Fin MinTab
FIN Rechercher
2ème méthode
PROCEDURE Rechercher(E X : Tab, N,P : entier)
VAR
i : entier
DEBUT
i1
TANT QUE (i <= N ET X[i]<>P) FAIRE
ii+1
FIN TANT QUE
SI(i<=N) ALORS
ECRIRE("La position de ",P," dans le tableau est ",i)
SINON
ECRIRE("Erreur !!",P," n’existe pas dans le tableau")
FIN SI
FIN Rechercher
Début
cpt 0
Pour i de 1 à N Faire
Si (T[i] = P) Alors
cpt cpt + 1
FinSi
FinPour
Occurence cpt
Fin Occurence
Q8.
1ère méthode
PROCEDURE Inverser(E/S T : Tab; E N :entier)
VAR x,i : entier
DEBUT
ALGORITHME TraittementTableau
CONST Nmax=50
TYPE
Tab = tableau [1 .. Nmax] d’entier
VAR
N,j,P : entier
X : Tab
DEBUT
N Taille()
ECRIRE("********* Remplissage du tableau *********")
Remplir(X,N)
ECRIRE("********* Affichage du tableau *********")
Inverser(X,N)
ECRIRE("** Affichage du tableau après inversion **")
Afficher(X,N)
FIN
Exercice N°2 :
1ère méthode
PROCEDURE Eclater(E VE : Tab,N:Entier ; S VP, VI : Tab, j,k: Entier)
VAR
i: Entier
DEBUT
j←0,k←0
POUR i de 1 à N FAIRE
SI (VE[i] MOD2 = 0) ALORS
j← j + 1
VP[j]←VE[i]
SINON
k← k + 1
VI[k]←VE[i]
FINSI
FINPOUR
FIN Eclater
2ème méthode
Fonction Parité(X :Entier) :Logique
Debut
SI(X MOD 2=0) ALORS
Parité Vrai
SINON
Parité Faux
FIN SI
FIN Parité
PROCEDURE Eclater(E VE : Tab,N:Entier ; S VP, VI : Tab, j,k: Entier)
VAR
i: Entier
DEBUT
j←0,k←0
POUR i de 1 à N FAIRE
SI (Parité(VE[i])= Vrai) ALORS
j← j + 1
VP[j]←VE[i]
SINON
k← k + 1
VI[k]←VE[i]
FINSI
FINPOUR
FIN Eclater
ALGORITHME EclaterTableau
CONST Nmax=50
TYPE
Tab = tableau [1 .. Nmax] d’entier
VAR
N,J,K : entier
VE,VP,VI : Tab
N Taille()
ECRIRE("********* Remplissage du tableau *********")
Remplir(VE,N)
ECRIRE("********* Affichage du tableau *********")
Afficher(VE,N)
Eclater(VE,N,VP,VI,J,K)
FIN
Exercice N°3 :
Q1.
PROCEDURE Remplir(S Reponse : Tab ;E N :entier)
DEBUT
Pour i de 1 à N Faire
repeter
Ecrire("Donnez le caractère N°",i)
Lire(Reponse[i])
Jusqu’à(Majus(Reponse[i])>='A' ET Majus(Reponse[i])<='Z')
FinPour
Fin Remplir
Q2.
Q3.
ALGORITHME Alphabet
CONST
N = 26
TYPE
Tab = Tableau[1..N] de Car
VAR
reponse : Tab
nbF : Entier
DEBUT
remplir(réponse,N)
corriger(réponse, nbF, N)
Ecrire(”Nombre de fautes : ”,nbF)
Fin
Exercice N°4 :
Q1.
FONCTION EstTrié(T :Tab, N :entier) :Logique
VAR i : entier, Trier : Logique
DEBUT
i1
Trier Vrai
TANT QUE ((i<= N-1) et Trier=VRAI) FAIRE
SI(T[i]< T[i+1])ALORS
ii+1
SINON
TrierFaux
FIN SI
FIN TANT QUE
EstTrié Trier
FIN EstTrié
Q2.
PROCEDURE Fusion(E V1 : Tab, V2 : Tab, N :entier ;M :entier ; S V3
:TabF; k :entier)
VAR i, j: Entier
DEBUT
i 1, j 1, k0
TANTQUE (i <= N) ET (j <= M) FAIRE
SI (V1[i] <= V2[j]) ALORS
kk + 1
V3[k]V1[i]
ii + 1
SINON
kk + 1
V3[k]V2[j]
jj + 1
FINSI
FINTQ
TantQue (i <= N) FAIRE
kk + 1
V3[k]V1[i]
ii + 1
FINTQ
TANTQUE (j <= M) FAIRE
kk + 1
V3[k]V2[j]
jj + 1
FINTQ
FIN Fusion
ALGORITHME TableauFusion
CONST
Nmax=50
TYPE
Tab =tableau [1 .. Nmax] d’entier
TabF =tableau [1 .. 2*Nmax] d’entier
VAR
N,M,K : entier
trier : Logique
V1,V2: Tab
V3 :TabF
DEBUT
N Taille()
ECRIRE("****** Remplissage du tableau N°1 *******")
Repeter
Remplir(V1,N)
Jusqu’à(EstTrié(V1,N))
ECRIRE("****** Remplissage du tableau N°2 *******")
M Taille()
Repeter
Remplir(V2,M)
Jusqu’à(EstTrié(V2,M))
Fusion(V1,V2,N,M,V3,K)
ECRIRE("******** Affichage du tableau N°1 ********")
Afficher(V1,N)
ECRIRE("******** Affichage du tableau N°2 ********")
Afficher(V2,M)
ECRIRE("******** Affichage du tableau N°3 ********")
Afficher(V3,K)
FIN
/////INF 11
Exercice N°5 :
Q1. { on ne considère pas les cas où le tableau est vide ou plein)
1ere méthode :
Procédure InsereVal_1 (E A:Tab,R:Entier,N :Entier ;S B : Tab)
VAR i, j : Entier
DEBUT
i 1,j 1
TantQue (A[i] <= R) et (i <= N) Faire
B[j] A[i]
i i + 1, j j + 1
FinTQ
B[j] R
j j + 1
TantQue (i <= N) Faire
B[j] A[i]
ii + 1, j j + 1
FinTQ
FIN InsereVal_1
2éme méthode :
Procédure InsereVal_2 (E/S A : Tab, N :entier,E R : entier )
VAR
i : Entier
DEBUT
i N+1
TANT QUE (i > 0 et A[i-1] > R) FAIRE
A[i] A[i-1]
i i-1
FIN TQ
A[i] R
N N + 1
FIN InsereVal_2
Q2.
Procédure RemplirTrié(E/S A : Tab, N : Entier)
VAR
V,i : entier
DEBUT
i 0
REPETER
Ecrire("Donnez une valeur réel")
LIRE(V)
SI (V ≠ 0) ALORS
SI (i=0) ALORS //tableau vide
T[1] V
i i+1
SINON SI (i<Nmax) ALORS
InsereVal_2(T,V,i)
SINON
Ecrire("Le tableau est plein!! Impossible
d’ajouter un nouvel élément.")
FIN SI
FIN SI
SINON
Ecrire("Fin du remplissage du tableau.")
FIN SI
JUSQU’A (i=Nmax ou V=0)
N i
FIN RemplirTrié
Q3.
ALGORITHME Remplir_Tableau_trié
CONST
Nmax=50
TYPE
Tab= tableau [1 .. Nmax] de réel
VAR
N : entier
T : Tab
DEBUT
RemplirTrié(T,N)
Afficher(T,N)
FIN
Exercice N°6 :
Algorithme Salle_Attente
CONST
Capacite = 100
VAR
nbreClt, i, choix : entier
Salle : tableau [1..capacite] d’entier
SP,CltAjout : Booléen
DEBUT
nbreClt ← 0
SP ← FAUX
ECRIRE ("**** MENU ****")
ECRIRE ("1 : Vérifier si la salle est pleine ou non ?:")
ECRIRE ("2 : Ajouter un client dans la salle d’attente :")
ECRIRE ("3 : Faire passer en consultation un client :")
ECRIRE ("4 : Vider la salle d’attente :")
ECRIRE ("Tapez votre choix :")
LIRE (choix)
SI choix = 1 ALORS
POUR i DE 1 A capacite FAIRE
SI (Salle[i] <> '') ALORS
nbreClt ← nbreClt + 1
FINSI
FINPOUR
RechTabTrié(T,N,V,Rep)
FIN
Exercice N°10 :
Procédure RemplirTabTrie(Var T : Tab1 ;N :entier)
VAR
i : Entier
DEBUT
ECRIRE("élément N°1 = ")
LIRE(T[1])
POUR i de 2 à N FAIRE
ECRIRE("élément N°",i, " = ")
REPETER
LIRE(T[i])
JUSQU’A (T[i]> T[i-1])
FIN POUR
FIN
ALGORITHME Fusionner_Tableaux
VAR
N,M,K: entier
T,P : tableau [1 .. Nmax] d’entier
R : tableau [1 .. 2*Nmax] d’entier
DEBUT
REPETER
Ecrire("Donnez la taille du tableau N°1 :")
Lire(N)
JUSQU’A (N>0)
ECRIRE("Remplissage du premier tableau N°1 :")
RemplirTabTrie(T,N)
REPETER
Ecrire("Donnez la taille du tableau N°2 :")
Lire(M)
JUSQU’A (M>0)
ECRIRE("Remplissage du premier tableau N°2 :")
RemplirTabTrie(P,N)
Fusion(T,P,R,N,M,K)
Afficher(R,K)
Exercice N°12 :
Ecrire un sous-algorithme ZeroDiag qui met à zéro les éléments de la diagonale principale
d'une matrice carrée MAT (n lignes et n colonnes) donnée.
Exercice N°13 :
Q1. Ecrire un sous-algorithme Transpose qui calcule la transposition d’une matrice
carrée.
L’opération de transposition consiste à inverser les lignes et les colonnes d’une matrice
carrée en effectuant une symétrie par rapport à la diagonale principale de la matrice.
Exemple :
Q3. Ecrire un sous-algorithme ProdMat qui réalise le produit de deux matrices M1 ayant
n lignes et m colonnes et M2 ayant m lignes et p colonnes : M3=M1 x M2 avec M3 est défini
comme une matrice ayant n lignes et p colonnes et dont les éléments sont calculés par la formule
:
où M1i,k, M2k,j et M3i,j sont respectivement les éléments des matrices M1, M2 et M3.
N.B : le nombre de colonnes de M1 doit être égal au nombre de lignes de M2.
Exemple :
Exercice N°14 :
Ecrire un sous-algorithme qui permet de chercher un caractère donnée dans une matrice
de caractères et qui retourne l’indice de la ligne et l’indice de la colonne.
Exercice N°15 :
Q1. Ecrire un sous-algorithme qui permet d’afficher les éléments de la diagonale
principale et ceux de la première diagonale secondaire d’une matrice de taille LxC.
Q2. Ecrire un sous-algorithme qui permet de faire la somme des éléments de la première
et ceux de la deuxième diagonale d’une matrice carré de taille LxC.
Q3. Ecrire un algorithme qui permet de :
remplir une matrice carrée d’entiers de taille LxC (Maximum 50 lignes).
afficher les résultats des sous-programmes précédents.
Exercice N°16 :
Q1. Ecrire un sous-algorithme TrianglePascal qui construit le triangle de PASCAL de
degré N (inférieur à 13) et le mémorise dans une matrice carrée P de dimension N+1.
N=0 1
N=1 11
N=2 121
N=3 133 1
N=4 146 4 1
N=5 1 5 10 10 5 1
N=6 1 6 15 20 15 6 1
Ce triangle est construit de la façon suivante :
Le triangle est construit ligne par ligne:
Initialiser le premier élément qui est l'élément de la diagonale à 1.
Calculer les valeurs entre les éléments initialisés de gauche à droite en utilisant
la relation: Pi,j = Pi-1,j + Pi-1,j-1
Q2 : Ecrire un algorithme qui permet de :
Saisir le degré N du triangle de PASCAL.
Construire la matrice carré P contenant les éléments du tiangle de PASCAL.
Exercice chaine
Exercice N°17 :
Ecrire un algorithme qui lit deux chaînes de caractères CH1 et CH2 et qui copie la
première moitié de CH1 et la première moitié de CH2 dans une troisième chaîne CH3. Afficher
le résultat.
N.B : utiliser un sous-algorithme pour la lecture d’une chaine et un sous-algorithme pour
créer CH3.
Exercice N°18 :
Q1. Ecrire un sous-algorithme qui permet de lire une phrase (chaine de caractère) formée
de caractères alphabétiques et du caractère espace. La phrase commence obligatoirement par
une lettre et les mots sont séparés par des espaces.
Q2. Ecrire un sous-algorithme qui permet de compter le nombre de mots dans une phrase
donnée.
Q3. Ecrire un sous-algorithme qui détermine et affiche le mot le plus long dans une phrase
donnée.
Exercice N°19 :
Q1. Ecrire un sous-algorithme qui permet d’effacer toutes les occurrences du caractère C,
donné par l’utilisateur, dans CH et tasser les éléments restants.
Q2. Ecrire l’algorithme qui permet :
de lire une chaine de caractère ch,
de supprimer toutes les occurrences d’un caractère donné de la chaine ch,
d’afficher la chaine après la suppression.
Exemple:
Introduisez une chaine de caractère : Le réseau informatique
Donnez le caractère à éliminer : e
La chaine résultante est : L résau informatiqu
Exercice N°20 :
Q1. Ecrire un sous-algorithme qui lit un verbe régulier se terminant par "er".
Q2. Ecrire un sous-algorithme qui affiche la conjugaison d’un verbe régulier au présent
de l'indicatif de ce verbe.
Exemple :
Donner un verbe : fêter
La conjugaison du verbe fêter donne : je fête , tu fêtes, il
fête, nous fêtons …
Exercice N°21 :
Ecrire un sous-algorithme qui supprime la première occurrence d'une chaîne de caractères
chaine1 dans une chaîne de caractères chaine2.
Exemples: Chaine1 Chaine2 Chaine3
HAM MOHAMED MOED
EI ZIED ZIED
T TOTALEMENT OTALEMENT
HELLO HELLO
Exercice N°22 :
Ecrire un sous-algorithme qui remplace la première occurrence d'une chaîne de caractères
CH1 par la chaîne CH2 dans une chaîne de caractères DEBUT. Utiliser une chaîne qui
contiendra le résultat finale FIN.
Exemples: CH1 CH2 DEBUT FIN
HAM DF MOHAMED MODFED
IE EI ZIED ZEID
IE ARTE PIERRE PARTERRE
EI IE ZIED ZIED
TOT FIN TOTALEMENT FINALEMENT
TTT HELLO HELLO
Exercice N°8:
Q1. Ecrire un sous-algorithme qui lit 10 mots et les mémorise dans un tableau de chaînes
de caractères.
Q2. Ecrire un sous-algorithme qui permet de trier les 10 mots lexicographiquement en
utilisant la fonction COMPARER. Utilisez la méthode de tri à bull. Afficher le tableau trié.
Corrigé matrice
Exercice N°12 :
Procédure ZeroDiag(Var M : MAT; n:entier; n:entier)
VAR
i : entier
DEBUT
POUR i de 1 à N FAIRE
MAT[i,i] 0
FIN POUR
FIN
Exercice N°13 :
Q1.
Procédure Transpose(Var M : Mat,n :entier)
VAR
i, j, x : Entier
DEBUT
POUR i de 1 à n FAIRE
POUR j de (i+1) à n FAIRE
XM[i,j]
M[i,j] M[j,i]
M[j,i] x
FIN POUR
FIN POUR
FIN
Q2.
Procédure SomMat(M1, M2 : Mat ; Var M3 : Mat,n :entier)
VAR
i, j : Entier
DEBUT
POUR i de 1 à n FAIRE
POUR j de 1 à n FAIRE
M3[i,j] M1[i,j]+ M2[i,j]
FIN POUR
FIN POUR
FIN
Q3.
Procédure ProdMat(M1 : Mat1; M2 : Mat2; Var M3 :
Mat3,n :entier,m :entier,p :entier)
VAR
i, j, k : Entier
DEBUT
POUR i de 1 à n FAIRE
POUR j de 1 à p FAIRE
M3[i,j] 0
POUR k de 1 à m FAIRE
M3[i,j] M3[i,j]+M1[i,k]*M2[k,j]
FIN POUR
FIN POUR
FIN POUR
FIN
ALGORITHME Somme_Matrice
VAR
N,M,i,j : entier
Mat1: tableau [1..N, 1..M] d’entier
Mat1, Mat2, Mat3 : tableau [1..M, 1..P] d’entier
Mat1, Mat2, Mat3 : tableau [1..N, 1..P] d’entier
DEBUT
REPETER
ECRIRE ("Entrez les dimensions de la matrices M1 : ")
LIRE(N,M)
JUSQU’A (N>0 et M>0)
REPETER
ECRIRE ("Entrez les dimensions de la matrices M2 : ")
LIRE(M,P)
JUSQU’A (P>0 et M>0)
RemplirMat(M1,N,M)
RemplirMat(M2,M,P)
ProdMat(M1,M2,M3,N,M,P)
FIN
Corrigé chaine
Exercice N°14 :
ALGORITHME Recherche_Caractère
VAR
N,M,i,j : entier
MAT : tableau [1..N, 1..M] de caractère
C : car
trouve : Booléen
DEBUT
REPETER
ECRIRE ("Entrez les dimensions de la matrice : ")
LIRE(N,M)
JUSQU’A (N>0 et M>0)
POUR i de 1 à N FAIRE
POUR j de 1 à M FAIRE
ECRIRE("MAT[",i,",",j,"]= ")
LIRE(MAT[i,j])
FIN POUR
FIN POUR
ECRIRE ("Donnez le caractère à rechercher :")
Lire(C)
i1
trouve FAUX
TANT QUE (i<N et trouve <> VRAI) FAIRE
j1
TANT QUE (j<M et trouve <> VRAI) FAIRE
SI(MAT[i,j]=C) ALORS
TrouveVRAI
SINON
jj+1
FIN SI
FIN TANT QUE
ii+1
FIN TANT QUE
FIN
Exercice N°15 :
Pour résoudre ce problème, attachons nous tout d'abord à savoir quelles sont les diagonales
principales et secondaires d'une matrice.
Soit la matrice suivante :
Première
diagonale
Indices de secondaire
ligne et de
colonne
Deuxième
diagonale Diagonale
secondaire principale
On obtient ainsi:
– pour la diagonale principale, i=j et i va de 1 à taille_mat -1 (ici 3)
– pour la première diagonale secondaire, j=i+1 et i va de 1 à taille_mat -2 (ici 2)
– pour la seconde diagonale secondaire, j=i-1 et i va de 2 à taille_mat – 1.
void main()
{
int mat[10][10];
int i,somme=0;
//diagonale principale
for(i=0; i<10; i++) //Dans ce cas j=i
somme = somme + mat[i][i];
//Affichage
printf("La somme des éléments de la diagonale principale est: %d \n"
,somme);
//première diagonale secondaire
somme=0;
for(i=0; i<9; i++) //Dans ce cas j=i+1
somme = somme + mat[i][i+1];
//Affichage
printf("La somme des éléments de la première diagonale secondaire
est : %d \n ",somme);
}
Exercice N°16 :
Q1.
Procédure TrianglePascal(n:Entier; Var T:Mat)
VAR
i, j : Entier
DEBUT
Exercice N°17 :
Ecrire un algorithme qui lit deux chaînes de caractères CH1 et CH2 et qui copie la
première moitié de CH1 et la première moitié de CH2 dans une troisième chaîne CH3. Afficher
le résultat.
#include <stdio.h>
#include <string.h>
void main()
{
/* Déclarations */
char CH1[100], CH2[100]; /* chaînes données */
char CH3[100]=""; /* chaîne résultat */
/* Traitements */
strncpy(CH3, CH1, strlen(CH1)/2);
strncat(CH3, CH2, strlen(CH2)/2);
/* Affichage du résultat */
printf("Un demi \"%s\" plus un demi \"%s\" donne \"%s\"\n",
CH1, CH2, CH3);
}
Exercice N°18
Q2.
Algorithme Comptage_Mots
Variables
i, L, nb_mot : Entier
phrase : Chaîne
Début
Ecrire(”Entrer une phrase non vide : ”) L ire(phrase)
LLong(phrase)
nb_mot 1
Pour i de 1 à L Faire
Si(phrase[i] = ” ”) Alors
nb_mot nb_mot + 1
FinSi
FinPour
Ecrire(”Nombre de mots = ”,nb_mot)
Fin.
Q3.
Algorithme Plus_Long_Mot
Variables
i, j, L : Entier
phrase, mot, motpl : Chaîne
Début
Ecrire(”Entrer une phrase : ”) L ire(phrase)
LLong(phrase)
motpl ””
i1
TantQue (i <= L) Faire
mot ””
ji
TantQue((j <= L) et (phrase[j] # ” ”)) Faire
mot mot + phrase[j]
jj + 1
FinTQ
Si(long(mot) > long(motpl)) Alors
motpl mot
FinSi
ij + 1
FinTQ
Ecrire(”Le mot le plus long est = ”,motpl)
Fin.
Exercice N°19 :
Ecrire un algorithme qui lit une chaîne de caractère CH. Effacer ensuite toutes les
occurrences du caractère, donné par l’utilisateur, dans CH et tasser les éléments restants.
Afficher la chaîne de caractère résultant.
Exemple:
Introduisez une chaine de caractère : Le réseau informatique
Donnez le caractère à éliminer : e
La chaine résultante est : L résau informatiqu
#include <stdio.h>
void main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I,J; /* indices courants */
printf("\n");
}
Exercice N°20 :
Ecrire un algorithme qui lit un verbe régulier en "er" et qui en affiche la conjugaison au
présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuguer.
Exemple :
Verbe fêter : je fête tu fêtes il fête nous fêtons …
#include <stdio.h>
#include <string.h>
void main()
{
/* Déclarations */
char VERB[20]; /* chaîne contenant le verbe */
char AFFI[30]; /* chaîne pour l'affichage */
int L; /* longueur de la chaîne */
AFFI[0]='\0';
strcat(AFFI, "tu ");
strcat(AFFI, VERB);
strcat(AFFI, "es");
puts(AFFI);
....................
AFFI[0]='\0';
strcat(AFFI, "ils ");
strcat(AFFI, VERB);
strcat(AFFI, "ent");
puts(AFFI);
}
}
Exercice N°21 :
Ecrire un programme qui supprime la première occurrence d'une chaîne de caractères
chaine1 dans une chaîne de caractères chaine2.
Exemples: Chaine1 Chaine2 Chaine3
HAM MOHAMED MOED
EI ZIED ZIED
T TOTALEMENT OTALEMENT
HELLO HELLO
#include <stdio.h>
void main()
{
/* Declarations */
char chaine1[100]; /* chaine à transformer */
char chaine2[100]; /* chaine à supprimer dans chaine1 */
int I; /* indice courant dans chaine1 */
int J; /* indice courant dans chaine2 */
int TROUVE; /* indicateur logique qui precise */
/* si la chaine chaine2 a ete trouvee */
Exercice N°22 :
Ecrire un programme qui remplace la première occurrence d'une chaîne de caractères CH1
par la chaîne CH2 dans une chaîne de caractères DEBUT. Utiliser une chaîne de sauvegarde
FIN pendant le remplacement.
Exemples: CH1 CH2 DEBUT FIN
HAM DF MOHAMED MODFED
IE EI ZIED ZEID
IE ARTE PIERRE PARTERRE
EI IE ZIED ZIED
TOT FIN TOTALEMENT FINALEMENT