Première partie (ne donne pas la bonne réponse

This commit is contained in:
rick 2021-03-07 14:47:55 +01:00
parent 3f75383e35
commit dc9887ebd9
Signed by: Rick
GPG key ID: 2B593F087240EE99

View file

@ -1,5 +1,5 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. jour-cinq-prem-part.
PROGRAM-ID. jour-cinq-prem-part.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
@ -8,6 +8,7 @@
ORGANIZATION LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FILE1.
01 INPUT-FILE.
@ -15,25 +16,83 @@
WORKING-STORAGE SECTION.
01 MY-FILE.
02 STR PIC A(17).
01 WS-STATUS PIC X VALUE 'N'.
02 MY-STR PIC A(17).
01 FILE-STATUS PIC X VALUE 'N'.
88 EOF VALUE 'Y'.
77 NB-NICE PIC 9(4) VALUE 0.
PROCEDURE DIVISION.
main.
main.
OPEN INPUT FILE1.
PERFORM UNTIL EOF
READ FILE1 RECORD INTO MY-FILE
AT END MOVE 'Y' TO WS-STATUS
NOT AT END DISPLAY MY-FILE
AT END MOVE 'Y' TO FILE-STATUS
NOT AT END CALL "parse-str" USING
BY CONTENT MY-STR,
BY REFERENCE NB-NICE
END-CALL
END-READ
END-PERFORM.
DISPLAY "Nombre de bonnes chaines : " NB-NICE.
CLOSE FILE1.
STOP RUN.
END PROGRAM jour-cinq-prem-part.
*deuxième étape, lire car par car
*troisième étape, check si voyelle
*retenir lettre act et pred pour check mot interdit
*retenir lettre jusquà double
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. parse-str.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 CHAR PIC A.
88 VOY VALUE 'a','e','i','o','u','y'.
77 I PIC 99.
88 END-P VALUE 17.
77 NB-VOY PIC 99.
77 PRED PIC A.
77 TMP PIC AA.
88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
77 DOUBLE PIC X.
LINKAGE SECTION.
77 STR PIC A(17).
77 NB PIC 9(4).
PROCEDURE DIVISION USING STR, NB.
parse.
MOVE 0 TO NB-VOY.
MOVE 'N' TO DOUBLE.
d DISPLAY STR.
d DISPLAY "=================".
PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
MOVE STR(I:1) TO CHAR
d DISPLAY "ACT. CHAR : " CHAR
d DISPLAY "ACT. PRED : " PRED
d DISPLAY "I : " I
IF VOY
THEN ADD 1 TO NB-VOY
END-IF
IF I >= 2
THEN
STRING PRED CHAR INTO TMP
d DISPLAY "TMP STR : " TMP
IF BAD
THEN
EXIT PERFORM
END-IF
IF PRED = CHAR
THEN
MOVE 'Y' TO DOUBLE
END-IF
d DISPLAY "DOUBLE : " DOUBLE
END-IF
MOVE CHAR TO PRED
END-PERFORM.
IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y'
THEN
ADD 1 TO NB
END-IF.
END PROGRAM parse-str.