Scrieți un program care citește de la tastatură un număr natural n și construiește o matrice cu 3*n linii și 3*n coloane, împărțită în n*n zone, numerotate de la 1 la n*n, de sus în jos și de la stânga la dreapta. Fiecare zonă ocupă 3 linii și 3 coloane și va conține pe diagonale numărul său de ordine, restul elementelor fiind egale cu 0.
Date de intrare
Programul citetșe de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran matricea construită, câte o linie din matrice pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.
Exemplu
Intrare
2
Ieșire
1 0 1 2 0 2
0 1 0 0 2 0
1 0 1 2 0 2
3 0 3 4 0 4
0 3 0 0 4 0
3 0 3 4 0 4
indicatii :
Parcurgerea matricii se poate face din 3 în 3 linii și din 3 în 3 coloane.
În fiecare zonă în care ajungem setăm valorile diagonalelor ei cu numărul zonei curente.
SergiuLiogchii:
Salut, în ce limbaj de programare trebuie scris programul?
Răspunsuri la întrebare
Răspuns de
4
Răspuns:
#include <iostream>
using namespace std;
int n,a,b,i,j,zona,m[61][61];
int main()
{
cin >> n;
for (a=0; a<n; a++)
{
i=3*a;
for (b=0; b<n; b++)
{
++zona; j=3*b;
m[i+1][j+1]=m[i+1][j+3]=m[i+3][j+1]=m[i+3][j+3]=m[i+2][j+2]=zona;
}
}
cout << " matricea generata: \n";
for (i=1; i<=3*n; i++)
{
for (j=1; j<=3*n; j++)
cout << m[i][j] << " ";
cout << "\n";
}
}
Explicație:
array = []
for i in range(0, n * 3 + 1):
array.append([0] * (n * 3 + 1))
for i in range(1, n * 3 + 1):
print(' '.join([str(array[i][j]) for j in range(1, n * 3 + 1)]))
array = [[0] * (n * 3) for i in range(n * 3)]
zona = 0
for a in range(0, n):
i = 3 * a
for b in range(0, n):
zona += 1
j = 3 * b
array[i][j] = array[i][j+2] = array[i+2][j] = array[i+2][j+2] = array[i+1][j+1] = zona
for row in array:
print(' '.join([str(i) for i in row]))
Alte întrebări interesante
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Evaluare Națională: Lb. Română ,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă