Posté par
caylus caylus
Bonjour,
à titre indicatif confirmant ma réponse, voici un petit programme en qbasic .
DECLARE SUB Test ()
DECLARE FUNCTION InitNb! ()
DECLARE SUB InitCar ()
DECLARE FUNCTION SeeNb$ ()
DECLARE SUB IncNb ()
DECLARE FUNCTION Encore! ()
DECLARE SUB FindCar ()
DECLARE FUNCTION SeeCar$ ()
DIM SHARED nb(6) AS INTEGER
DIM SHARED car(13) AS INTEGER
DIM e AS INTEGER
DIM SHARED t AS INTEGER: t = 1
CLS
e = InitNb
WHILE (e)
IncNb
FindCar
Test
e = Encore
WEND
END
FUNCTION Encore
SHARED nb() AS INTEGER
Encore = (nb(6) = 0)
END FUNCTION
SUB FindCar
SHARED car() AS INTEGER
SHARED nb() AS INTEGER
InitCar
DIM i AS INTEGER, j AS INTEGER, k AS INTEGER, p AS INTEGER, q AS INTEGER, r AS INTEGER, tot AS INTEGER, r2 AS INTEGER, q2 AS INTEGER
FOR i = 0 TO 5
k = i
r = 0
FOR j = 0 TO 5
p = nb(i) * nb(j) + r
r = INT(p / 10)
q = p MOD 10
tot = car(k) + q
q2 = INT(tot / 10)
r2 = tot MOD 10
car(k) = r2
r = r + q2
k = k + 1
NEXT j
car(k) = car(k) + r
NEXT i
END SUB
SUB IncNb
SHARED nb() AS INTEGER
DIM report AS INTEGER: report = 1
DIM i AS INTEGER: i = 0
WHILE (report <> 0)
nb(i) = nb(i) + report
report = INT(nb(i) / 10)
nb(i) = nb(i) MOD 10
i = i + 1
WEND
END SUB
SUB InitCar
SHARED car() AS INTEGER
DIM i AS INTEGER
FOR i = 0 TO 13: car(i) = 0: NEXT i
END SUB
FUNCTION InitNb
SHARED nb() AS INTEGER
DIM i AS INTEGER
FOR i = 0 TO 4: nb(i) = 0: NEXT i: nb(5) = 1
'nb(0) = 4:nb(1) = 2:nb(2) = 6:nb(3) = 0:nb(4) = 9:nb(5) = 8:nb(6) = 0
'nb(0) = 5:nb(1) = 7:nb(2) = 3:nb(3) = 9:nb(4) = 0:nb(5) = 1:nb(6) = 0
InitNb = -1
END FUNCTION
FUNCTION SeeCar$
SHARED car() AS INTEGER
DIM i AS INTEGER
DIM mot AS STRING
mot = ""
FOR i = 12 TO 0 STEP -1
mot = mot + CHR$(car(i) + 48)
NEXT i
SeeCar$ = mot
END FUNCTION
FUNCTION SeeNb$
SHARED nb() AS INTEGER
DIM i AS INTEGER
DIM mot AS STRING
FOR i = 5 TO 0 STEP -1
'PRINT i
mot = mot + CHR$(nb(i) + 48)
NEXT i
SeeNb$ = mot
END FUNCTION
SUB Test
SHARED t AS INTEGER
DIM equal AS INTEGER
equal = (car(0) = nb(0)) AND (car(1) = nb(1)) AND (car(2) = nb(2)) AND (car(3) = nb(3)) AND (car(4) = nb(4)) AND (car(5) = nb(5))
LOCATE 1, 10: PRINT "Nb="; SeeNb$
'LOCATE t, 30: PRINT "car="; SeeCar$
IF equal THEN
LOCATE t, 30: PRINT "bon car="; SeeCar$
t = t + 1
END IF
END SUB