Gigel a inventat un nou limbaj de programare pe care l-a numit GCL
(Gigel Campion Language). În GCL
pot fi utilizate maxim 26
variabile notate cu litere mici ale alfabetului englez. Valoarea inițială fiecărei variabile (la începutul execuției programului) este 0
.
Un program în limbajul GCL este format dintr-o succesiune de comenzi, câte o comandă pe o linie.
Comanda | Semnificație |
---|---|
INCEPE |
Marchează începutul programului (apare o singură dată la început). |
var=expresie |
Variabilei var din partea stângă a semnului = i se atribuie valoarea expresiei din partea dreaptă. O expresie este formată din unul sau mai mulți termeni între care poate exista operatorul + sau operatorul – (semnificând adunare, respectiv scădere). Un termen poate fi o constantă, o variabilă sau o variabilă precedată de o constantă (ceea ce semnifică faptul că variabila este înmulțită cu constanta). De exemplu, a = 2b + 4 – c |
REPETA n |
Indică începutul unui bloc de instrucțiuni care se va repeta de n ori. |
STOP |
Indică sfârșitul unui bloc REPETA sau sfârșitul programului |
SCRIE var |
Afișează o linie de forma următoare:var = valoare unde var reprezintă numele variabilei care se scrie, iar valoare reprezintă valoarea variabilei. Semnul = trebuie să fie precedat și urmat de câte un singur spațiu. |
Cerința
Scrieți un program care citește un program scris limbajul GCL și rezolvă următoarele două cerințe:
1. determină numărul de comenzi SCRIE
care se execută;
2. determină rezultatele afișate de comenzile SCRIE
din programul scris în limbajul GCL.
Date de intrare
Fișierul de intrare gcl.in
conține pe prima linie cerința (1 sau 2) apoi, pe liniile următoare un program corect
scris în limbajul GCL.
Date de ieșire
- Dacă cerința este 1, fișierul de ieșire
gcl.out
va conține pe prima linie numărul de comenziSCRIE
executate. - Dacă cerința este 2, fișierul de ieșire
gcl.out
va conține rezultatele afișate de comenzileSCRIE
din programul
scris în limbajul GCL, în ordinea executării acestor comenzi.
Restricții și precizări
- Programul în limbajul GCL va avea maxim 50 de linii de cel mult 100 de caractere.
- Comenzile dintr-un program GCL pot conține oricâte spații, plasate oriunde, dar nu în interiorul cuvintelor cheie (
REPETA
,INCEPE
,STOP
,SCRIE
) și al constantelor. - Constantele care intervin în expresii sunt numere naturale,
0 ≤ constantă ≤ 2000 000 000
. - Numărul
n
care apare în comenzileREPETA
este un număr natural,0 ≤ n ≤ 10
. - Nu pot exista comenzi
REPETA
imbricate. Mai exact, după comandaREPETA
și până la comandaSTOP
care
marchează sfârșitul comenziiREPETA
nu poate apărea o altă comandăREPETA
. - Valorile calculate în expresii sunt, la orice moment, numere întregi din intervalul
[-2
31
, 2
31
-1]
. - Toate cuvintele cheie din comenzile GCL sunt scrise cu litere mari.
- Pentru cerința 1 se acordă 40% din punctaj, iar pentru cerința 2 se acordă 60% din punctaj.
Exemplu 1:
gcl.in
1 INCEPE a = 1 b = a SCRIE a SCRIE b REPETA 10 c = a + b a = b b = c SCRIE c STOP STOP
gcl.out
12
Exemplu 2:
gcl.in
2 INCEPE n = 10 k = 1 REPETA 9 n = n + k SCRIE n k = 3 - k STOP STOP
gcl.out
n = 11 n = 13 n = 14 n = 16 n = 17 n = 19 n = 20 n = 22 n = 23
Exemplu 3:
gcl.in
2 INCEPE x = 1 REPETA 10 x = 2x STOP SCRIE x STOP
gcl.out
x = 1024