Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
2543 - Pattern 2
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Cerința == Se dă un număr natural '''n'''. Se construiește o matrice pătratică de dimensiune '''2^n-1''', după următoarele reguli: -elementul din mijlocul matricii este egal cu '''n''' -elementele de pe linia mediană și cele de pe coloana mediană (exceptând elementul din mijlocul matricii) sunt nule -folosind linia mediană și coloana mediană, se împarte matricea în alte 4 matrici care se generează similar, dar au dimensiunea '''2^(n-1)-1'''. Calculați și afișați suma elementelor din matricea construită conform regulilor de mai sus. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran: "Datele sunt introduse corect.", programul va afișa pe ecran suma elementelor din matrice. Dacă sunt mai multe soluții, trebuie afișată cea mai din stânga-sus poziție. În cazul în care datele nu respectă restricțiile, se va afișa: "Datele nu corespund restricțiilor impuse.". == Restricții și precizări == :1 ≤ n ≤ 15 == Exemple == ===Exemplul 1=== ; ''ecran'' :Introduceți un număr natural n: 3 ; ''ecran'' :Datele sunt introduse corect. : Suma elementelor din matrice este 27 ===Exemplul 2=== ; ''ecran'' :Introduceți un număr natural n: 2 ; ''ecran'' :Datele sunt introduse corect. : Suma elementelor din matrice este 6 ===Exemplul 3=== ; ''ecran'' :Introduceți un număr natural n: -1 ; ''ecran'' :Datele nu corespund restricțiilor impuse. <br> == Rezolvare == <syntaxhighlight lang="python" line="1"> # 2543 import sys def validare_date(n): if n < 1 or n > 15: print("Datele nu corespund restricțiilor impuse.") sys.exit(0) def construieste_matrice(n, linie, coloana, dimensiune): if dimensiune == 1: return [[n]] subdimensiune = dimensiune // 2 matrice = [[0] * dimensiune for _ in range(dimensiune)] mijloc = subdimensiune matrice[mijloc][mijloc] = n coloana_stanga = coloana - subdimensiune coloana_dreapta = coloana + subdimensiune linie_sus = linie - subdimensiune linie_jos = linie + subdimensiune matrice_mijloc_sus = construieste_matrice(n - 1, linie_sus, coloana, subdimensiune) matrice_mijloc_jos = construieste_matrice(n - 1, linie_jos, coloana, subdimensiune) matrice_mijloc_stanga = construieste_matrice(n - 1, linie, coloana_stanga, subdimensiune) matrice_mijloc_dreapta = construieste_matrice(n - 1, linie, coloana_dreapta, subdimensiune) for i in range(dimensiune): for j in range(dimensiune): if i == mijloc or j == mijloc: continue if i < mijloc: if j < mijloc: matrice[i][j] = matrice_mijloc_sus[i][j] else: matrice[i][j] = matrice_mijloc_dreapta[i][j - mijloc - 1] else: if j < mijloc: matrice[i][j] = matrice_mijloc_stanga[i - mijloc - 1][j] else: matrice[i][j] = matrice_mijloc_jos[i - mijloc - 1][j - mijloc - 1] return matrice def calculeaza_suma_elementelor(matrice): suma = 0 for i in range(len(matrice)): for j in range(len(matrice)): suma += matrice[i][j] return suma n = int(input("Introduceți un număr natural n: ")) validare_date(n) linie = coloana = dimensiune = 2**n - 1 matrice = construieste_matrice(n, linie // 2, coloana // 2, dimensiune) suma = calculeaza_suma_elementelor(matrice) print("Datele sunt introduse corect.") print(f"Suma elementelor din matrice este {suma}.") </syntaxhighlight> ==Explicatie== Programul primește de la tastatură un număr natural n și construiește o matrice pătratică de dimensiune 2^n-1 conform regulilor din enunț. Apoi, se calculează suma elementelor din matrice și se afișează pe ecran. Funcția validare_date(n) primește numărul n și verifică dacă acesta respectă restricțiile impuse (1 ≤ n ≤ 15). Dacă numărul nu respectă aceste restricții, se afișează un mesaj corespunzător și programul se oprește prin apelul funcției sys.exit(0). Funcția construieste_matrice(n, linie, coloana, dimensiune) primește parametrii necesari pentru a construi matricea conform regulilor din enunț și returnează matricea construită. Funcția utilizează o tehnică de recursivitate pentru a construi matricea, prin împărțirea acesteia în patru submatrici similare de dimensiune 2^(n-1)-1. Funcția calculeaza_suma_elementelor(matrice) primește o matrice ca parametru și calculează suma elementelor acesteia. În programul principal se citește numărul n de la tastatură, se validează datele și se construiește matricea conform regulilor din enunț. Apoi, se calculează suma elementelor din matrice și se afișează pe ecran un mesaj corespunzător.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width