1528 - Operatii Matematice: Diferență între versiuni

De la Universitas MediaWiki
 
(Nu s-au afișat 9 versiuni intermediare efectuate de același utilizator)
Linia 17: Linia 17:
== Date de ieșire ==  
== Date de ieșire ==  
Programul va conține pe prima linie numărul obţinut la cerința 1 şi pe a doua linie răspunsul '''DA''' în cazul în care răspunsul lui Alex '''trebuie să fie afirmativ''', '''respectiv NU în caz contrar'''.
Programul va conține pe prima linie numărul obţinut la cerința 1 şi pe a doua linie răspunsul '''DA''' în cazul în care răspunsul lui Alex '''trebuie să fie afirmativ''', '''respectiv NU în caz contrar'''.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cerintele de mai sus.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."


== Restricţii şi precizări ==
== Restricţii şi precizări ==
Linia 24: Linia 28:


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Datele de intrare:
: Introduceti numarul de cifre:
: 4
: 4
: Introduceti cifrele:
:2 3 4 5
:2 3 4 5
; Ieșire
; Datele de ieșire:
:14
: Datele sunt introduse corect.
:DA
: Numarul obtinut de Maria este: 14
: DA, este divizibil cu 7.
<br>
<br>


Linia 35: Linia 42:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#1528
#1528
def read_input():
    """
    Citeste datele de intrare si returneaza n si lista de cifre.
    """
    n = int(input("Introduceti numarul de cifre: "))
    cifre = list(map(int, input("Introduceti cifrele: ").split()))
    return n, cifre
def play_game(cifre):
def play_game(cifre):
     """
     """
Linia 56: Linia 55:
         cristi_nr = cristi_nr + maria_nr_nou
         cristi_nr = cristi_nr + maria_nr_nou
     return maria_suma
     return maria_suma


def print_result(maria_suma):
def print_result(maria_suma):
Linia 61: Linia 61:
     Afiseaza numarul obtinut de Maria si daca acesta este divizibil cu 7.
     Afiseaza numarul obtinut de Maria si daca acesta este divizibil cu 7.
     """
     """
    print("Datele sunt corecte.")
     print("Numarul obtinut de Maria este:", maria_suma)
     print("Numarul obtinut de Maria este:", maria_suma)
     if maria_suma % 7 == 0:
     if maria_suma % 7 == 0:
Linia 67: Linia 68:
         print("NU, nu este divizibil cu 7.")
         print("NU, nu este divizibil cu 7.")


n, cifre = read_input()
 
maria_suma = play_game(cifre)
if __name__ == '__main__':
print_result(maria_suma)
    n = int(input("Introduceti numarul de cifre: "))
    cifre = list(map(int, input("Introduceti cifrele: ").split()))
 
    if n <= 0 or n > 100:
        print("Datele nu corespund restricțiilor impuse.")
    elif len(cifre) != n:
        print("Datele nu corespund restricțiilor impuse.")
    else:
        maria_suma = play_game(cifre)
        print_result(maria_suma)
 
 




Linia 75: Linia 87:
'''Explicatie cod:'''
'''Explicatie cod:'''


Acest cod este scris in Python si contine trei functii: "read_input()", "play_game()", si "print_result()".
Funcția play_game primește ca argument o listă de cifre și returnează numărul obținut de Maria după jocul descris în enunțul problemei.
 
În prima linie, se inițializează variabila cristi_nr cu valoarea primei cifre din listă, înmulțită cu 3. Aceasta reprezintă numărul obținut de Cristi la prima etapă a jocului. Variabila maria_suma este inițializată cu aceeași valoare, reprezentând suma cifrelor alese de Maria la primele două etape ale jocului.


Functia "read_input()" citeste datele de intrare de la utilizator si returneaza doua valori: "n" (numarul de cifre) si o lista de cifre.
Apoi, pentru fiecare cifră din lista de cifre, se efectuează următoarele operații:


Functia "play_game()" ia lista de cifre returnata de functia "read_input()" si simuleaza jocul descris in cerinta problemei pentru a calcula numarul obtinut de Maria. Aceasta functie returneaza numarul obtinut de Maria.
se înmulțește numărul lui Cristi cu 3
se adună cifra curentă la suma cifrelor alese de Maria
se determină cel mai mare multiplu de 7 care este mai mic sau egal cu suma cifrelor alese de Maria
se calculează o nouă valoare pentru suma cifrelor alese de Maria, scăzând din suma curentă cel mai mare multiplu de 7 găsit la pasul anterior
se adaugă noua valoare calculată pentru suma cifrelor alese de Maria la numărul lui Cristi
La final, funcția returnează valoarea finală a sumei cifrelor alese de Maria.


Functia "print_result()" ia numarul obtinut de Maria returnat de functia "play_game()" si afiseaza acest numar, impreuna cu un mesaj care indica daca numarul este divizibil cu 7 sau nu.
Funcția print_result primește ca argument valoarea returnată de funcția play_game și afișează numărul obținut de Maria, precum și faptul că acesta este sau nu divizibil cu 7.


In final, codul apeleaza aceste functii in ordinea "read_input()", "play_game()", si "print_result()" pentru a citi datele de intrare, a calcula numarul obtinut de Maria si a afisa rezultatul.
În blocul if __name__ == '__main__':, se citește numărul de cifre și lista de cifre de la tastatură. Dacă numărul de cifre nu respectă restricțiile impuse în enunțul problemei, se afișează un mesaj corespunzător. Dacă lungimea listei de cifre nu corespunde cu numărul de cifre specificat, se afișează de asemenea un mesaj corespunzător. În caz contrar, se apelează funcția play_game cu lista de cifre și se afișează rezultatul apelului funcției print_result.

Versiunea curentă din 29 aprilie 2023 08:51

Sursa: [1]

Cerinţa

Maria, Cristi şi Alex au găsit o modalitate de a-şi îmbunătăţi viteza de efectuare a operaţiilor matematice printr-un joc care să corespundă nivelului de vârsta al fiecăruia. Maria ştie doar operaţiile de adunare şi scădere, Cristi a învăţat înmulţirile iar Alex fiind în clasa a 5-a studiază divizibilitatea numerelor.

Jocul se desfăşoară în felul următor: Maria alege o cifra – cifra de start (întotdeauna este nenulă). Cristi o înmulţeşte cu 3. La numărul obţinut de Cristi, Maria adaugă o nouă cifră şi îi spune lui Cristi suma obţinută. Cristi caută cel mai mare multiplu a lui 7 mai mic decât numărul obţinut de Maria şi îl spune Mariei. Aceasta scade din numărul ei multiplul spus de Cristi şi obţine un număr nou. Din acest moment jocul se reia, Cristi înmulţeşte cu 3, Maria alege o cifră şi o adaugă la numărul obţinut de Cristi s.a.m.d…

Între timp Alex este atent la cifrele pe care Maria le-a introdus în joc şi caută să vadă dacă numărul format din aceste cifre este divizibil cu 7.


1) Aflaţi care este numărul obţinut de Maria după adăugarea ultimei cifre.

2) Ajutaţi-l pe Alex să verifice dacă numărul format din cifrele alese de Maria este divizibil cu 7.

Date de intrare

Programul va contine pe prima linie numărul de cifre alese de Maria iar pe următoarea linie separate prin spaţiu cifrele în ordinea alegerii acestora.

Date de ieșire

Programul va conține pe prima linie numărul obţinut la cerința 1 şi pe a doua linie răspunsul DA în cazul în care răspunsul lui Alex trebuie să fie afirmativ, respectiv NU în caz contrar.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cerintele de mai sus.

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

Restricţii şi precizări

Numărul de cifre alese de Maria este maxim 100.

Pentru rezolvarea corectă a primei cerinţe se obţine 50% din punctajul unui test.

Exemplul 1

Datele de intrare
Introduceti numarul de cifre:
4
Introduceti cifrele:
2 3 4 5
Datele de ieșire
Datele sunt introduse corect.
Numarul obtinut de Maria este: 14
DA, este divizibil cu 7.


Rezolvare

#1528
def play_game(cifre):
    """
    Returneaza numarul obtinut de Maria dupa joc.
    """
    cristi_nr = cifre[0] * 3
    maria_suma = cifre[0]
    for cifra in cifre[1:]:
        cristi_nr = cristi_nr * 3
        maria_suma = maria_suma + cifra
        maxim_7 = (maria_suma // 7) * 7
        maria_nr_nou = maria_suma - maxim_7
        cristi_nr = cristi_nr + maria_nr_nou
    return maria_suma


def print_result(maria_suma):
    """
    Afiseaza numarul obtinut de Maria si daca acesta este divizibil cu 7.
    """
    print("Datele sunt corecte.")
    print("Numarul obtinut de Maria este:", maria_suma)
    if maria_suma % 7 == 0:
        print("DA, este divizibil cu 7.")
    else:
        print("NU, nu este divizibil cu 7.")


if __name__ == '__main__':
    n = int(input("Introduceti numarul de cifre: "))
    cifre = list(map(int, input("Introduceti cifrele: ").split()))

    if n <= 0 or n > 100:
        print("Datele nu corespund restricțiilor impuse.")
    elif len(cifre) != n:
        print("Datele nu corespund restricțiilor impuse.")
    else:
        maria_suma = play_game(cifre)
        print_result(maria_suma)

Explicatie cod:

Funcția play_game primește ca argument o listă de cifre și returnează numărul obținut de Maria după jocul descris în enunțul problemei.

În prima linie, se inițializează variabila cristi_nr cu valoarea primei cifre din listă, înmulțită cu 3. Aceasta reprezintă numărul obținut de Cristi la prima etapă a jocului. Variabila maria_suma este inițializată cu aceeași valoare, reprezentând suma cifrelor alese de Maria la primele două etape ale jocului.

Apoi, pentru fiecare cifră din lista de cifre, se efectuează următoarele operații:

se înmulțește numărul lui Cristi cu 3 se adună cifra curentă la suma cifrelor alese de Maria se determină cel mai mare multiplu de 7 care este mai mic sau egal cu suma cifrelor alese de Maria se calculează o nouă valoare pentru suma cifrelor alese de Maria, scăzând din suma curentă cel mai mare multiplu de 7 găsit la pasul anterior se adaugă noua valoare calculată pentru suma cifrelor alese de Maria la numărul lui Cristi La final, funcția returnează valoarea finală a sumei cifrelor alese de Maria.

Funcția print_result primește ca argument valoarea returnată de funcția play_game și afișează numărul obținut de Maria, precum și faptul că acesta este sau nu divizibil cu 7.

În blocul if __name__ == '__main__':, se citește numărul de cifre și lista de cifre de la tastatură. Dacă numărul de cifre nu respectă restricțiile impuse în enunțul problemei, se afișează un mesaj corespunzător. Dacă lungimea listei de cifre nu corespunde cu numărul de cifre specificat, se afișează de asemenea un mesaj corespunzător. În caz contrar, se apelează funcția play_game cu lista de cifre și se afișează rezultatul apelului funcției print_result.