2841 - Gen Mat 27

De la Universitas MediaWiki

Cerința

Scrieţi un program care citește de la tastatură două numere naturale, m și n (2 ≤ m ≤ 20, 2 ≤ n ≤ 20), și construiește în memorie un tablou bidimensional A, cu m linii și n coloane, astfel încât parcurgându-l, linie cu linie, de sus în jos și fiecare linie de la stânga la dreapta, să se obțină șirul primelor n·m numere naturale, pare, care nu sunt divizibile cu 5, ordonat strict crescător. Programul afişează pe ecran tabloul obținut, fiecare linie a tabloului pe câte o linie a ecranului, elementele de pe aceeași linie fiind separate prin câte un spațiu.

Date de intrare

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

Date de ieșire

Programul afișează pe ecran tabloul construit, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.

Restricții și precizări

  • 2 ≤ m, n ≤ 20

Exemplul 1

Intrare
4 3
Ieșire
Datele de intrare corespund restricțiilor impuse.
2 4 6
8 12 14
16 18 22
24 26 28

Exemplul 2

Intrare
0 21
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#2841 - Gen Mat 27
# definim functia care returneaza daca un numar este par si nu este multiplu de 5
def numar_valid(num):
    return num % 2 == 0 and num % 5 != 0

# definim functia matrice care construieste o matrice de m linii si n coloane  
def matrice(m, n):
    A = [] # initializam lista goala A care va contine randurile matricei
    numar_curent = 2 # incepem de la 2, primul numar valid
    for i in range(m): # parcurgem liniile matricei
        rand = [] # initializam lista goala
        for j in range(n): # parcurgem coloanele matricei
            while not numar_valid(numar_curent): # cautam primul numar valid, daca nu gasim, il cautam pe urmatorul
                numar_curent += 1
            rand.append(numar_curent) # adaugam numarul valid gasit in randul curent
            numar_curent += 1 # trecem la urmatorul numar pentru a-l valida si a adauga in randul curent
        A.append(rand) # adaugam randul curent in matricea finala A
    return A

if __name__ == "__main__":
    m = int(input("Introduceți numărul de linii: "))
    n = int(input("Introduceți numărul de coloane: "))
    if m < 2 or m > 20 or n < 2 or n > 20: # verificam restrictiile
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        A = matrice(m, n) # generam matricea conform dimensiunilor introduse
        for rand in A: # afisam matricea linie cu linie
            print(" ".join(str(x) for x in rand))