Les Algorithmes arithmétiques
Exercice 1
Fonction calcul(n :entier) :entier
Début
U5
Pour de 1 à n faire
U2*U+3
Finpr
Retourner U
Fin
Procedure affiche(n :entier)
Début
Pour i de 1 à n faire
Ecrire ("U"+i,"=",calcul(i))
Fin pr
Fin
Procedure verif(X: entire)
Debut
i0
tantque calcul(i) <X faire
ii+1
fin tantque
si calcul(i)=X ALORS
ecrire(X,"est un terme de la suite")
sinon
ecrire(X,"n’est pas un terme de la suite")
finsi
Fin
Exercice 2
Fonction calcul(n :entier,x :entier)
Début
Ux
Si U mod 2 = 0 ALORS
U U div 2
Sinon
U 3*U+1
Finsi
Retourner U
FIN
Fonction verif(u0 :entier) :entier
Début
i1
tantque calcul(i,u0) 1 faire
i i+1
fintq
retourner i
fin
Faten BEN ALI
1
exercice 3
fonction ROBINSON (n,u0 :entier) : chaine
début
U convch(u0)
pour i de 1 à n faire
U ""
Pour j de 9 à 0 faire
C convch(j)
Nb nb_occ(c, U)
Si nb 0 alors
U U +convch(nb)+convch(j)
Finsi
Finpr
Finpr
Retourner U
Fin
Fonction nb_occ(c :caractère, ch : chaine) :entier
Début
Nb 0
Pour i de 0 à long(ch)-1 faire
Si c = ch[i] alors
Nb Nb +1
Finsi
Fin pour
Retourne Nb
Fin
Exercice 4
Algorithme
Début
Saisir(n)
Remplir(T,N)
Affiche_epuise(T,N)
Affiche_TUN(T,N)
Affiche_perime(T,N)
Fin
T .D.N.T.
date = enregistrement
jour, mois, année : entier
fin
produit = enregistrement
code, nom : chaine
qte : entier
DLC : date
fin
Tab : tableau de 10 produit
Faten BEN ALI
2
Procedure saisie ( @N: entire)
Debut
Repeter
Lire(N)
Jusqu’a (3 <= N <=10)
fin
Procedure remplir(@T : Tab, N : entier)
Debut
Pour i de 0 à N-1 FAIRE
Répéter
Lire(T[i].code)
Jusqu’à long(T[i].code)=13 et (estnum(T[i].code))
Et valide(T[i].code)
Répéter
Lire(T[i].nom)
Jusqu’à T[i].nom "" (long(T[i].nom) 0)
Répéter
Lire(T[i].qte)
Jusqu’à T[i].qte >=0
Répéter
Lire(T[i].DLC.jour)
Lire(T[i].DLC.mois)
Lire(T[i].DLC.annee)
Jusqu’à 1<= T[i].DLC.jour<=30 et 1<= T[i].DLC.jour<=12 et
T[i].DLC.annee>=2022
Finpr
Fin
Fonction valide (cde : chaine) : booleen
Début
Q souschaine(cde,0,12)
Cc cde[12]
S0
Pour i de 0 à long(Q)- 1 faire
Si (i+1) mod 2 =0 alors
S S+ 3 * Valeur(Q[i])
Sinon
S S + Valeur(Q[i])
Finsi
finpr
r S Mod 10
p 10 – r
retourner p = Cc
fin
procedure affiche_epuise(T : Tab, N : entier)
début
pour i de 0 à N-1 faire
si T[i].qte = 0 ALORS
ecrire(T[i].code, T[i].nom)
Faten BEN ALI
3
finsi
finpr
fin
procedure affiche_TUN (T : Tab, N : entier)
début
nb 0
pour i de 0 à N-1 faire
si souschaine(T[i].code,0,3) ="619" ALORS
nb nb+1
finsi
finpr
ecrire(nb," produits fabriqués en tunisie")
fin
procedure affiche_perime(T : Tab, N : entier)
début
pour i de 0 à N-1 faire
si T[i].DLC.annee <2023 OU
T[i].DLC.annee =2023 et T[i].DLC.mois <3 ou
T[i].DLC.annee=2023 et T[i].DLC.mois=3 et T[i].DLC.jour<8 ALORS
ecrire(T[i].code, T[i].nom)
finsi
finpr
fin
Faten BEN ALI
4