0770 - Perm Col

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Sursă: [1]

Cerință

Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se permute coloanele matricei circular spre stânga cu o poziție.

Date de intrare

Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spații, reprezentând elementele matricei, linie cu linie.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul afișează pe ecran elementele matricei transformate, câte un linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări

  • 1 ≤ m, n ≤ 100
  • elementele matricei vor fi mai mici decât 1.000.000

Exemple

Exemplu 1

Date de intrare
4 6
4 20 15 23 18 9
1 8 23 22 14 18
17 15 13 18 12 15
3 18 8 20 12 5
Date de ieșire
20 15 23 18 9 4
8 23 22 14 18 1
15 13 18 12 15 17
18 8 20 12 5 3

Rezolvare

def citire_lin_col():
    try:
        lin = int(input("Introduceti numarul de linii: "))
        col = int(input("Introduceti numarul de coloane: "))
        if 1 <= lin <= 100 and 1 <= col <= 100:
            print("Datele sunt corecte.")
            return lin, col
        else:
            print("Datele nu sunt conform restricțiilor impuse.")
            exit()
    except ValueError:
        print("Trebuie introduse doar numere intregi.")
        exit()

def citeste_valori_matrice(lin, col):
    matrice = []
    for linie in range(lin):
        matrice.append([])
        for coloana in range(col):
            while True:
                try:
                    n = int(input("Introduceti un numar: "))
                    if 0 <= n <= 1000000:
                        print("Datele sunt corecte.")
                        matrice[linie].append(n)
                        break
                    else:
                        print("Datele nu sunt conform restricțiilor impuse.")
                except ValueError:
                    print("Trebuie introduse doar numere intregi.")
    return matrice

def PermCol(matrice, n, m):
    for i in range(n):
        aux = matrice[i][0]
        for j in range(m - 1):
            matrice[i][j] = matrice[i][j + 1]
        matrice[i][m - 1] = aux

    for i in range(n):
        for j in range(m):
            print(matrice[i][j], end=' ')
        print()

if _name_ == "_main_":
   n, m = citire_lin_col()
   matrice = citeste_valori_matrice(n, m)
   PermCol(matrice, n, m)

Explicatii

Acest cod citeste de la tastatura dimensiunile si valorile unei matrice, apoi efectueaza o permutare a elementelor fiecarei coloane a matricei si afiseaza matricea rezultata.
Mai exact, functia citire_lin_col() citeste numarul de linii si coloane ale matricei de la tastatura, verificand ca valorile introduse sa se incadreze in intervalul [1,100], si returneaza aceste valori.
Functia citeste_valori_matrice(lin, col) creeaza o matrice de dimensiunea specificata, apoi citeste valori intregi pentru fiecare element din matrice, verificand ca acestea sa fie in intervalul [0,1000000], si adauga elementele la matricea creata anterior.
Functia PermCol(matrice, n, m) primeste ca parametri matricea citita anterior, precum si numarul de linii si coloane, si permuta fiecare coloana a matricei astfel incat primul element sa ajunga ultimul si toate celelalte elemente sa se deplaseze cu o pozitie spre stanga. Rezultatul permutarii este afisat apoi la consola.
In final, functiile sunt apelate in ordinea: citire_lin_col() pentru a citi dimensiunile matricei, citeste_valori_matrice(lin, col) pentru a citi valorile matricei, si PermCol(matrice, n, m) pentru a permuta si afisa matricea rezultata.