0608 - NkX: Difference between revisions
Pagină nouă: == Cerinţa == Se dau două numere naturale '''n''' și '''k''', cu proprietatea că '''2*k < n'''. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune '''n''', formată din valorile '''1''' şi '''2''', construită astfel: * valorile de pe diagonala principală sunt '''1'''; * valorile de pe '''k''' pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt '''1'''; * valorile de pe '''k''' pseudodiagonale paralele cu... |
|||
(One intermediate revision by the same user not shown) | |||
Line 19: | Line 19: | ||
: 10 1 | : 10 1 | ||
; Ieșire | ; Ieșire | ||
: Datele de intrare corespund restrictiilor impuse | |||
: 1 1 2 2 2 2 2 2 1 1 | : 1 1 2 2 2 2 2 2 1 1 | ||
: 1 1 1 2 2 2 2 1 1 1 | : 1 1 1 2 2 2 2 1 1 1 | ||
Line 29: | Line 30: | ||
: 1 1 1 2 2 2 2 1 1 1 | : 1 1 1 2 2 2 2 1 1 1 | ||
: 1 1 2 2 2 2 2 2 1 1 | : 1 1 2 2 2 2 2 2 1 1 | ||
<br> | |||
== Exemplu 2== | |||
; Intrare | |||
: 121 210 | |||
; Ieșire | |||
: Datele de intrare nu corespund restrictiilor impuse | |||
<br> | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare(nr, bare1): # functia de validare a datelor de intrare | |||
if not isinstance(nr, int) or nr < 1 or nr > 100: | |||
raise ValueError("Datele de intrare nu corespund restrictiilor impuse") | |||
if not isinstance(bare1, int) or bare1 < 0 or bare1 > 50: | |||
raise ValueError("Datele de intrare nu corespund restrictiilor impuse") | |||
print("Datele de intrare corespund restrictiilor impuse") | |||
def main(): | def main(): | ||
# | # Solicităm introducerea numerelor n și k | ||
print("Introduceți numerele n și k, separate printr-un spațiu: ") | |||
n, k = map(int, input().split()) | n, k = map(int, input().split()) | ||
try: | |||
validare(n, k) # apelul functiei de validare | |||
except ValueError as e: | |||
print(e) | |||
return | |||
# Inițializăm matricea cu valori de 2 | # Inițializăm matricea cu valori de 2 | ||
Line 48: | Line 75: | ||
for linie in matrice: | for linie in matrice: | ||
print(' '.join(map(str, linie))) | print(' '.join(map(str, linie))) | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 08:55, 12 November 2023
Cerinţa[edit | edit source]
Se dau două numere naturale n și k, cu proprietatea că 2*k < n. Să se afişeze pe ecran elementele unei matrice pătratice de dimensiune n, formată din valorile 1 şi 2, construită astfel:
- valorile de pe diagonala principală sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat deasupra acesteia sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala principală şi situate imediat sub aceasta sunt 1;
- valorile de pe diagonala secundară sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat deasupra acesteia sunt 1;
- valorile de pe k pseudodiagonale paralele cu diagonala secundară şi situate imediat sub aceasta sunt 1;
- restul valorilor din matrice sunt 2.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n k.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran matricea construită, câte o linie a matrice pe o linie a ecranului, elementele de pe o line fiind separate prin exact un spaţiu.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 100
Exemplu[edit | edit source]
- Intrare
- 10 1
- Ieșire
- Datele de intrare corespund restrictiilor impuse
- 1 1 2 2 2 2 2 2 1 1
- 1 1 1 2 2 2 2 1 1 1
- 2 1 1 1 2 2 1 1 1 2
- 2 2 1 1 1 1 1 1 2 2
- 2 2 2 1 1 1 1 2 2 2
- 2 2 2 1 1 1 1 2 2 2
- 2 2 1 1 1 1 1 1 2 2
- 2 1 1 1 2 2 1 1 1 2
- 1 1 1 2 2 2 2 1 1 1
- 1 1 2 2 2 2 2 2 1 1
Exemplu 2[edit | edit source]
- Intrare
- 121 210
- Ieșire
- Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare(nr, bare1): # functia de validare a datelor de intrare
if not isinstance(nr, int) or nr < 1 or nr > 100: raise ValueError("Datele de intrare nu corespund restrictiilor impuse")
if not isinstance(bare1, int) or bare1 < 0 or bare1 > 50: raise ValueError("Datele de intrare nu corespund restrictiilor impuse")
print("Datele de intrare corespund restrictiilor impuse")
def main():
# Solicităm introducerea numerelor n și k print("Introduceți numerele n și k, separate printr-un spațiu: ") n, k = map(int, input().split())
try: validare(n, k) # apelul functiei de validare except ValueError as e: print(e) return
# Inițializăm matricea cu valori de 2 matrice = [[2] * n for _ in range(n)]
# Parcurgem fiecare element din matrice for i in range(n): for j in range(n): # Dacă elementul se află pe una dintre diagonalele specificate, îl setăm la 1 if abs(i - j) <= k or abs(i + j - n + 1) <= k: matrice[i][j] = 1
# Afișăm matricea, fiecare linie pe o linie nouă și elementele separate prin spațiu for linie in matrice: print(' '.join(map(str, linie)))
if __name__ == "__main__":
main()
</syntaxhighlight>