2641 - AF
Sursa: 0161 - inlocuire
Cerinţa
Gigel are ca temă la matematică să precizeze valoarea de adevăr a unor expresii de forma nr1 semn nr2 = nr3, unde nr1, nr2 și nr3 sunt numere naturale, iar semn poate fi +, -, x sau : reprezentând adunarea, scăderea, înmulțirea și împărțirea. Ajutați-l pe Gigel să rezolve tema la matematică.
Date de intrare
Fișierul de intrare af.in conține pe prima linie numărul de expresii n, iar pe următoarele n linii cele n expresii. Cele trei numere, semnul operației și egal sunt separate câte un spațiu.
Date de ieșire
Fișierul de ieșire af.out va conține pe fiecare linie valoarea de adevăr (Adevarat sau Fals) a expresiei corespunzătoare din fișierul de intrare.
Restricţii şi precizări
1 ⩽ n ⩽ 10; 0 ≤ nr1, nr2, nr3 și rezultatul operației din membrul stâng ≤ 1017; nr1 ≥ nr2; rezultatul operației nr1 : nr2 este câtul împărțirii lui nr1 la nr2; dacă expresia este de forma nr1 : 0 = nr3 atunci este considerată falsă.
Exemple
- af.in
4 1 + 1 = 2 3 x 3 = 6 5 - 1 = 4 8 : 2 = 3
- af.out
Adevarat Fals Adevarat Fals
Rezolvare
def validare_date(expresii):
if len(expresii) > 10:
print("Datele citite din fisier nu sunt corecte")
return False
else:
for expresie in expresii:
expresie = expresie.strip().split()
primul = int(expresie[0])
semn = int(expresie[1])
al_doilea = int(expresie[2])
rezultatul = int(expresie[-1])
if operatie(primul, al_doilea, semn)<= 10**17:
if primul >= al_doilea:
print("Datele citite din fisier sunt corecte")
return True
def citire_expresii():
with open('af.in', 'r') as f:
n = int(f.readline().strip())
expresii = [f.readline().strip() for _ in range(n)]
return expresii
def scriere_rezultat(continut):
with open('af.out', 'a') as f:
if continut:
f.write("Adevarat\n")
else:
f.write("Fals\n")
def operatie(nr1, nr2, semn):
if semn == '+':
return nr1 + nr2
elif semn == '-':
return nr1 - nr2
elif semn == 'x':
return nr1 * nr2
elif semn == ':':
if nr2 == 0:
return False
return nr1 // nr2
if __name__ == '__main__':
expresii = citire_expresii()
for expresie in expresii:
expresie = expresie.strip().split()
nr1 = int(expresie[0])
semn = expresie[1]
nr2 = int(expresie[2])
nr3 = int(expresie[-1])
if semn == '+':
scriere_rezultat(nr1 + nr2 == nr3)
elif semn == '-':
scriere_rezultat(nr1 - nr2 == nr3)
elif semn == 'x':
scriere_rezultat(nr1 * nr2 == nr3)
elif semn == ':':
if nr2 == 0:
scriere_rezultat(False)
else:
scriere_rezultat(nr1 // nr2 == nr3)
else:
scriere_rezultat(False)