1411 - Numere 13: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
sursa: [https://www.pbinfo.ro/probleme/1411/numere13] | |||
== Cerinţa == | == Cerinţa == | ||
Se citesc perechi de numere naturale până la citirea a două valori nule. Să se determine câte dintre perechi încep cu aceeași cifră. | Se citesc perechi de numere naturale până la citirea a două valori nule. Să se determine câte dintre perechi încep cu aceeași cifră. | ||
Line 35: | Line 36: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def verifica_numerele(primul_numar, al_doilea_numar): | |||
if primul_numar != 0 and al_doilea_numar != 0: | |||
if len(str(primul_numar)) > 1 and str(primul_numar)[0] == "-": | |||
return False | |||
elif len(str(al_doilea_numar)) > 1 and str(al_doilea_numar)[0] == "-": | |||
return False | |||
else: | |||
prima_cifra_primul_numar = str(primul_numar)[0] | |||
prima_cifra_al_doilea_numar = str(al_doilea_numar)[0] | |||
if prima_cifra_primul_numar == prima_cifra_al_doilea_numar: | |||
return True | |||
return False | |||
def calculeaza_nr_perechi(): | |||
nr_perechi = 0 | |||
while True: | |||
primul_numar = input("Introduceți primul numar: ") | |||
al_doilea_numar = input("Introduceți al doilea numar: ") | |||
try: | |||
primul_numar = int(primul_numar) | |||
al_doilea_numar = int(al_doilea_numar) | |||
if verifica_numerele(primul_numar, al_doilea_numar): | |||
nr_perechi += 1 | |||
print("Cele doua numere incep cu aceeasi cifra.") | |||
else: | |||
print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") | |||
except ValueError: | |||
print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") | |||
if primul_numar == 0 and al_doilea_numar == 0: | |||
break | |||
return nr_perechi | |||
def afiseaza_nr_perechi(nr_perechi): | |||
print("Datele sunt introduse corect.") | |||
print(f"Numarul total de perechi care incep cu aceeasi cifra este: {nr_perechi}") | |||
if __name__ == "__main__": | |||
nr_perechi = calculeaza_nr_perechi() | |||
afiseaza_nr_perechi(nr_perechi) | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | |||
# Inițializăm numărul de perechi la 0 | # Inițializăm numărul de perechi la 0 |
Revision as of 22:39, 15 May 2023
sursa: [1]
Cerinţa
Se citesc perechi de numere naturale până la citirea a două valori nule. Să se determine câte dintre perechi încep cu aceeași cifră.
Date de intrare
Programul citește de la tastatură perechi de numere naturale. Citirea se încheie la introducerea a două valori nule.
Date de ieşire
Programul va afișa pe ecran valoarea cerută.
Restricții și precizări
- se vor citi cel mult 1000 de perechi de numere;
- ultima pereche citită nu se va lua în considerare;
- toate numerele citite vor fi mai mici decât 1.000.000;
- toate numerele citite sunt nenule, cu excepția ultimelor două;
Exemplu
- Intrare
- 329 39780
- 9686 6659
- 6121 846
- 7938 73173
- 5352 5129
- 7243 3765
- 3750 3779
- 0 0
- Ieșire
- 4
Explicație
Perechile care respecta regula sunt:
- 329 39780
- 7938 73173
- 5352 5129
- 3750 3779
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line>
def verifica_numerele(primul_numar, al_doilea_numar):
if primul_numar != 0 and al_doilea_numar != 0: if len(str(primul_numar)) > 1 and str(primul_numar)[0] == "-": return False elif len(str(al_doilea_numar)) > 1 and str(al_doilea_numar)[0] == "-": return False else: prima_cifra_primul_numar = str(primul_numar)[0] prima_cifra_al_doilea_numar = str(al_doilea_numar)[0] if prima_cifra_primul_numar == prima_cifra_al_doilea_numar: return True return False
def calculeaza_nr_perechi():
nr_perechi = 0 while True: primul_numar = input("Introduceți primul numar: ") al_doilea_numar = input("Introduceți al doilea numar: ")
try: primul_numar = int(primul_numar) al_doilea_numar = int(al_doilea_numar) if verifica_numerele(primul_numar, al_doilea_numar): nr_perechi += 1 print("Cele doua numere incep cu aceeasi cifra.") else: print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") except ValueError: print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.")
if primul_numar == 0 and al_doilea_numar == 0: break
return nr_perechi
def afiseaza_nr_perechi(nr_perechi):
print("Datele sunt introduse corect.") print(f"Numarul total de perechi care incep cu aceeasi cifra este: {nr_perechi}")
if __name__ == "__main__":
nr_perechi = calculeaza_nr_perechi() afiseaza_nr_perechi(nr_perechi)
</syntaxhighlight>
Rezolvare ver. 2
<syntaxhighlight lang="python" line>
- Inițializăm numărul de perechi la 0
nr_perechi = 0
while True:
# Citim două numere întregi de la tastatură primul_numar = input("Introduceti primul numar: ") al_doilea_numar = input("Introduceti al doilea numar: ")
# Verificăm dacă cele două numere sunt valide try: primul_numar = int(primul_numar) al_doilea_numar = int(al_doilea_numar) if primul_numar != 0 and al_doilea_numar != 0: # Verificăm dacă cele două numere sunt negative if len(str(primul_numar)) > 1 and str(primul_numar)[0] == "-": print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") elif len(str(al_doilea_numar)) > 1 and str(al_doilea_numar)[0] == "-": print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") else: # Obținem prima cifră a primului număr prima_cifra_primul_numar = str(primul_numar)[0]
# Obținem prima cifră a celui de-al doilea număr prima_cifra_al_doilea_numar = str(al_doilea_numar)[0]
# Verificăm dacă cele două numere încep cu aceeași cifră if prima_cifra_primul_numar == prima_cifra_al_doilea_numar: nr_perechi += 1 print("Cele doua numere incep cu aceeasi cifra.") else: print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.") except ValueError: print("Valorile introduse nu sunt valide. Introduceti doua numere pozitive diferite de 0.")
# Verificăm dacă cele două numere introduse sunt egale cu 0 if primul_numar == 0 and al_doilea_numar == 0: break
print("Datele sunt introduse corect.") print(f"Numarul total de perechi care incep cu aceeasi cifra este: {nr_perechi}")
</syntaxhighlight>