2999 - Trim: Difference between revisions

From Bitnami MediaWiki
Tag: visualeditor
 
Line 62: Line 62:
== Rezolvare ver. 1 ==
== Rezolvare ver. 1 ==
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def validare(k, r, n):
    return 1 <= k <= r <= n <= 100
def numar_submultimi_pare(n):
def numar_submultimi_pare(n):
     # Calculează numărul de submulțimi cu cardinalitatea pară
     # Calculează numărul de submulțimi cu cardinalitatea pară
Line 73: Line 77:
         return None
         return None
     else:
     else:
         submultimi_k_r = submultimi[k-1:r:2]  # obține submulțimile de la k la r, cu pași de 2
         submultimi_k_r = submultimi[k - 1:r:2]  # obține submulțimile de la k la r, cu pași de 2
         medie = sum(submultimi_k_r) / len(submultimi_k_r)
         medie = sum(submultimi_k_r) / len(submultimi_k_r)
         return medie
         return medie
Line 83: Line 87:
         return None
         return None
     else:
     else:
         submultime_r = submultimi[r-1::2]  # obține elementele submulțimii r, cu pași de 2
         submultime_r = submultimi[r - 1::2]  # obține elementele submulțimii r, cu pași de 2
         return submultime_r
         return submultime_r


Line 94: Line 98:


     # Verificare restricții
     # Verificare restricții
     if not (0 < k <= r <= 100):
     if not validare(k, r, n):
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
     else:
     else:
         # Obținere număr de submulțimi cu cardinalitatea pară
         # Obținere număr de submulțimi cu cardinalitatea pară
        print("Datele de intrare corespund restricțiilor impuse.")
         numar_submultimi_pare = numar_submultimi_pare(n)
         numar_submultimi_pare = numar_submultimi_pare(n)
         print("Numărul de submulțimi cu cardinalitatea pară:", numar_submultimi_pare)
         print("Numărul de submulțimi cu cardinalitatea pară:", numar_submultimi_pare)


         # Generare submulțimi
         # Generare submulțimi
         submultimi = list(range(1, n+1))
         submultimi = list(range(1, n + 1))


         # Obținere medie aritmetică
         # Obținere medie aritmetică
Line 117: Line 122:
         else:
         else:
             print("Nu se poate obține submulțimea specificată pentru valorile introduse.")
             print("Nu se poate obține submulțimea specificată pentru valorile introduse.")
   


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 11:39, 30 April 2023

Cerință[edit]

Scrieți un program care citește de la tastatură trei numere naturale n, k și r și afișează:

  • câte submulțimi sunt formate dintr-un număr de elemente pare (cardinalul submulțimilor este un număr par)
  • media aritmetică a elementelor din submulțimile cu număr de ordine k și r (0 < k ≤ r ≤ 100)
  • elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.

Date de intrare[edit]

Programul va citi de la tastatură n, k și r numere naturale.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Se afișează fiecare pe câte o linie:

  • numărul de submulțimi cu număr de elemente pare
  • media aritmetică a numerelor din submulțimile k și r
  • elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.

În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări[edit]

  • 1 ⩽ krn 100

Exemplul 1[edit]

Intrare
10
3
7
Ieșire
Datele introduse corespund restricțiilor impuse.
1024
5
7 9

Exemplul 2[edit]

Intrare
12
3
4
Ieșire
Datele introduse corespund restricțiilor impuse.
4096
3
4 6 8 10 12

Rezolvare ver. 1[edit]

<syntaxhighlight lang="python" line="1" start="1"> def validare(k, r, n):

   return 1 <= k <= r <= n <= 100


def numar_submultimi_pare(n):

   # Calculează numărul de submulțimi cu cardinalitatea pară
   return 2 ** n


def medie_submultimi(submultimi, k, r):

   # Calculează media aritmetică a elementelor din submulțimile k și r
   # Dacă k și r sunt în afara intervalului corect, returnează None
   if k < 1 or r > len(submultimi) or k > r:
       return None
   else:
       submultimi_k_r = submultimi[k - 1:r:2]  # obține submulțimile de la k la r, cu pași de 2
       medie = sum(submultimi_k_r) / len(submultimi_k_r)
       return medie


def submultime_specifica(submultimi, r):

   # Obține elementele submulțimii r sub forma specificată
   if r > len(submultimi):
       return None
   else:
       submultime_r = submultimi[r - 1::2]  # obține elementele submulțimii r, cu pași de 2
       return submultime_r


if __name__ == "__main__":

   # Citirea datelor de intrare de la tastatură
   n = int(input("Introduceți numărul total de elemente: "))
   k = int(input("Introduceți numărul de ordine k: "))
   r = int(input("Introduceți numărul de ordine r: "))
   # Verificare restricții
   if not validare(k, r, n):
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       # Obținere număr de submulțimi cu cardinalitatea pară
       print("Datele de intrare corespund restricțiilor impuse.")
       numar_submultimi_pare = numar_submultimi_pare(n)
       print("Numărul de submulțimi cu cardinalitatea pară:", numar_submultimi_pare)
       # Generare submulțimi
       submultimi = list(range(1, n + 1))
       # Obținere medie aritmetică
       medie = medie_submultimi(submultimi, k, r)
       if medie is not None:
           print("Media aritmetică a numerelor din submulțimile k și r:", medie)
       else:
           print("Nu se poate calcula media aritmetică pentru valorile introduse.")
       # Obținere submulțime specifică
       submultime_specifica = submultime_specifica(submultimi, r)
       if submultime_specifica is not None:
           print("Elementele submulțimii r sub forma specificată:", submultime_specifica)
       else:
           print("Nu se poate obține submulțimea specificată pentru valorile introduse.")

</syntaxhighlight>