0215 - Gen Mat 6: 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 cu exact 5 cifre şi construieşte în memorie o matrice cu 6 linii şi 6 coloane ale cărei elemente vor primi valori după cum urmează: : -elementele aflate pe diagonala principală sunt toate nule; : -elementele de pe linia 1, aflate deasupra diagonalei principale precum şi elementele de pe coloana 1, aflate sub diagonala principală au toate valoarea egală cu cifra unităţilor lui n...
 
No edit summary
Line 29: Line 29:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0215- Gen Mat 6
#0215- Gen Mat 6
def verificare_restrictii(n):
    if nr_cifre(n) == 5:
        return True
    else:
        return False
def nr_cifre(numar):
    numar_cifre = 0
    while numar>0:
        numar_cifre += 1
        numar //= 10
    return numar_cifre
def genmat6(n):
    numar = n
    matrice = []
    nr_linii = nr_cifre(n) + 1
    for i in range(1, nr_linii+1):
        linie = []
        for j in range(1, nr_linii+1):
            linie.append(0)
        matrice.append(linie)
    for linie in range(1,nr_linii+1):
        for coloana in range(1, nr_linii+1):
            if linie + coloana > linie * 2:
                matrice[linie-1][coloana-1] = numar % 10
        numar //= 10
    numar = n
    for coloana in range(1,nr_linii+1):
        for linie in range(1, nr_linii+1):
            if linie + coloana < linie * 2:
                matrice[linie-1][coloana-1] = numar % 10
        numar //= 10
    for linie in matrice:
        for element in linie:
            print(element, end=" ")
        print()
if __name__ == '__main__':
    nr = int(input("Introduceti numarul: "))
    if verificare_restrictii(nr):
        print("Datele de intrare corespund restrictiilor impuse.")
        genmat6(nr)
    else:
        print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>

Revision as of 20:13, 13 March 2023

Cerința

Scrieţi un program care citeşte de la tastatură un număr natural n cu exact 5 cifre şi construieşte în memorie o matrice cu 6 linii şi 6 coloane ale cărei elemente vor primi valori după cum urmează:

-elementele aflate pe diagonala principală sunt toate nule;
-elementele de pe linia 1, aflate deasupra diagonalei principale precum şi elementele de pe coloana 1, aflate sub diagonala principală au toate valoarea egală cu cifra unităţilor lui n;
-elementele de pe linia 2, aflate deasupra diagonalei principale precum şi elementele de pe coloana 2, aflate sub diagonala principală au toate valoarea egală cu cifra zecilor lui n;
-elementele de pe linia 6, aflate deasupra diagonalei principale precum şi elementele de pe coloana 6, aflate sub diagonala principală au toate valoarea egală cu cifra zecilor de mii a lui n;

Date de intrare

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

Date de ieșire

Programul afișează pe ecran matricea 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

n = 5

Exemplu 1

Intrare
28731
Ieșire
Datele introduse corespund restricțiilor impuse.
0 1 1 1 1 1
1 0 3 3 3 3
1 3 0 7 7 7
1 3 7 0 8 8
1 3 7 8 0 2
1 3 7 8 2 0


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0215- Gen Mat 6

def verificare_restrictii(n):

   if nr_cifre(n) == 5:
       return True
   else:
       return False


def nr_cifre(numar):

   numar_cifre = 0
   while numar>0:
       numar_cifre += 1
       numar //= 10
   return numar_cifre


def genmat6(n):

   numar = n
   matrice = []
   nr_linii = nr_cifre(n) + 1
   for i in range(1, nr_linii+1):
       linie = []
       for j in range(1, nr_linii+1):
           linie.append(0)
       matrice.append(linie)
   for linie in range(1,nr_linii+1):
       for coloana in range(1, nr_linii+1):
           if linie + coloana > linie * 2:
               matrice[linie-1][coloana-1] = numar % 10
       numar //= 10
   numar = n
   for coloana in range(1,nr_linii+1):
       for linie in range(1, nr_linii+1):
           if linie + coloana < linie * 2:
               matrice[linie-1][coloana-1] = numar % 10
       numar //= 10
   for linie in matrice:
       for element in linie:
           print(element, end=" ")
       print()


if __name__ == '__main__':

   nr = int(input("Introduceti numarul: "))
   if verificare_restrictii(nr):
       print("Datele de intrare corespund restrictiilor impuse.")
       genmat6(nr)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>