1411 - Numere 13: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 37: Line 37:
== Rezolvare ==
== Rezolvare ==


=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


Line 52: Line 51:
                 return True
                 return True
     return False
     return False


def calculeaza_nr_perechi():
def calculeaza_nr_perechi():
     nr_perechi = 0
     nr_perechi = 0
     while True:
     while True:
         primul_numar = input("Introduceți primul numar: ")
         primul_numar = int(input("Introduceți primul numar: "))
         al_doilea_numar = input("Introduceți al doilea numar: ")
         al_doilea_numar = int(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:
         if primul_numar == 0 and al_doilea_numar == 0:
             break
             break
        if verifica_numerele(primul_numar, al_doilea_numar):
            nr_perechi += 1
            print("Cele doua numere incep cu aceeasi cifra.")


     return nr_perechi
     return nr_perechi


def afiseaza_nr_perechi(nr_perechi):
def afiseaza_nr_perechi(nr_perechi):
Line 83: Line 77:
     nr_perechi = calculeaza_nr_perechi()
     nr_perechi = calculeaza_nr_perechi()
     afiseaza_nr_perechi(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>
</syntaxhighlight>

Latest revision as of 22:45, 15 May 2023

sursa: [1]

Cerinţa[edit]

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[edit]

Programul citește de la tastatură perechi de numere naturale. Citirea se încheie la introducerea a două valori nule.

Date de ieşire[edit]

Programul va afișa pe ecran valoarea cerută.

Restricții și precizări[edit]

  • 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[edit]

Intrare
329 39780
9686 6659
6121 846
7938 73173
5352 5129
7243 3765
3750 3779
0 0
Ieșire
4

Explicație[edit]

Perechile care respecta regula sunt:

329 39780
7938 73173
5352 5129
3750 3779

Rezolvare[edit]

<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 = int(input("Introduceți primul numar: "))
       al_doilea_numar = int(input("Introduceți al doilea numar: "))
       if primul_numar == 0 and al_doilea_numar == 0:
           break
       if verifica_numerele(primul_numar, al_doilea_numar):
           nr_perechi += 1
           print("Cele doua numere incep cu aceeasi cifra.")
   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>