Gigel a inventat un nou limbaj de programare pe care l-a numit GCL (Gigel Campion Language). În GCL pot fi utilizate maxim variabile notate cu litere mici ale alfabetului englez. Valoarea iniţială fiecărei variabile (la începutul execuţiei programului) este . 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 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 | Indică începutul unui bloc de instrucţiuni care se va repeta de 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 reprezintă numele variabilei care se scrie, iar reprezintă valoarea variabilei. Semnul = trebuie să fie precedat şi urmat de câte un singur spaţiu. |
Cerinţă
Scrieţi un program care citeşte un program scris în limbajul GCL şi rezolvă următoarele două cerinţe:
- determină numărul de comenzi SCRIE care se execută;
- 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 ( sau ) 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 comenzi SCRIE executate.
Dacă cerinţa este 2, fişierul de ieşire gcl.out
va conţine rezultatele afişate de comenzile SCRIE din programul scris în limbajul GCL, în ordinea executării acestor comenzi.
Restricții și precizări
- Programul în limbajul GCL va avea maxim de linii de cel mult 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, cuprinse între și .
- Numărul care apare în comenzile REPETA este un număr natural, .
- Nu pot exista comenzi REPETA imbricate. Mai exact, după comanda REPETA şi până la comanda STOP care marchează sfârşitul comenzii REPETA nu poate apărea o altă comandă REPETA.
- Valorile calculate în expresii sunt, la orice moment, numere întregi din intervalul , .
- Toate cuvintele cheie din comenzile GCL sunt scrise cu litere mari.
- Pentru cerința 1 se acordă din punctaj, iar pentru cerința 2 se acordă din punctaj.
Exemplul 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
Exemplul 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
Exemplul 3
gcl.in
2
INCEPE
x = 1
REPETA 10
x = 2x
STOP
SCRIE x
STOP
gcl.out
x = 1024