Corrigé C2. Enoncé
Aspect algorithmique
A-a) S Somme des nombres positifs et celle des nombres négatifs
ALGORITHME Somme
VAR N, Somp, Somn, I, Nombre : ENTIER
DEBUT
LIRE (N)
POUR I=1, N
LIRE(Nombre)
SI Nombre > 0 :
Somp := Somp + Nombre
SINON
Somn := Somn + Nombre
FSI
FINPOUR
ECRIRE (Somp, Somn)
FIN
A-b) Nombre de sous-suites croissantes
ALGORITHME Nombre
VAR N, Prec, Nbre, Nb, I : ENTIER
DEBUT
Nb := 1
LIRE(N) ; LIRE(Prec)
POUR I=2, N
LIRE(Nbre)
SI Prec < Nbre :
Nb := Nb + 1
FSI
Prec := Nbre
FINPOUR
ECRIRE( Nbre )
FIN
B. Recherche des nombres amis inférieurs à 1000.
ALGORITHME Amis
VAR I, J, K, A, N : ENTIER
DEBUT
POUR I=1, 1000 :
POUR J= I, 1000 :
A := I2 + J2
{ Est-ce un carré parfait ? }
N := A DIV 2
Carré := FAUX
K := 1
TANTQUE K <= N ET NON Carré
SI K2 = A :
ECRIRE(I, J)
Carré := VRAI
FSI
K := K + 1
FINTANTQUE
FINPOUR
FINPOUR
FIN
2. Aspect Programmation
2-a) Traduction de B)
PROGRAM Amis;
VAR I, J, K, A, N : INTEGER;
Carre : BOOLEAN;
BEGIN
FOR I:=1 TO 1000 DO
FOR J:= I TO 1000 DO
BEGIN
A := SQR(I) + SQR(J);
{ Est-ce un carré parfait ? }
N := A DIV 2;
Carre := FALSE;
K := 1;
WHILE( K <= N AND NOT Carre ) DO
BEGIN
IF SQR(K) = A THEN
BEGIN
WRITELN(I, J);
Carre := TRUE
END;
K := K + 1
END
END
END.
2-b) Impression du dessin :
PROGRAM Triangle;
VAR N, I, J : INTEGER ;
BEGIN
READ(N);
WRITELN('*', 21);
WRITELN('**', 22);
FOR I:=1 TO N DO
BEGIN
WRITE('*': 21);
FOR J:=1 TO I DO WRITE(I:1);
WRITELN('*');
END
END.