.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » pcod

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
.campion
pcod


Timp maxim de executie/test:
0.4 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

Ionel si-a definit, intr-un moment de plictiseala, urmatorul limbaj pseudocod simplificat.
Identificatorul unei variabile este reprezentat de o litera mica a alfabetului englez. Valorile unei variabile sunt numere intregi de maxim 9 cifre.
Variabilele trebuie definite inainte de utilizare printr-o operatie de atribuire.
Constantele sunt numere intregi de maxim 9 cifre.

Operatiile permise sunt :
Atribuire :
let v = const

(variabila v ia valoarea constantei const )
Afisare:
write v
(afiseaza valoarea variabilei v; este echivalenta cu writeln(v) sau cout<<v<<'\n'; sau printf("%ld\n",v);)
Incrementare:
inc a, b
(valoarea variabilei a se mareste cu valoarea variabilei b)
Ciclu cu test initial:
while a < b
    instructiune_1
    instructiune_2
    ...
    instructiune_n
endwhile
(cat timp expresia a<b este adevarata se executa instructiunile instructiune_1, . . . , instructiune_n )
unde:
   a, b - variabile
   const - constanta
instructiune_1, instructiune_2,. . ., instructiune_n - orice operatie permisa (let, write, inc sau while)

Din punct de vedere sintactic, Ionel scrie algoritmi corecti, doar cuvantul cheie endwhile ii creeaza probleme frecvente (il plaseaza gresit sau il foloseste de mai multe/putine ori decat trebuie). De asemenea, Ionel uita sa defineasca toate variabilele pe care le utilizeaza.

Cerinta

Scrieti un program care sa interpreteze algoritmii scrisi in limbajul pseudocod simplificat, determinind eventualele erori pe care le contin.

Date de intrare

Fisierul de intrare pcod.in contine un algoritm scris in limbajul pseudocod simplificat.
Instructiunile sunt scrise doar cu litere mici si pot contine oricate spatii separatoare.
Fiecare instructiune este scrisa pe o singura linie, cu exceptia instructiunii while, care se scrie pe mai multe linii.

Date de iesire

Fisierul de iesire pcod.out va contine datele afisate de algoritm. Daca este detectata o eroare se va afisa mesajul de eroare corespunzator, iar interpretarea algoritmului se incheie. In acest caz, fisierul de iesire va contine doar mesajul de eroare.
Mesajele de eroare pot fi:

  • undefined symbol
    (cu semnificatia: s-a utilizat o variabila nedefinita)
  • nesting error
    (cu semnificatia: eroare la imbricarea instructiunilor while)
  • runtime error
    (cu semnificatia:
    algoritmul cicleaza infinit)

Restrictii

  • Numarul de linii dintr-un algoritm este intre 1 si 100, inclusiv .
  • Se garanteaza ca o linie a algoritmului nu depaseste 30 de caractere.
  • Valorile obtinute in urma efectuarii operatiilor descrise in algoritm sunt numere intregi de maxim 9 cifre.
  • Fiecare linie scrisa in fisierul de iesire se va termina cu marcajul de sfarsit de linie.
  • Intr-un algoritm nu pot aparea alte erori decat cele specificate in enunt.

Exemple

pcod.in

pcod.out

Explicatii

let s = 0
let p= 1
let t=1
inc t,p
inc s,t
write s
write w

undefined symbol

se detecteaza o variabila (w) nedeclarata

let p=1
let s=0
let n=4
let t=1
while t<n
    inc s,t
    inc t,p
endwhile
write s
write n

6
4

 

let p=1
let s=0
let n=4
let t=1
while t<n
    inc s,t
endwhile
write s

runtime error

Algoritmul cicleaza la infinit deoarece valoarea variabilei t nu se modifica in timpul executiei

let x=2
let y=0
let z=0
while y<x
   inc y,x
   let z=0
   while z<x
      inc z,x
   endwhile
write y

nesting error

Primul ciclu while nu are un corespondent endwhile

 

prof. Alin Burta
Colegiul National "B.P. Hasdeu" Buzau
Contact: allbu2003@yahoo.com

 

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2005: cuc, prime, radio, text2, honest, police, comori, patrate3, fisc, ref, zmeu, loc, nr01, scor2, judete, strict, convert, bile3, cod2, depou, auto2, tree, cat, nr3, chimie2, compress, jobs, leaves, zid, politics, onu2, ploaia, grazing, pstring, cartonase2, exp, cartoane, sir3, program, scoici, playlist, sqr, cai1, farfurii, joc1, trafic, carte, set, barbie, labirint, firma1, vile, game, donald, ambigram, dans, albinuta, rlcs, stea, submatrix, cub1, ham, sponsori, young, jokes, pizza1, albine, lot, atac1, monede1, count, exam, herbert, sudoku, bio, metro
De acelaşi autor: picnic, expresie, origami, magic3, suma, race, balls, cat, cai1, cub1, cifru, cuburi2, cub2, adun, dir, atac2, comp, mxl, joc19, cifru5, gradina1, joc21
Despre graf: gropi, tgv, matrice2, miniasm, picnic, mere, circuit, soldati, arce, conflicte, desen, robot, furtuna, net, cuvinte, excursie, cadere, pioni, reinvent, kreg, flood, croco, johnie, matrice, arthur, kimberley, ro, sol, caravane, bete, honest, police, zmeu, auto2, grazing, datorii, trafic, sponsori, monede1, apm, bile1, caini, masina1, bomboane, turn1, shgraf, paintball, program1, tgraf, kgb, algola, felinar, joc6, tric, homeless, promo, turism, casute, joc10, prieteni1, traseu, zapezi, litoral, lover, trip, garaj, ziduri, tv, pact, echipe1, vitale, spion, trasee, bcolor, scara2, lant, ab3, soc, team, gard, rsp, graf, mexc, dep, albinuta1, atac2, cabane, drumuri, tj, grade, jungla, lanterna, magic5, coment, urgenta, fazan, lanturi, cfr, site, traseu1, trmv, graphgame, minuni, telefon, ubergraf, carray, pestera, chei, arbgraf, war, fluviu, drumuri1, entries, ubuntzei, pack, fotbal1, pamant, dag, razboi, benzina2, wg, neconex, asfalt1, kubus2, module, progresii, dfs, prieteni3, megascoala, grafxy, dineu, vot1, biperm, drumuri2, nrgraf, cristal, cartite, copaci3, dragoni, nuclee
surse trimise | ajutor