3191 - BrokenKeyboard
Context[edit | edit source]
Dennis R. este elev în clasa a 10-a și tocmai ce a primit prima sa tema la programare: să implementeze un program care să calculeze suma sau diferența a două cifre primite de la tastatură. La nici 2 minute după ce a început tema observă că i s-a stricat tastatura și nu mai poate scrie caracterul ;. Determinat să facă tema în ciuda acestui mic impediment observă că acesta este un caracter destul de important și nu reușește să compileze fără el. Ca orice student care simte cum se apropie deadline-ul și nu reușește să termine tema întreabă un prieten, în acest caz pe fratele său mai mare, Ken T., student la Poli care are ceva experiență cu dezvoltarea unui sistem. Acesta acceptă provocarea de a termina programul fără niciun ;.
Cerinţa[edit | edit source]
Terminați funcția de mai jos făra a mai folosi niciun ;.
<syntaxhighlight lang="python" line> void sumdif() { int rez = 0; //citire //afisare } </syntaxhighlight>
Date de intrare[edit | edit source]
Prin funcție se vor citi de la tastatură o cifră,+/-, și o altă cifră, în această ordine.
Date de ieșire[edit | edit source]
Prin funcție se va afișa rezultatul obținut. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".
Restricţii şi precizări[edit | edit source]
- 0 ⩽ cifra ⩽ 9
- Implementați programul descris mai sus pornind de la scheletul de cod dat fără a mai folosi caracterul ; în cod. Funcția trebuie să conțină ; maxim o singură dată. Nu încercați șmecherii pentru că veți lua 0 puncte :).
Exemplu 1[edit | edit source]
- Intrare
- 3+5
- Ieșire
- 8
Exemplu 2[edit | edit source]
- Intrare
- 10+1
- Datele de intrare nu corespund restricțiilor impuse.
Exemplu 3[edit | edit source]
- Intrare
- 2-6
- Ieșire
- -4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def sumdif():
rez = 0
# Citirea datelor de intrare input_data = input("Introduceti o cifra, un operator (+/-) si inca o cifra: ")
# Verificare lungime corecta a input-ului if len(input_data) != 3: print("Datele de intrare nu corespund cerintelor impuse.") return
# Extrage cifra1, operatie si cifra2 cifra1 = int(input_data[0]) operatie = input_data[1] cifra2 = int(input_data[2])
# Verificare cifre if not (0 <= cifra1 <= 9) or not (0 <= cifra2 <= 9): print("Datele de intrare nu corespund cerintelor impuse.") return
# Verificare și calcul if operatie == '+': rez = cifra1 + cifra2 elif operatie == '-': rez = cifra1 - cifra2 else: print("Operatorul introdus nu este valid.") return
# Afisare rezultat print("Rezultatul operatiei este:", rez)
if __name__ == "__main__":
sumdif()
</syntaxhighlight>