2835 - Gen Mat 26
Cerința
Scrieţi un program care citește de la tastatură un număr natural, n (n∈[2,20]), apoi n numere naturale din intervalul [0,104], reprezentând, de la stânga la dreapta, în această ordine, valorile elementelor aflate pe prima linie a unui tablou bidimensional cu n linii și n coloane. Programul construiește în memorie tabloul, inițializând celelalte elemente, astfel încât fiecare linie să se obțină prin permutarea circulară a elementelor liniei anterioare, de la stânga spre dreapta, cu o poziție.
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ă numărul n și cele n numere.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa 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. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări
- 2 ≤ n ≤ 20
Exemplu 1
- Intrare
- 4
- 1 1 3 2
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 1 3 2
- 2 1 1 3
- 3 2 1 1
- 1 3 2 1
Exemplu 2
- Intrare
- 54
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 2835 Gen Mat 26
def validare(nr_elemente):
if 2 <= nr_elemente <= 20: # print("Datele de intrare corespund restrictiilor impuse") return True else: raise ValueError("")
def gen_mat26(nr_linii, prima_linie):
matrice = [] for linie in range(nr_linii): linia = [] for coloana in range(nr_linii): linia.append(0) matrice.append(linia)
matrice[0] = prima_linie for linie in range(1, nr_linii): ultimul_numar = matrice[linie-1][nr_linii-1] for coloana in range(nr_linii-1, -1, -1): if coloana == 0: matrice[linie][coloana] = ultimul_numar else: matrice[linie][coloana] = matrice[linie-1][coloana-1]
for linie in range(nr_linii): for coloana in range(nr_linii): print(matrice[linie][coloana], end=" ") print()
if __name__ == '__main__':
n = int(input("Introduceti numarul n: "))
sir = input(f"Introduceti prima linie ( {n} numere cu spatii intre ele): ") sir = sir.split() try: sir = list(map(int, sir)) validare(n) gen_mat26(n, sir)
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>