Salve ho il seguente esercizio da svolgere:
Si implementi in C++ una funzione che, ricevuta una matrice quadrata M di dimensione n x n, e due array A e B, entrambi di dimensione k, stampi prendendo la posizione individuate dagli elementi A e B (pressi a coppie) le sottomatrici (3*3) corrispondenti, ad esempio:
codice:
int M[N][N] = {
{1,3,3,4,5},
{9,2,3,1,5},
{1,2,5,4,5},
{7,2,3,0,5},
{1,2,3,4,7}};
int A[K] = {1,2,4};
int B[K] = {0,2,4};
Dovrebbe prendere prima le coordinare 1 e 0 (A e B) ed stampare la sottomatrice 3*3:
codice:
9 2 3
1 2 5
7 2 3
Questo è il codice che io ho tirato fuori:
codice:
#include <iostream>
using namespace std;
const int n=6;
const int k=3;
int stampaSotto (int [n][n],int,int);
void stampaMatrice (int [n][n]);
int main() {
int a[][n]={{1,2,3,4,5,6},
{7,8,9,5,6,9},
{3,4,5,6,7,8},
{1,2,2,2,2,2},
{3,4,5,6,7,8},
{1,1,1,1,1,1}};
int b[k]={0,1,2};
int c[k]={1,2,3};
stampaMatrice (a);
cout<<endl;
stampaSotto (a,b,c);
return 0;
}
void stampaMatrice (int a[n][n]){// stampa la matrice ordinaria
for (int i=0;i<n; i++)
{
for (int j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
int stampaSotto (int a[][n],int b, int c){
for(int i=b;i<b+3;i++)
{ for(int j=c;j<c+3;j++)
cout<<a[i][j];
}
cout<<endl;
}