4318 - Cifre 20: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/4318/cifre20]
== Cerinţa ==
== Cerinţa ==
Se dă un șir cu n elemente, numere naturale. Să se determine câte elemente ale șirului au număr impar de cifre.
Se dă un șir cu un numar dat de elemente, numere naturale. Să se determine câte elemente ale șirului au număr impar de cifre.
== Date de intrare ==
== Date de intrare ==
Programul va citi de la tastatură numărul n, apoi cele n elemente ale șirului.
Programul va citi de la tastatură numărul, apoi elementele șirului.
== Date de ieşire ==
== Date de ieşire ==
Programul va afişa pe ecran valoarea cerută.
Programul va afişa pe ecran valoarea cerută.
== Restricții și precizări ==
== Restricții și precizări ==
* n ≤ 100
* numar ≤ 100
* elementele șirului sunt mai mici decât 10^9
* elementele șirului sunt mai mici decât 10^9


== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 5 18 215 147 1256 7
: 5  
  18 215 147 1256 7
; Ieșire
; Ieșire
: 3
: 3
=== Explicatie ===
=== Explicatie ===
Elementele șirului cu număr impar de cifre sunt: 215 147 7.
Elementele șirului cu număr impar de cifre sunt: 215 147 7.
== Rezolvare ==
== Rezolvare ==
=== Rezolvare ver. 1 ===


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


#Validarea numarului de elemente din sir
def numar_impar_cifre(numar):
    """
    Verifică dacă un număr are un număr impar de cifre.
 
    :param numar: Numărul de verificat.
    :return: True dacă numărul are un număr impar de cifre, False în caz contrar.
    """
    numar_cifre = len(str(numar))
    return numar_cifre % 2 == 1
 
 
def determina_numar_elemente_numar_impar_cifre(sir):
    """
    Determină numărul de elemente dintr-un șir care au un număr impar de cifre.
 
    :param sir: Șirul de numere.
    :return: Numărul de elemente cu număr impar de cifre.
    """
    contor = 0
    for element in sir:
        if numar_impar_cifre(element):
            contor += 1
    return contor
 
 
def citeste_sir_elemente(numar):
    """
    Citește elementele unui șir de numere de la tastatură.
 
    :param numar: Numărul de elemente din șir.
    :return: Șirul de numere citite.
    """
    sir = []
    for i in range(numar):
        while True:
            try:
                element = int(input(f"Introduceți elementul {i + 1}: "))
                if element <= 0:
                    print("Elementul trebuie să fie un număr natural pozitiv!")
                    continue
                break
            except ValueError:
                print("Elementul trebuie să fie un număr natural pozitiv!")
        sir.append(element)
    return sir
 
 
def main():
    # Citim numărul de elemente din șir și validăm inputul
    while True:
        try:
            numar = int(input("Introduceți numărul de elemente din șir: "))
            if numar <= 0:
                print("Numărul de elemente trebuie să fie un număr pozitiv!")
                continue
            break
        except ValueError:
            print("Numărul de elemente trebuie să fie un număr întreg pozitiv!")
 
    # Citim elementele șirului
    sir = citeste_sir_elemente(numar)
 
    # Determinăm numărul de elemente cu număr impar de cifre
    numar_elemente_numar_impar_cifre = determina_numar_elemente_numar_impar_cifre(sir)
 
    # Afișăm rezultatul
    print("Datele introduse corespund restricțiilor impuse.")
    print(f"Numărul de elemente cu număr impar de cifre este: {numar_elemente_numar_impar_cifre}")
 
 
if __name__ == "__main__":
    main()
 
 
</syntaxhighlight>
 
=== Rezolvare ver. 2 ===
<syntaxhighlight lang="python" line>
 
# Citim numărul de elemente din șir și validăm inputul
while True:
while True:
     try:
     try:
         n = int(input("Introduceti numarul de elemente din sir: "))
         numar = int(input("Introduceți numărul de elemente din șir: "))
         if n <= 0:
         if numar <= 0:
             print("Numarul de elemente trebuie sa fie un numar pozitiv!")
             print("Numărul de elemente trebuie fie un număr pozitiv!")
             continue
             continue
         break
         break
     except ValueError:
     except ValueError:
         print("Numarul de elemente trebuie sa fie un numar intreg pozitiv!")
         print("Numărul de elemente trebuie fie un număr întreg pozitiv!")


# Inițializăm un contor pentru numărul de elemente cu număr impar de cifre
# Inițializăm un contor pentru numărul de elemente cu număr impar de cifre
contor = 0
contor = 0


# Citim fiecare element din șir și verificăm dacă are număr impar de cifre
# Iterăm prin fiecare element din șir și verificăm dacă are număr impar de cifre
for i in range(n):
for i in range(numar):
     #Validarea elementelor din sir
     # Citim elementul și validăm inputul
     while True:
     while True:
         try:
         try:
             element = int(input(f"Introduceti elementul {i+1}: "))
             element = int(input(f"Introduceți elementul {i+1}: "))
             if element <= 0:
             if element <= 0:
                 print("Elementul trebuie sa fie un numar natural pozitiv!")
                 print("Elementul trebuie fie un număr natural pozitiv!")
                 continue
                 continue
             break
             break
         except ValueError:
         except ValueError:
             print("Elementul trebuie sa fie un numar natural pozitiv!")
             print("Elementul trebuie fie un număr natural pozitiv!")
   
    # Numărăm cifrele elementului și verificăm dacă este impar
     numar_cifre = len(str(element))
     numar_cifre = len(str(element))
     if numar_cifre % 2 == 1:
     if numar_cifre % 2 == 1:
         contor += 1
         contor += 1


# Afișăm numărul de elemente cu număr impar de cifre
# Afișăm validarea inputului și numărul de elemente cu număr impar de cifre
print(f"Numarul de elemente cu numar impar de cifre este: {contor}")
print("Datele introduse corespund restricțiilor impuse.")
print(f"Numărul de elemente cu număr impar de cifre este: {contor}")
 


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 09:50, 15 May 2023

Sursa: [1]

Cerinţa[edit | edit source]

Se dă un șir cu un numar dat de elemente, numere naturale. Să se determine câte elemente ale șirului au număr impar de cifre.

Date de intrare[edit | edit source]

Programul va citi de la tastatură numărul, apoi elementele șirului.

Date de ieşire[edit | edit source]

Programul va afişa pe ecran valoarea cerută.

Restricții și precizări[edit | edit source]

  • numar ≤ 100
  • elementele șirului sunt mai mici decât 10^9

Exemplu[edit | edit source]

Intrare
5
 18 215 147 1256 7
Ieșire
3


Explicatie[edit | edit source]

Elementele șirului cu număr impar de cifre sunt: 215 147 7.

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

def numar_impar_cifre(numar):

   """
   Verifică dacă un număr are un număr impar de cifre.
   :param numar: Numărul de verificat.
   :return: True dacă numărul are un număr impar de cifre, False în caz contrar.
   """
   numar_cifre = len(str(numar))
   return numar_cifre % 2 == 1


def determina_numar_elemente_numar_impar_cifre(sir):

   """
   Determină numărul de elemente dintr-un șir care au un număr impar de cifre.
   :param sir: Șirul de numere.
   :return: Numărul de elemente cu număr impar de cifre.
   """
   contor = 0
   for element in sir:
       if numar_impar_cifre(element):
           contor += 1
   return contor


def citeste_sir_elemente(numar):

   """
   Citește elementele unui șir de numere de la tastatură.
   :param numar: Numărul de elemente din șir.
   :return: Șirul de numere citite.
   """
   sir = []
   for i in range(numar):
       while True:
           try:
               element = int(input(f"Introduceți elementul {i + 1}: "))
               if element <= 0:
                   print("Elementul trebuie să fie un număr natural pozitiv!")
                   continue
               break
           except ValueError:
               print("Elementul trebuie să fie un număr natural pozitiv!")
       sir.append(element)
   return sir


def main():

   # Citim numărul de elemente din șir și validăm inputul
   while True:
       try:
           numar = int(input("Introduceți numărul de elemente din șir: "))
           if numar <= 0:
               print("Numărul de elemente trebuie să fie un număr pozitiv!")
               continue
           break
       except ValueError:
           print("Numărul de elemente trebuie să fie un număr întreg pozitiv!")
   # Citim elementele șirului
   sir = citeste_sir_elemente(numar)
   # Determinăm numărul de elemente cu număr impar de cifre
   numar_elemente_numar_impar_cifre = determina_numar_elemente_numar_impar_cifre(sir)
   # Afișăm rezultatul
   print("Datele introduse corespund restricțiilor impuse.")
   print(f"Numărul de elemente cu număr impar de cifre este: {numar_elemente_numar_impar_cifre}")


if __name__ == "__main__":

   main()


</syntaxhighlight>

Rezolvare ver. 2[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Citim numărul de elemente din șir și validăm inputul

while True:

   try:
       numar = int(input("Introduceți numărul de elemente din șir: "))
       if numar <= 0:
           print("Numărul de elemente trebuie să fie un număr pozitiv!")
           continue
       break
   except ValueError:
       print("Numărul de elemente trebuie să fie un număr întreg pozitiv!")
  1. Inițializăm un contor pentru numărul de elemente cu număr impar de cifre

contor = 0

  1. Iterăm prin fiecare element din șir și verificăm dacă are număr impar de cifre

for i in range(numar):

   # Citim elementul și validăm inputul
   while True:
       try:
           element = int(input(f"Introduceți elementul {i+1}: "))
           if element <= 0:
               print("Elementul trebuie să fie un număr natural pozitiv!")
               continue
           break
       except ValueError:
           print("Elementul trebuie să fie un număr natural pozitiv!")
   
   # Numărăm cifrele elementului și verificăm dacă este impar
   numar_cifre = len(str(element))
   if numar_cifre % 2 == 1:
       contor += 1
  1. Afișăm validarea inputului și numărul de elemente cu număr impar de cifre

print("Datele introduse corespund restricțiilor impuse.") print(f"Numărul de elemente cu număr impar de cifre este: {contor}")


</syntaxhighlight>