Georgel scrie un algoritm care conţine structuri de atribuire, alternative, de selecţie, repetitive şi compuse. După scrierea algoritmului vrea să-l testeze pentru toate cazurile posibile. Pentru aceasta trebuie să cunoască numărul minim de date de test necesare.
Pentru descrirea structurilor se utilizează următoarele cuvinte cheie:
- pentru atribuire
ATRIB
 - pentru alternativă
DACAATUNCIALTFEL(undeALTFELpoate lipsi)
 - pentru selecţie ALEGE
CAZCAZ_IMPLICIT(undeCAZ_IMPLICITpoate lipsi)
 - pentru repetitive
CAT_TIMPREPETAPANA_CANDPENTRU
 - pentru compusă
INCEPUTSFARSIT
 
Nu se face diferenţă între literele mari şi literele mici. Un algoritm începe cu cuvântul cheie INCEPUT, se termină cu SFARSIT şi nu conţine structuri vide. De asemenea o structură compusă începe cu cuvântul cheie INCEPUT şi se termină cu SFARSIT.
Cerinţă
Să se calculeze numărul minim de date de test necesare pentru verificarea algoritmului.
Date de intrare
Din fişierul text algor.in se citeşte algoritmul care conţine pe o linie un singur cuvânt cheie. Nu există linii vide. Algoritmul respectă principiile programării structurate şi este scris corect.
Date de ieșire
În fişierul algor.out se va scrie pe prima linie numărul minim de date de test necesare pentru verificarea algoritmului. Verificarea se bazează pe principiul “cutiei transparente”, ceea ce înseamnă că testele se compun astfel încât să fie posibilă executarea algoritmului pe toate ramurile posibile. De exemplu, în cazul unei structuri repetitive CAT_TIMP care conţine în corpul său un singur ATRIB, un test vizează o execuţie fără să se intre în corpul structurii, altul pentru a trece cel puţin o dată şi prin corpul acestuia. În mod similar se tratează şi structura PENTRU.
Restricții și precizări
- După cuvintele cheie 
ATUNCI,ALTFEL,CAZ,CAZ_IMPLICIT,CAT_TIMP,REPETA,PENTRUtrebuie să existe obligatoriu o structură de atribuire, alternativă, de decizie, repetitivă sau compusă. - Algoritmul are cel mult de instructiuni.
 
Exemplul 1
algor.in
INCEPUT
atrib
DACA
atunci
ATRIB
SFARSIT
algor.out
2
Exemplul 2
algor.in
INCEPUT 
ATRIB
REPETA
inceput
atrib
atrib
SFARSIT
SFARSIT
algor.out
1
Explicație
REPETA se execută cel puţin o dată
Exemplul 3
algor.in
INCEPUT 
ATRIB 
ALEGE 
CAZ
ATRIB
CAZ
INCEPUT
ATRIB
ATRIB
SFARSIT
SFARSIT
algor.out
3
Explicație
- se execută 
ATRIBde la primulCAZ - se execută 
ATRIBde la al doileaCAZ - nu se execută nici primul 
CAZ, nici al doilea 
Exemplul 4
algor.in
INCEPUT
ATRIB 
ALEGE 
CAZ
ATRIB
CAZ
ATRIB
CAZ_IMPLICIT
ATRIB
SFARSIT
algor.out
3
Explicație
- se execută 
ATRIBde la primulCAZ - se execută 
ATRIBde la al doileaCAZ - se execută 
ATRIBde laCAZ_IMPLICIT 
Exemplul 5
algor.in
INCEPUT 
atrib 
DACA 
ATUNCI 
ATRIB
ALTFEL
ATRIB
pentru
atrib
SFARSIT
algor.out
4
Explicație
- se execută 
ATUNCIşiPENTRU - se execută 
ATUNCIşi nu se execută PENTRU` - se execută 
ALTFELşiPENTRU - se execută 
ALTFELşi nu se executăPENTRU 
Exemplul 6
algor.in
INCEPUT
PENTRU
INCEPUT
ATRIB
daca
atunci
atrib
altfel
INCEPUT
DACA
ATUNCI
ATRIB
DACA
ATUNCI
ATRIB
ALTFEL
ATRIB
SFARSIT
SFARSIT
SFARSIT
algor.out
6