0350 - Produs Cartezian: Diferență între versiuni

De la Universitas MediaWiki
 
(Nu s-au afișat 5 versiuni intermediare efectuate de același utilizator)
Linia 19: Linia 19:


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Datele de intrare
: 3 2
:Introduceti numarul n:
; Ieșire
: 3
:Introduceti numarul m:
: 2
; Datele de ieșire
: Datele sunt introduse corect.
: {(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)}
: {(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)}
<br>
<br>
Linia 41: Linia 45:
     return True
     return True


def main():
if __name__ == '__main__':
     n = int(input("Introduceti numarul n: "))
     n = int(input("Introduceti numarul n: "))
     m = int(input("Introduceti numarul m: "))
     m = int(input("Introduceti numarul m: "))


     if not validate_input(n, m):
     if not validate_input(n, m):
         print("Input invalid pentru n sau m.")
         print("Datele nu corespund restricțiilor impuse.")
     else:
     else:
        print("Datele sunt introduse corect.")
         produs_cartezian = build_cartesian_product(n, m)
         produs_cartezian = build_cartesian_product(n, m)
         print(produs_cartezian)
         print(produs_cartezian)


if __name__ == '__main__':
    main()


</syntaxhighlight>
</syntaxhighlight>
Linia 58: Linia 61:
'''Explicatie cod:'''
'''Explicatie cod:'''


Acest cod construiește produsul cartezian al două mulțimi A și B, unde A este mulțimea numerelor naturale de la 1 la n, iar B este mulțimea numerelor naturale de la 1 la m.
Acest cod definește o funcție care construiește produsul cartezian dintre două seturi de numere, și o funcție care validează datele de intrare.  
 
Funcția build_cartesian_product(n, m) primește ca argumente n și m și returnează produsul cartezian AxB sub forma unei șiruri de caractere, care este construit prin intermediul unui dublu for loop. Acesta iterează prin fiecare element din A și pentru fiecare element din A, iterează prin fiecare element din B. În fiecare iterație, o pereche formată din elementele curente ale lui A și B este adăugată la șirul de caractere.


Funcția validate_input(n, m) primește ca argumente n și m și returnează True dacă valorile sunt în intervalul [1, 10] și False în caz contrar.
Funcția `build_cartesian_product(n, m)` primește două numere `n` și `m` și construiește produsul cartezian dintre seturile `{1,2,3,...,n}` și `{1,2,3,...,m}`. Produsul cartezian este o mulțime de perechi ordonate formate din elemente din fiecare set. În acest caz, perechile sunt construite astfel: `({1,2,...,n},{1,2,...,m})`. Produsul cartezian este returnat sub forma unui șir de caractere care conține toate perechile ordonate separate prin virgulă și încadrate între acolade: `{(1,1),(1,2),...,(n,m)}`.


Funcția main() citește n și m de la tastatură, validează valorile citite și, dacă sunt valabile, construiește și afișează produsul cartezian AxB. În caz contrar, afișează un mesaj de eroare.
Funcția `validate_input(n, m)` primește două numere întregi și validează dacă acestea respectă restricțiile impuse. În cazul de față, acestea trebuie să fie între 1 și 10 inclusiv. Funcția returnează `False` dacă datele de intrare nu sunt valide și `True` în caz contrar.


In fine, if __name__ == '__main__': este o construcție utilizată în Python pentru a verifica dacă acest script este rulat ca un program independent (și nu ca modul în care alte programe îl importă). Dacă acest script este rulat ca un program independent, funcția main() va fi apelată pentru a începe programul.
În secțiunea `if __name__ == '__main__':`, utilizatorul este întrebat să introducă două numere întregi `n` și `m`. Dacă acestea nu respectă restricțiile, se va afișa un mesaj corespunzător și programul se va încheia. În caz contrar, se va afișa un mesaj de confirmare și se va apela funcția `build_cartesian_product(n, m)` pentru a construi produsul cartezian, care va fi apoi afișat pe ecran.

Versiunea curentă din 29 aprilie 2023 09:24

Sursa: [1]

Cerinţa

Se dau două numere naturale nenule n și m. Pentru mulțimile A={1,2,..,n} și B={1,2,...,m}, să se afișeze mulțimea A×B={(a,b) | a∈A, b∈B}produsul cartezian al mulțimilor A și B.

Date de intrare

Programul citește de la tastatură numerele n și m.

Date de ieșire

Programul afișează pe ecran mulțimea cerută astfel:

elementele mulțimii vor fi scrise între acolade și separate prin virgule fiecare element este o pereche de numere, care va fi scrisă între paranteze rotunde, numerele din pereche fiind separate prin virgulă mai întâi se vor scrie perechile (a,b) pentru care a=1, cu b în ordine crescătoare, apoi perechile pentru care a=2 cu b în ordine crescătoare, etc, ca în exemplu.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează mulțimea A×B={(a,b) | a∈A, b∈B} – produsul cartezian al mulțimilor A și B.

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

Restricţii şi precizări

1 ≤ n,m ≤ 10

Exemplul 1

Datele de intrare
Introduceti numarul n:
3
Introduceti numarul m:
2
Datele de ieșire
Datele sunt introduse corect.
{(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)}


Rezolvare

#0350
def build_cartesian_product(n, m):
    produs_cartezian = "{"
    for a in range(1, n+1):
        for b in range(1, m+1):
            produs_cartezian += f"({a},{b}),"
    produs_cartezian = produs_cartezian[:-1] + "}"
    return produs_cartezian

def validate_input(n, m):
    if not (1 <= n <= 10 and 1 <= m <= 10):
        return False
    return True

if __name__ == '__main__':
    n = int(input("Introduceti numarul n: "))
    m = int(input("Introduceti numarul m: "))

    if not validate_input(n, m):
        print("Datele nu corespund restricțiilor impuse.")
    else:
        print("Datele sunt introduse corect.")
        produs_cartezian = build_cartesian_product(n, m)
        print(produs_cartezian)

Explicatie cod:

Acest cod definește o funcție care construiește produsul cartezian dintre două seturi de numere, și o funcție care validează datele de intrare.

Funcția `build_cartesian_product(n, m)` primește două numere `n` și `m` și construiește produsul cartezian dintre seturile `{1,2,3,...,n}` și `{1,2,3,...,m}`. Produsul cartezian este o mulțime de perechi ordonate formate din elemente din fiecare set. În acest caz, perechile sunt construite astfel: `({1,2,...,n},{1,2,...,m})`. Produsul cartezian este returnat sub forma unui șir de caractere care conține toate perechile ordonate separate prin virgulă și încadrate între acolade: `{(1,1),(1,2),...,(n,m)}`.

Funcția `validate_input(n, m)` primește două numere întregi și validează dacă acestea respectă restricțiile impuse. În cazul de față, acestea trebuie să fie între 1 și 10 inclusiv. Funcția returnează `False` dacă datele de intrare nu sunt valide și `True` în caz contrar.

În secțiunea `if __name__ == '__main__':`, utilizatorul este întrebat să introducă două numere întregi `n` și `m`. Dacă acestea nu respectă restricțiile, se va afișa un mesaj corespunzător și programul se va încheia. În caz contrar, se va afișa un mesaj de confirmare și se va apela funcția `build_cartesian_product(n, m)` pentru a construi produsul cartezian, care va fi apoi afișat pe ecran.