Fişierul intrare/ieşire:gcl.in, gcl.outSursăONI 2018 baraj gimnaziu
AutorMarinel SerbanAdăugată defrancuCristian Francu francu
Timp execuţie pe test0.4 secLimită de memorie8192 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise

Gcl (baraj gimnaziu)

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.

ComandaSemnificaţie
INCEPEMarchează începutul programului (apare o singură dată la început).
var=expresieVariabilei 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 nIndică începutul unui bloc de instrucţiuni care se va repeta de n ori.
STOPIndică sfârşitul unui bloc REPETA sau sfârşitul programului
SCRIE varAfiş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ţă

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 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

  • 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ă ≤ 2 000 000 000.
  • Numărul n care apare în comenzile REPETA este un număr natural, 0 ≤ n ≤ 10.
  • 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 [-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.

Exemple

gcl.ingcl.out
1
INCEPE
   a = 1
   b = a
   SCRIE a
   SCRIE b
   REPETA 10
      c = a + b
      a = b
      b = c
      SCRIE c
   STOP
STOP
12
2
INCEPE
   n = 10
   k = 1
   REPETA 9
      n = n + k
      SCRIE n
      k = 3 - k
   STOP
STOP
n = 11
n = 13
n = 14
n = 16
n = 17
n = 19
n = 20
n = 22
n = 23
2
INCEPE
   x = 1
   REPETA 10
      x = 2x
   STOP
   SCRIE x
STOP
x = 1024
Trebuie sa te autentifici pentru a trimite solutii. Click aici