0053 - Cate Impare: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Pagină nouă: ==Cerinţa== Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau impare. ==Date de intrare== Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0. ==Date de ieşire== Programul afișează pe ecran numărul C, reprezentând numărul de numere impare citite. ==Restricţii şi precizări== numerele citite aparțin intervalului [0; 1.000.000.000) ==Exemplu:== Intrare 5 6 2 1 0 Ie...
 
Paul Ungur (talk | contribs)
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 6: Line 6:


==Date de ieşire==
==Date de ieşire==
Programul afișează pe ecran numărul C, reprezentând numărul de numere impare citite.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul afișează pe ecran numărul '''C''', reprezentând numărul de numere impare citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''
 


==Restricţii şi precizări==
==Restricţii şi precizări==
Line 13: Line 14:
==Exemplu:==
==Exemplu:==
Intrare
Intrare
5 6 2 1 0
: 5 6 2 1 0


Ieșire
Ieșire
2
: Date de intrare valide
: 2


==Rezolvare==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def is_natural_number(n):
def validare_date(numere):
     if n >= 0 and n == int(n):
     for numar in numere:
        return True
        if numar < 0 or numar > 1_000_000_000:
     return False
            return False
     return True


def read_numbers():
    numbers = []
    while True:
        n = int(input())
        if n == 0:
            break
        if is_natural_number(n):
            numbers.append(n)
        else:
            print("Input must be a natural number!")
    return numbers


def count_odd_numbers(numbers):
def cate_impare(numere):
     count = 0
     numere_impare = 0
     for n in numbers:
     for numar in numere:
         if n % 2 != 0:
         if numar % 2 == 1:
             count += 1
             numere_impare += 1
     return count
     print(numere_impare)


def main():
    numbers = read_numbers()
    odd_count = count_odd_numbers(numbers)
    print(odd_count)


if __name__ == '__main__':
if __name__ == '__main__':
     main()
     numere = list(map(int, input().split()))
 
    if validare_date(numere):
        print("Date de intrare valide")
        cate_impare(numere)
    else:
        print("Date de intrare invalide")
</syntaxhighlight>
</syntaxhighlight>
 
==Explicatie cod:==
==Explicatie==
Funcția validare_date(numere) primește o listă de numere și verifică dacă fiecare număr din listă se încadrează în intervalul specificat [0, 1_000_000_000]. Dacă există cel puțin un număr care nu respectă această condiție, funcția returnează False. În caz contrar, returnează True.
În funcția is_natural_number, verificăm dacă numărul primit ca parametru este un întreg natural și returnăm True sau False în consecință.
Funcția cate_impare(numere) primește o listă de numere și numără câte dintre acestea sunt impare. Se verifică fiecare număr din listă, iar dacă numărul este impar (adică are restul împărțirii la 2 diferit de zero), se incrementează un contor. La final, se afișează numărul de numere impare găsite.
În funcția read_numbers, citim numere până la introducerea valorii 0 și le adăugăm într-o listă, folosind funcția is_natural_number pentru a valida fiecare număr citit. Dacă un număr introdus nu este un întreg natural, afișăm un mesaj de eroare.
În blocul if __name__ == '__main__':, se citește de la intrare o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o listă numită numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția cate_impare() pentru a număra numerele impare. În caz contrar, se afișează un mesaj de eroare.
În funcția count_odd_numbers, numărăm câte dintre numerele primite ca parametru sunt impare.
În funcția principală, apelăm cele două funcții menționate mai sus și afișăm numărul de numere impare găsite în listă.
Astfel, prin folosirea celor trei funcții separate, putem scrie un cod mai modular și mai ușor de înțeles și de modificat în cazul în care dorim să adăugăm mai multă funcționalitate.

Latest revision as of 18:54, 29 June 2023

Cerinţa[edit | edit source]

Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte dintre ele erau impare.

Date de intrare[edit | edit source]

Programul citește de la tastatură numere naturale. Citirea se încheie la introducerea valorii 0.

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul afișează pe ecran numărul C, reprezentând numărul de numere impare citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".


Restricţii şi precizări[edit | edit source]

numerele citite aparțin intervalului [0; 1.000.000.000)

Exemplu:[edit | edit source]

Intrare

5 6 2 1 0

Ieșire

Date de intrare valide
2

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare_date(numere):

   for numar in numere:
       if numar < 0 or numar > 1_000_000_000:
           return False
   return True


def cate_impare(numere):

   numere_impare = 0
   for numar in numere:
       if numar % 2 == 1:
           numere_impare += 1
   print(numere_impare)


if __name__ == '__main__':

   numere = list(map(int, input().split()))
   if validare_date(numere):
       print("Date de intrare valide")
       cate_impare(numere)
   else:
       print("Date de intrare invalide")

</syntaxhighlight>

Explicatie cod:[edit | edit source]

Funcția validare_date(numere) primește o listă de numere și verifică dacă fiecare număr din listă se încadrează în intervalul specificat [0, 1_000_000_000]. Dacă există cel puțin un număr care nu respectă această condiție, funcția returnează False. În caz contrar, returnează True. Funcția cate_impare(numere) primește o listă de numere și numără câte dintre acestea sunt impare. Se verifică fiecare număr din listă, iar dacă numărul este impar (adică are restul împărțirii la 2 diferit de zero), se incrementează un contor. La final, se afișează numărul de numere impare găsite. În blocul if __name__ == '__main__':, se citește de la intrare o serie de numere separate prin spațiu utilizând funcția input() și split(), și se stochează într-o listă numită numere. Apoi, se verifică dacă valorile citite sunt valide utilizând funcția validare_date(). Dacă valorile sunt valide, se afișează un mesaj de confirmare și se apelează funcția cate_impare() pentru a număra numerele impare. În caz contrar, se afișează un mesaj de eroare.