3191 - BrokenKeyboard

De la Universitas MediaWiki

Context

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

Terminați funcția de mai jos făra a mai folosi niciun ;.

void sumdif()
{
int rez = 0;
//citire
//afisare
}


Date de intrare

Prin funcție se vor citi de la tastatură o cifră,+/-, și o altă cifră, în această ordine.

Date de ieșire

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

  • 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

Intrare
3+5
Ieșire
8


Exemplu 2

Intrare
10+1
Datele de intrare nu corespund restricțiilor impuse.


Exemplu 3

Intrare
2-6
Ieșire
-4


Rezolvare

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