Detalii evaluare #54982770

Rezumat problemă

#2212 eval

Să considerăm o expresie aritmetică care conţine ca operanzi numai variabile al căror nume este format dintr-o singură literă mică a alfabetului englez. Valorile iniţiale ale variabilelor ce pot interveni în expresie sunt: a = 1, b = 2, …, z = 26. În expresie pot fi utilizaţi doi operatori binari (+ şi , reprezentând adunarea şi respectiv scăderea) şi doi operatori unari (++ şi --, reprezentând operatorul de incrementare şi respectiv operatorul de decrementare). Operatorii unari ++ şi –– pot fi plasaţi numai înainte sau după o variabilă. Dacă operatorul unar ++ apare înaintea unei variabile, atunci valoarea variabilei este mărită cu 1 înainte ca valoarea variabilei să fie luată în calculul expresiei. De exemplu, valoarea expresiei ++c–b este 2, iar valoarea variabilei c după evaluarea expresiei va fi 4. Când operatorul unar ++ apare după variabilă, valoarea variabilei este mărită cu 1 după ce valoarea acelei variabile este folosită la calculul expresiei. De exemplu, valoarea expresiei c++–b este 1, iar valoarea variabilei c după evaluarea expresiei va fi 4. Operatorul –– se comportă la fel, cu observaţia că valoarea variabilei se va micşora cu 1. Operatorii unari au prioritate mai mare decât cei binari (mai exact, se execută mai întâi incrementările/decrementările, apoi adunările şi scăderile). În cazul în care există mai multe operaţii cu aceeaşi prioritate, acestea vor fi executate în ordine, de la stânga la dreapta. Scrieţi un program care să determine valoarea unei expresii, precum şi valorile finale ale variabilelor folosite în expresie.

Olimpiada Municipala de Informatica, Iasi, 2007

Detalii

Problema eval Operații I/O eval.in/eval.out
Limita timp 0.5 secunde Limita memorie Total: 64 MB / Stivă 8 MB
Id soluție #54982770 Utilizator Tudor Ilinca (IlincaTudor1)
Fișier eval.cpp Dimensiune 1.26 KB
Data încărcării 14 Decembrie 2024, 19:34 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

eval.cpp: In function 'void eliminare()':
eval.cpp:13:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < s.length(); i++)

                                 ^
eval.cpp:17:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while(j + 1 < s.length() && s[j+1] == ' ')

                                    ^
eval.cpp: In function 'int main()':
eval.cpp:27:12: warning: array subscript has type 'char' [-Wchar-subscripts]
         V[c] = c - 'a' + 1;

            ^
eval.cpp:31:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < s.length(); i++)

                                 ^
eval.cpp:34:58: warning: array subscript has type 'char' [-Wchar-subscripts]
             if(s[i+1] == '+' && islower(s[i+2])) V[s[i+2]]++, i++;

                                                          ^
eval.cpp:37:58: warning: array subscript has type 'char' [-Wchar-subscripts]
             if(s[i+1] == '-' && islower(s[i+2])) V[s[i+2]]--, i++;

                                                          ^
eval.cpp:41:19: warning: array subscript has type 'char' [-Wchar-subscripts]
             F[s[i]] = 1;

                   ^
eval.cpp:42:37: warning: array subscript has type 'char' [-Wchar-subscripts]
             if(u == '+') e += V[s[i]];

                                     ^
eval.cpp:43:29: warning: array subscript has type 'char' [-Wchar-subscripts]
             else e -= V[s[i]];

                             ^
eval.cpp:44:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(i + 2 < s.length())

                                 ^
eval.cpp:45:58: warning: array subscript has type 'char' [-Wchar-subscripts]
                 if(s[i+2] == '+' && s[i+1] == '+') V[s[i]]++, i+=2;

                                                          ^
eval.cpp:46:63: warning: array subscript has type 'char' [-Wchar-subscripts]
                 else if(s[i+2] == '-' && s[i+1] == '-') V[s[i]]--, i+=2;

                                                               ^
eval.cpp:44:15: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
             if(i + 2 < s.length())

               ^
eval.cpp:51:15: warning: array subscript has type 'char' [-Wchar-subscripts]
         if(F[c] == 1)

               ^
eval.cpp:52:24: warning: array subscript has type 'char' [-Wchar-subscripts]
             fout << V[c] << "\n";

                        ^

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
0 0 secunde OK. 5 5
1 0 secunde OK. 5 5
2 0 secunde OK. 5 5
3 0 secunde OK. 5 5
4 0 secunde OK. 5 5
5 0 secunde OK. 5 5
6 0 secunde OK. 5 5
7 0 secunde OK. 5 5
8 0 secunde OK. 5 5
9 0 secunde OK. 5 5
10 0 secunde OK. 5 5
11 0 secunde OK. 5 5
12 0 secunde OK. 5 5
13 0 secunde OK. 5 5
14 0 secunde OK. 5 5
15 0 secunde OK. 5 5
16 0 secunde OK. 5 5
17 0 secunde OK. 5 5
18 0 secunde OK. 5 5
19 0 secunde OK. 5 5
Punctaj total 100

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema eval face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.