1585 - Gen Mat 23: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerința == Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte o matrice pătratică având n linii şi n coloane, cu elemente 0 şi 1, dispuse în pătrate concentrice, fiecare pătrat fiind format doar din valori 1 sau doar din valori 0, ca în exemplul de mai jos, astfel încât elementul aflat pe prima linie şi prima coloană să fie egal cu 1. == Date de intrare == Programul citește de la tastatură numărul n. == Date de ieșir...
 
 
(2 intermediate revisions by the same user not shown)
Line 4: Line 4:
Programul citește de la tastatură numărul n.
Programul citește de la tastatură numărul n.
== Date de ieșire ==
== Date de ieșire ==
Programul va afișa pe ecran matricea construită, câte o linie a matricei pe o linie a ecranului, cu un spaţiu între elementele fiecărei linii.
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 matricea construită, câte o linie a matricei pe o linie a ecranului, cu un spaţiu între elementele fiecărei linii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
 
== Restricții și precizări ==
== Restricții și precizări ==
1 ≤ n ≤ 30
1 ≤ n ≤ 30
Line 26: Line 27:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
#1585 Gen Mat 23
# 1585 Gen Mat 23
def verificare_restrictii(nr_linii):    # functia de verificare a restrictiilor
    if 1 <= nr_linii <= 30:
        return True
    else:
        return False
 
 
def genmat23(nr_linii):
    matrice = []
 
    for i in range(0, nr_linii):        # crearea matricii patratice
        linie = []
        for j in range(0, nr_linii):
            linie.append(0)
        matrice.append(linie)
 
    i = 0          # i reprezinta startul unui chenar de 1 iar nr_linii - 1 va fi astfel sfarsitul acelui chenar
    while i < nr_linii-i:
        if i % 2 == 0:  # numarand de la 0, 1 va fi introdus pe liniile 0, 2 ,4 etc adica pe linii si coloane pare
            for linie in range(i, nr_linii-i):
                # completam doar marginile cu 1
                if linie == i or linie == nr_linii - 1:    # prima si ultima linie
                    for coloana in range(i, nr_linii-i):
                        matrice[linie][coloana] = 1
                else:                                      # prima si ultima coloana
                    matrice[linie][i] = 1
                    matrice[linie][nr_linii-i-1] = 1
 
        i += 1  # trecem la urmatorul chenar
 
    for linie in matrice:              # afisarea
        for element in linie:
            print(element, end=" ")
        print()
 
 
if __name__ == '__main__':
    # ne asteptam ca datele de intrare sa fie gresite fapt care ar genera o eroare de tipul ValueError
    # pe care o tratam corespunzator
    try:
        numar_linii = int(input("Introduceti numarul n "))  # citirea numarului de linii
        if verificare_restrictii(numar_linii):          # veridicarea restrictiilor
            print("Datele de intrare corespund restrictiilor impuse.")
            genmat23(numar_linii)                      # apelul functiei de rezolvare
        else:
            print("Datele de intrare nu corespund restrictiilor impuse.")
    except ValueError:
        print("Datele de intrare nu corespund restrictiilor impuse.")
       
</syntaxhighlight>

Latest revision as of 18:17, 29 April 2023

Cerința[edit | edit source]

Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte o matrice pătratică având n linii şi n coloane, cu elemente 0 şi 1, dispuse în pătrate concentrice, fiecare pătrat fiind format doar din valori 1 sau doar din valori 0, ca în exemplul de mai jos, astfel încât elementul aflat pe prima linie şi prima coloană să fie egal cu 1.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

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 matricea construită, câte o linie a matricei pe o linie a ecranului, cu un spaţiu între elementele fiecărei linii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări[edit | edit source]

1 ≤ n ≤ 30

Exemplu 1[edit | edit source]

Intrare
6
Ieșire
Datele introduse corespund restricțiilor impuse.
1 1 1 1 1 1
1 0 0 0 0 1
1 0 1 1 0 1
1 0 1 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1


Exemplu 2[edit | edit source]

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


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 1585 Gen Mat 23

def verificare_restrictii(nr_linii): # functia de verificare a restrictiilor

   if 1 <= nr_linii <= 30:
       return True
   else:
       return False


def genmat23(nr_linii):

   matrice = []
   for i in range(0, nr_linii):        # crearea matricii patratice
       linie = []
       for j in range(0, nr_linii):
           linie.append(0)
       matrice.append(linie)
   i = 0           # i reprezinta startul unui chenar de 1 iar nr_linii - 1 va fi astfel sfarsitul acelui chenar
   while i < nr_linii-i:
       if i % 2 == 0:  # numarand de la 0, 1 va fi introdus pe liniile 0, 2 ,4 etc adica pe linii si coloane pare
           for linie in range(i, nr_linii-i):
               # completam doar marginile cu 1
               if linie == i or linie == nr_linii - 1:     # prima si ultima linie
                   for coloana in range(i, nr_linii-i):
                       matrice[linie][coloana] = 1
               else:                                       # prima si ultima coloana
                   matrice[linie][i] = 1
                   matrice[linie][nr_linii-i-1] = 1
       i += 1  # trecem la urmatorul chenar
   for linie in matrice:               # afisarea
       for element in linie:
           print(element, end=" ")
       print()


if __name__ == '__main__':

   # ne asteptam ca datele de intrare sa fie gresite fapt care ar genera o eroare de tipul ValueError
   # pe care o tratam corespunzator
   try:
       numar_linii = int(input("Introduceti numarul n "))  # citirea numarului de linii
       if verificare_restrictii(numar_linii):          # veridicarea restrictiilor
           print("Datele de intrare corespund restrictiilor impuse.")
           genmat23(numar_linii)                       # apelul functiei de rezolvare
       else:
           print("Datele de intrare nu corespund restrictiilor impuse.")
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse.")
       

</syntaxhighlight>