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 = valoareunde 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.outva conține pe prima linie numărul de comenziSCRIEexecutate. - Dacă cerința este 2, fișierul de ieșire
gcl.outva conține rezultatele afișate de comenzileSCRIEdin 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
ncare apare în comenzileREPETAeste un număr natural,0 ≤ n ≤ 10. - Nu pot exista comenzi
REPETAimbricate. Mai exact, după comandaREPETAși până la comandaSTOPcare
marchează sfârșitul comenziiREPETAnu poate apărea o altă comandăREPETA. - Valorile calculate în expresii sunt, la orice moment, numere întregi din intervalul
[-231, 231-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