2641 - AF: Diferență între versiuni
Fără descriere a modificării |
|||
Linia 36: | Linia 36: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
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(): | def citire_expresii(): | ||
Linia 43: | Linia 58: | ||
expresii = [f.readline().strip() for _ in range(n)] | expresii = [f.readline().strip() for _ in range(n)] | ||
return expresii | return expresii | ||
def scriere_rezultat(continut): | def scriere_rezultat(continut): | ||
with open('af.out', 'a') as f: | with open('af.out', 'a') as f: | ||
f.write(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() | expresii = citire_expresii() | ||
for expresie in expresii: | for expresie in expresii: | ||
Linia 70: | Linia 102: | ||
else: | else: | ||
scriere_rezultat(False) | scriere_rezultat(False) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Versiunea de la data 26 aprilie 2023 16:05
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)