You are on page 1of 8

Informatique : Algorithmique & programmation Prof : Hichem Kemali

Exercice N°1 Lycée Pilote Médenine 4ème Scientifique


On donne les informations suivantes : ch, ch1,ch2 : chaine , n,m,i :entier , r :réel , c :caractère ,
ok :booléen .Compléter tableau suivant par les instructions algorithmiques qui permet de
réaliser les taches demandés
Tâches Les instructions
Mettre dans « c » le dernier Cch1[long(ch1)-1]
caractère de « ch1 »
Afficher la partie entière de Ecrire (ent(r))
«r»
Mettre dans ok une expression Ok n MOD 10=0
permettant de vérifier si l’entier
« n » est pair et divisible par 5
Extraire la partie numérique de Ch1 ″″
la chaine « ch2 » dans ch1 Pour i de 0 à long(ch2) faire
Si estnum(ch2[i]) alors ch1 ch1+ch2[i]
FinSi
FinPour
Afficher le nombre de chiffres Ecrire (long(convch(abs(m)))
de l’entier « m »
Calculer nombre d’occurrence M0
de « c » dans « ch » Pour i de 0 à long(ch2) faire
Si ch[i]=c alors mm+1
FinSi
FinPour
Mettre dans « c » un caractère C ch[alea(0,long(ch)-1)]
aléatoire de ch
Mettre dans « ch2 » une chaine Ch2 ″″
de 10 voyelles majuscules Pour i de 1 à 10 faire
aléatoirement ch2 ch2+chr(alae(65 ,90))
FinPour
Afficher les rangs alphabétiques Pour i de 0 à long(ch2) faire
de chaque lettre de « ch2 » Si ″A″<=Majus(ch2[i])<= ″Z″ Alors
Ecrire (″Rang alpha de ″,ch[i], ″=″, ord(Majus(ch2[i])-64))
FinSi
FinPour
Tâches Les instructions
Afficher les facteurs premiers de i2
l’entier « m » ch″″
Repeter
Si n MOD i = 0 Alors
ch ch + convch(i)+ ″*″
n n div i
Sinon i  i + 1
FinSi
Jusqu’à n=1
Ecrire (effacer (ch,long(ch)-1,long(ch))

Vérifier si la chaine « ch2 » i0


composée de caractères distincts Repeter
ok pos(ch2[i],ch2)=i
ii+1
jusqu’à (ok=faux) ou (i=long(ch2)-2)
Vérifier si l’entier m est premier i2
Tant que (i<= n div 2) et (n MOD i ≠0) faire
ii+1
FinTant que
Si i> n div 2 alors ecrire (‘’ Premier ‘’)
Sinon Ecrire (‘’Non’’)
FinSi
Supprimer les espaces inutiles de la Tant Que pos(″_ _″,ch)≠-1 faire
chaine « ch » cheffacer(ch, pos(″_ _″,ch), pos(″_ _″,ch)+1)
FinTantQue
Si ch[0]= ″_″ alors ch effacer(ch,0,1) FinSi
Si ch[long(ch)-1]= ″_″ alors ch effacer(ch,
long(ch)-1, long(ch))
FinSi

Calculer la somme de diviseurs M0


stricts de « n » Pour i de 1 à n div 2 faire
Si n MOD i =0 alors s s + i
FinSi
FinPour
1
Tâches Les instructions
Vérifier si la chaine « ch » Ok ch[long(ch)-1]= ″.″
composée uniquement par lettres et Tant que ok=vrai et i<=long(ch)-2 faire
se termine par point ok  ″A″<=Majus(ch[i])<= ″Z″
i i + 1
Fin Tant que
Mettre dans « ch2 » la chaine Ch″″
« ch » en minuscule Pour i de 0 à long(ch2) -1 faire
Si ″A″<=ch2[i]<= ″Z″ alors
ch ch+ chr (ord(ch2[i])+32)
Sinon ch ch + ch2[i] FinSi
FinPour
Compter nombre d’occurrence de T : un tableau de 26 entiers
chaque lettre alphabétique de Pour i de ‘A’ à ‘Z’ faire
« ch1 » t[i]0
FinPour
Pour j de 0 à long(ch1)-1 faire
t[majus(ch1[j])] t[majus(ch1[j])]+1
Finpour
Calculer la somme de chiffres de S0 ,ch convch(n)
«m» Pour i de 0 à long(ch)-1 faire
s s + valeur (ch[i])
Finpour
Décaler chaque lettre de « ch » par Ch1″″
« n » lettres pour i de 0 à long(ch)-1 faire
m ord(majus(ch[i])-64)
m (m+n)
Si m> 26 alors m m Mod 26
Si ″A″<=ch2[i]<= ″Z″ alors
ch1ch1+ chr(m+64)
Sinon ch1 ch1+ chr(m+96) FinSi
Finpour
Calculer le PGCD et PPCM de n I n * m
et m Tant Que n≠m faire
Si n>m alors nn-m sinon mm-1 FinSi
FinTant Que
ecrire (‘’PGCD=’’,n,’’PPCM=’,I div n)
2
Exercice N°2 (20min)
On donne les 2 algorithmes suivants : Procédure P sans entête
Algorithme PP ……………………………………..
Début Début
s0 K 0
Lire(n,m) Pour i de 1 à b faire
P(n,m,s) K K + a
Ecrire (n,m,s) Fin Pour
Fin Fin
Pour les entêtes suivants, afficher les valeurs de n, m et s après l’appel de la procédure P
Les valeurs initiales sont : n=2 et m=3
les entêtes Les valeurs
Procédure P (@ a,b :entier , k :entier) n=2 m=3 s=0
Procédure P (a,b :entier , @ k :entier) n=2 m=3 s=6
Procédure P (a,k :entier , @ b:entier) n=2 m=3 s=0
Procédure P (b,a :entier , @ k :entier) n=2 m=6 s=6
En déduire le rôle de la procédure P : …………a*b…………………….

Exercice N°3 (20min)


On donne l’ algorithme de la fonction F
Fonction F (n,k :entier) : entier 1- Compléter le type de F
Début 2- Donner résultat de fonction F pour
s0 n = 8563 et k = 1
Répéter ………23………….
s s * k + n MOD 10 n= 8563 et K=10
n  n Div 10 ……3658………….
jusqu’à n=0 3- En déduire le rôle de F
Retourner S ……Pour k = 1  La somme de chiffres de n
Fin …… Pour k = 10  inverser l’entier n

4- Procédure Palindrome-harshad ()
Début
Pour i de 1000 à 9999 faire
s1 f(i,1)
s2 F(i,10)
Si ( i=s2) et (i MOD s1=0) Alors ecrire (i)
FinSi
3

FinPour
Fin
Exercice N°4 (15min)
Pour déterminer le carré d’un entier naturel n, on utilise une méthode dont le principe est le
suivant : Le carré d’un entier naturel n est la somme des n premiers entiers impairs
Exemple :
Pour n=10 : 102 = 1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 + 17 + 19
Travail à faire : établir l’algorithme d’une fonction qui utilise la méthode décrite ci-dessus pour
retourner le carré d’un entier naturel n. Fonction carreN(n :entier) :entier
Début
Fonction carreN(n :entier) :entier
S0 , i1 , nb0
Début
Répéter
S0
s s + i
Pour i de 1 à 2*n-1 faire
i i + 2
Si i MOD2 =1 alors s s +i
nb nb+ 1
FinSi
jusqu’à nb=n
FinPour
Retourner S
Retourner S
Fin
Fin
Exercice N°5 (20min) (pratique) Procédure distinct()
Début
Un entier est dit distinct s’il est composé de
chiffres tous différents. Pour i de 10 à 20000 faire
Exemples : ch  convch(i)
 N=1273 est dit distinct Repeter
 N= 1565 est dit non distinct aux  ch[0]
Ecrire un programme python qui permet ch effacer (ch,0,1)
d’afficher tous les nombres distincts compris jusqu’à pos(aux ,ch)≠-1 ou long(ch)=1
dans l’intervalle [10..20000]. Si pos(aux ,ch)=-1 alors ecrire(i) FinSi
Exercice N°6 (20min) (pratique) Finpour
Fin
On dit que le nombre N est réversible dans la def afficher() :
multiplication par M si on peut reverser les for i in range(1,20000):
chiffres du produit de N par M.
Exemple ch=str(i)
Le nombre 2178 est réversible dans la j=int(ch[::-1])
multiplication par 4 car 2178x4 = 8712. k=2
Les chiffres de 8712 et de 2178 sont en s=0
effet réversibles while s< j :
Ecrire un programme python qui permet s=k*i
d’afficher tous entiers réversibles < 20000 k=k+1
if s==j :
print(i,k-1)
4
Exercice N°8 (20min)
Ecrivez un programme qui trouve et affiche à l'écran de combien de manières différentes on peut
écrire un nombre naturel donné comme produit de deux nombres naturels.
Explication Le nombre naturel 60 peut s'écrire comme produit de deux autres nombres naturels
de 6 manières différentes (on ignore les écritures commutatives) :
1 x 60 ; 2 x 30 ; 3 x 20 ; 4 x 15 ; 5 x 12 ; 6 x10. Procédure aficher ( n :entier )
Début
Pour i de 1 à n div 2 faire
Pour j de 1 à n faire
Si (i*j=n) et (j>i) alors
ecrire (i,’’*’’,j,’’=’’,n)
FinSi
FinPour
FinPour
Fin
Exercice N°9 (25min) pratique
On se propose d’écrire un programme python qui permet de déterminer et d’afficher toutes les
représentations sous forme de sommes d’entiers consécutifs d’un entier n donné.
Exemple d’exécution :
Entrer un entier : 45
Les sommes consécutives sont :
45 = 1+2+3+4+5+6+7+8+9
45 = 5+6+7+8+9+10 def afficher(n):
45 = 7+8+9+10+11 for i in range(1,n//2+1):
45 = 14+15+16
s=0
45 = 22+23
j=i
while s<n :
s=s+j
j=j+1
if s==n:
print(n,'=',i,end='')
for k in range(i+1,j):
print('+',k,end='')
print()
5
Archive du bac
Bac 2 (45 min)
Une chaîne est dite existante dans un tableau de chaînes si elle peut être formée à partir de la
concaténation des ièmes caractères des différents éléments de ce tableau.
Exemple :
Pour N = 5 et le tableau T suivant :
T "SALAH" "AMIRA" "BILEL" "ANWAR" "KARIM"
1 2 3 4 5

Pour Ch = "AMINA" le programme affiche : "chaîne existante dans T" car elle est le résultat
de la concaténation des 2èmes caractères des différents éléments de T.
Pour Ch = "SALWA" le programme affiche : "chaîne inexistante dans T" car les caractères de
Ch n’existe pas dans la même position dans les éléments de T.
Pour Ch = "HAMZA" le programme affiche : "chaîne inexistante dans T" concaténation des
ièmes caractères de T ne forme la chaine Ch.
Travail demandé :
Ecrire l’algorithme d’un programme qui permet de saisir un entier N (5≤N≤10) et une chaîne
Ch composée de lettres majuscules et de longueur N, puis de remplir un tableau T par N chaînes
composées de lettres majuscules et de même longueur que Ch et de vérifier l’existence de Ch
dans T comme décrit ci-dessus.

Algorithme de programme principal TDNT


Algorithme bac2
TDOG Type
Début
Remplir(t,n) Tab= tableau de 10 chaines
Objet Type
Saisir(ch) t Tab
Vérifier(t,n,ch) n Entier
Fin Remplir
saisir Procédure
vérifier

Algorithme de la procédure remplir


Procédure remplir (@ t :tab , @ n :entier ) TDOL
Début
Répéter lire(n) jusqu’à n ϵ [5..10] Objet Type
Pour i de 1 à n faire i entier
Repeter vérif fonction
Lire (t[i]) booléenne
jusqu’à verif(t[i]) et long(t[i])=n
Fin
6
Algorithme de la fonction verif
TDOL
fonction verif (ch :chaine ) :booléen
Début Objet Type
i 0 i entier
Répéter ok booléen
ok  ch[i] ϵ [‘’A’’..’’Z’’]
i i + 1
jusqu’à (ok=faux) ou (i=long(ch))
Retourner ok
Fin TDOL

Algorithme de la procédure saisir Objet Type


Procédure saisir (@ ch :chaine ) vérif Fonction
Début booléenne
Répéter
lire(ch )
jusqu’à verif(ch) et long(ch)=n
Fin

Algorithme de la procédure vérifier


Procédure vérifier (t :tab , n :entier , ch :chaine )
Début
TDOL
i 1
Répeter Objet Type
xh’’’’ i,j entier
Pour j de 1 à n faire xh chaine
xhxh + t[j][i]
FinPour
i i +1
jusqu’à (xh=ch) ou (i=n)
Si xh=ch Alors ecrire ("chaîne existante dans T")
Sinon ecrire ("chaîne inexistante dans T")
FinSi
Fin

Fin
7

You might also like