(Corrigé) Série 3ème scientifiques
Les structures de contrôle itératives (La boucle Pour)
Correction de la série
Série d’exercices – Informatique -3ème Maths et Techniques
Les structures de contrôle itératives
Exercice 6: Écrivez un programme qui saisit un entier n suivi de n noms à mettre dans un tableau MN. Il cherche à partir de la fin du tableau, tous les noms commençant par “R” et les affiches. (On suppose que la saisie est en majuscule). |
Algorithme : 0) Début exercice6 1) Ecrire("n=") , lire(n) 2) Pour i de 1 à n faire Ecrire("MN[" ,i, "]= ") , lire (MN[i]) FinPour 3) Pour i de n à 1 (pas= -1) faire Si MN[i][1]="R" alors Ecrire(MN[i]) FinSi FinPour 4) Fin Exercice6 |
En pascal program exercice6; uses wincrt; var MN : array[1..10] of string ; n , i : integer ; Begin write('n='); readln(n); For i:=1 to n do Begin Write('mn[', i ,']='); readln(mn[i]); End; For i:=n downto 1 do If mn[i][1]='R' then writeln(mn[i]); End. |
Autre méthode Exercice 6 : En utilisant la fonction prédéfinie pos
Algorithme : 0) Début exercice6 1) Ecrire("n=") , lire(n) 2) Pour i de 1 à n faire Ecrire("MN[" ,i, "]= ") , lire (MN[i]) FinPour 3) Pour i de n à 1 (pas= -1) faire Si pos("R" , MN[i])=1 alors Ecrire(MN[i]) FinSi FinPour 4) Fin Exercice6 |
En pascal program exercice6; uses wincrt; var MN : array[1..10] of string ; n , i : integer ; Begin write('n='); readln(n); For i:=1 to n do Begin Write('mn[', i ,']='); readln(mn[i]); End; For i:=n downto 1 do If pos('R',mn[i])=1 then writeln(mn[i]); End. |
Exercice 8: Ecrire un programme qui permet d’afficher un nombre x à la puissance n (avec x et n à saisir) . X=5 n=3 donne p=xn=53=5*5*5 |
Algorithme : 0)Début puissance 1) Ecrire("x=") , lire(x) 2) Ecrire("n=") , lire(n) 3) [p ←1] pour i de 1 à n faire P ←p*x Fin pour 4) Ecrire (x , "à la puissance ", n , "=" , p) 5)Fin puissance
|
En pascal program puissance; uses wincrt; var p,x,n,i : integer; begin write('x='); readln(x); write('n='); readln(n); p:=1; for i:=1 to n do p:=p*x; writeln(x , ' à la puissance ', n , ' = ' , p) ; end. |
Exercice 9: Ecrire un programme qui permet d’afficher la table de multiplication d’un entier donné n. Exemple : pour n=8 Table de multiplication pour : 8 1 x 8 = 8 2 x 8 = 16 ... 10 x 8 = 80 |
Algorithme : 0) Début ex9 1) Ecrire("n=") , lire(n) 2) Ecrire("Table de multiplication pour : ", n) 3) Pour i de 1 à 10 faire Ecrire(i , " x ", n, " = ", i*n) Fin pour 4) Fin Ex9 |
En pascal: program multiplication; uses wincrt; var i,n:integer; begin write('n='); readln(n); writeln('Table de multiplication pour : ', n); for i:=1 to 10 do writeln(i:2, ' x ', n ,' = ',i*n); end. |
Exercice 10: Ecrire un programme pascal pour chaque figure suivante : pour n=5 |
Exercice 10: Program ex10; Uses wincrt; Var I,n :integer ; Begin write('n='); readln(n); writeln('**********'); for i:=1 to n-2 do writeln('* *'); writeln('**********'); end. |
Exercice 10 : triangle Program ex10triangle; Uses wincrt; Var I,j,n :integer ; Begin write('n='); readln(n); for i:=1 to n do begin for j:=1 to i do write(‘*’); writeln; end; end. |
Exercice 10 : triangle2 Program ex10triangle2; Uses wincrt; Var i,j,k,n :integer ; Begin write('n='); readln(n); for i:=1 to n do begin for k:=1 to n-i do write(' '); for j:=1 to 2*I-1 do write('*'); writeln; end; end. |
Exercice 11 : Écrivez un programme qui saisit une chaîne de caractères, la renverse et la mettre dans une deuxième chaîne puis il affiche les deux sur deux lignes successives. |
Algorithme : 0) Début excercice11 1) Ecrire("ch1=") , lire(ch1) 2) [ch2 ← ""] pour i de long(ch1) à 1 (pas=-1) faire Ch2 ←ch2+ch1[i] Fin pour 3) Ecrire ( "chaine1 = " , ch1) 4) Ecrire ( "Inverse chaine1 = " , ch2) 5) Fin exercice11 |
En pascal program ex11; uses wincrt; var i : integer; ch1,ch2 : string; begin write('ch1='); readln(ch1); ch2:= ''; for i:=length(ch1) downto 1 do ch2:=ch2+ch1[i]; writeln('chaine1 =',ch1); writeln('Inverse chaine1=', ch2); end. |
Exercice 12 : Un programme qui permet de saisir un mot en majuscule puis le convertir en minuscule sauf le premier caractère puis l’affiche. |
Algorithme : 0) Début excercice12 1) Ecrire("ch=") , lire(ch) 2) Ecrire(ch[1]) 3) [] pour i de 2 à long(ch) faire Ecrire(chr( ord(ch[i])+32 ) Fin pour 4) Fin exercice12 |
En pascal program ex12; uses wincrt; var i : integer; ch : string; begin write('ch='); readln(ch); write(ch[1]); for i:=2 to length(ch) do write(chr( ord(ch[i])+32 ) ); end. |
Autre méthode Exercice 12 : Modification sur la chaîne CH
Algorithme : 0) Début excercice12 1) Ecrire("ch=") , lire(ch) 2) [] pour i de 2 à long(ch) faire ch[i] ←chr( ord(ch[i])+32 ) Fin pour 3) Ecrire(ch) 4) Fin exercice12 |
En pascal program ex12; uses wincrt; var i : integer; ch : string; begin write('ch='); readln(ch); for i:=2 to length(ch) do ch[i]:=chr( ord(ch[i])+32 ) ; writeln(ch); end. |
Exercice 13: Ecrire un programme qui permet de saisir une chaine Ch puis une lettre L ensuite calcul et affiche le nombre d’occurrence de L dans Ch |
Algorithme : 0) Début excercice13 1) Ecrire("ch=") , lire(ch) 2) Ecrire("L=") , lire(L) 3) [nb ←0] pour i de 1 à long(ch) faire Si ch[i]=L alors nb ←nb+1 Fin pour 4) Ecrire("Le nbre d’occurrence de ",L , "dans ", ch ,"est ", nb) 5) Fin exercice13
|
En pascal program ex13; uses wincrt; var i,nb : integer; ch : string; L :char ; begin write('ch='); readln(ch); write('L='); readln(L); nb:=0; for i:=1 to length(ch) do if ch[i]=L then nb := nb+1; writeln(' Le nbre d’’occurrence de ',L , ' dans ', ch , ' est ', nb) end. |
Exercice 14: Écrivez un programme qui saisit un entier positif n et détermine s'il est ou non premier. (Un entier autre que 1 est premier s'il n'est divisible que par 1 et par lui même.) |
Algorithme : 0) Début excercice14 1) Ecrire("n=") , lire(n) 2) [nb ←0] pour i de 1 à n faire Si n mod i=0 alors nb nb+1 Fin pour 3) Si nb=2 alors Ecrire(n ,"est premier") Sinon Ecrire(n ,"n’est pas premier") 4) Fin exercice14 |
En pascal program ex14; uses wincrt; var i,nb,n : integer; begin write('n='); readln(n); nb:=0; for i:=1 to n do if n mod i=0 then nb:=nb+1; if nb=2 then writeln(n, ' est premier' ) else writeln(n, ' n''est pas premier' ); end. |
Exercice 15: Écrivez un programme qui cherche et affiche les 100 premiers entiers naturels premiers. |
Algorithme : 0) Début excercice15 1) Pour j de 1 à 100 faire [nb ←0] pour i de 1 à j faire Si j mod i=0 alors nb ←nb+1 Fin pour Si nb=2 alors Ecrire(j) finSi finpour 2) Fin exercice15 |
En pascal program ex14; uses wincrt; var i,nb,j : integer; begin for j:=1 to 100 do begin nb:=0; for i:=1 to j do if j mod i=0 then nb:=nb+1;
if nb=2 then write(j:3); end ; end. |