Pagini recente » Diferente pentru problema/logic intre reviziile 3 si 4 | Diferente pentru problema/mergeheap intre reviziile 17 si 11 | Diferente pentru problema/mergeheap intre reviziile 11 si 12 | Diferente pentru problema/logic intre reviziile 5 si 6 | Diferente pentru problema/logic intre reviziile 2 si 3
Diferente pentru
problema/logic intre reviziile
#2 si
#3
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="logic") ==
Mircea cel Tanar trebuie sa imbunatateasca permanent performantele calculatoarelor pe care le are în gestiune. Se intâmpla cateodata, ca unele componente noi pe care le foloseste sa nu fie compatibile cu vechile calculatoare. Din acest motiv functionarea calculatoarelor „imbunatatite†poate sa nu fie corecta. Pentru a verifica corectitudinea functionarii acestor calculatoare, Mircea isi propune sa le testeze cu ajutorul unui program care verifica echivalenta unor expresii logice.
Mircea cel Tanar trebuie sa imbunatateasca permanent performantele calculatoarelor pe care le are în gestiune. Se intâmpla cateodata, ca unele componente noi pe care le foloseste sa nu fie compatibile cu vechile calculatoare. Din acest motiv functionarea calculatoarelor �imbunatatite� poate sa nu fie corecta. Pentru a verifica corectitudinea functionarii acestor calculatoare, Mircea isi propune sa le testeze cu ajutorul unui program care verifica echivalenta unor expresii logice.
Scrieti un program care determina daca doua expresii logice sunt echivalente sau nu.
Fiecare expresie este formata din:
* variabile, cele 26 de litere mici ale alfabetului englez, de la ’a’ – ’z’;
* variabile, cele 26 de litere mici ale alfabetului englez, de la �a� � �z�;
* operatori binari |, &, ^ (SAU, SI respectiv SAU EXCLUSIV);
* operatorul unar ~ (NEGATIE);
* paranteze rotunde.
Expresiile vor fi evaluate respectand regulile de prioritati ale operatorilor si parantezelor pentru evaluarea expresiilor logice in care intervin ca operanzi bitii 0 şi 1. Prioritatile in ordine descrescatoare sunt: parantezele rotunde ’(’, ’)’, operatorul unar ’~’, operatorii binari in ordine descrescatoare ’&’, ’^’, ’|’.
Expresiile vor fi evaluate respectand regulile de prioritati ale operatorilor si parantezelor pentru evaluarea expresiilor logice in care intervin ca operanzi bitii 0 �i 1. Prioritatile in ordine descrescatoare sunt: parantezele rotunde �(�, �)�, operatorul unar �~�, operatorii binari in ordine descrescatoare �&�, �^�, �|�.
Doua expresii sunt echivalente daca:
* contin acelasi set de variabile indiferent de numarul de aparitii a variabilei in expresie;
* pentru orice set de date de intrare pentru variabile (valori 0, 1) rezultatul obtinut este acelasi.
h2. Date de iesire
Fisierul de iesire logic.out va contine n linii, pe fiecare linie k fiind mesajul „egale†sau „diferite†in functie de rezultatul evaluarii expresiilor de pe liniile 2*k si respectiv 2*k+1 din fisierul de intrare.
Fisierul de iesire logic.out va contine n linii, pe fiecare linie k fiind mesajul �egale� sau �diferite� in functie de rezultatul evaluarii expresiilor de pe liniile 2*k si respectiv 2*k+1 din fisierul de intrare.
h2. Restrictii
h2. Exemplu
table(example). |_. logic.in |_. logic.out |_. Explicatie|
| 4
| @4
a&(c|~c)
a
~(a|b|c|d)
z&b
a&b
a|b
(a|~a)&(a|~a)&(a|~a)&(a|b)
(a|~a)&(a|~a)&(a|~a)&(a|b)@
|diferite
egale
diferite
egale
| Pentru ultimul set de expresii tabelul este:
@
a b ~a a|~a (a|~a)&(a|~a)&(a|~a) a|b E
0 0 1 1 1 0 0
0 1 1 1 1 1 1
1 0 0 1 1 1 1
1 1 0 1 1 1 1
unde E=(a|~a)&(a|~a)&(a|~a)&(a|b)
unde E=(a|~a)&(a|~a)&(a|~a)&(a|b) @
|
== include(page="template/taskfooter" task_id="logic") ==
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.