Salve a tutti...questo che ho postato è una prima parte di un programma che avendo una matrice rettangolare si sceglie un elemento indicando riga e colonna e si moltiplica la sottomatrice che si crea con tutti gli elementi attorno all'elemento indicato , con un matrice "maschera" di valori già prefissati...a realizzare il programma sono capace...ma in un passaggio ho un dubbio...sapendo che nei bordi non si può creare una matrice 3x3 allora faccio una serie di if annidati...mi chiedevo se c'è una via più breve...
codice:
#include <iostream>
#include <cstdlib>
#include <iomanip>
//Prgramma su matrici...filtraggio immagini...
using namespace std;
int main()
{
do
{
//inizializazzione
int const valori=255;
int const m=3;
int const n=5;
//inizializzazione matrice immagine
int immagine[m][n];
for(int j=0;j<3;j++)
{
for(int k=0;k<5;k++)
{
immagine[j][k]=rand()% 256;
}
}
//testing valori
for(int j=0;j<3;j++)
{
cout<<setw(6);
for(int k=0;k<5;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
};
//spazio tra matrici
cout<<endl<<endl<<endl;
/*matrice maschera
int maschera[m][m]={{-1,-2,1},{-2,0,2},{1,2,-1}};
for(int j=0;j<3;j++)
{
cout<<setw(6);
for(int k=0;k<3;k++)
{
cout<<maschera[j][k]<<setw(6);
}
cout<<endl;
}
*/
//scelta elemento da filtrare
int riga,colonna;
cout<<"In quale riga si trova elemento che si desidera filtrare?"<<endl;
cin>>riga;
cout<<"In quale colonna si trova elemento che si desidera filtrare?"<<endl;
cin>>colonna;
//IF ANNIDATI
if(riga==2 && colonna==1)
{
for(int j=riga-2;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-1;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==2 && colonna==5)
{
for(int j=riga-2;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==2 && colonna!=1 && colonna!=5)
{
for(int j=riga-2;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==1 && colonna!=1 && colonna!=5)
{
for(int j=riga-1;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==3 && colonna!=1 && colonna!=5)
{
for(int j=riga;j<riga+2;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==1 && colonna==1)
{
for(int j=riga-1;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-1;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==1 && colonna==5)
{
for(int j=riga-1;j<riga+1;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==3 && colonna==1)
{
for(int j=riga-2;j<riga;j++)
{
cout<<setw(6);
for(int k=colonna-1;k<colonna+1;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
else
if(riga==3 && colonna==5)
{
for(int j=riga-2;j<riga;j++)
{
cout<<setw(6);
for(int k=colonna-2;k<colonna;k++)
{
cout<<immagine[j][k]<<setw(6);
}
cout<<endl;
}
cout<<endl<<endl<<endl;
}
cout<<"//////////////////////////////"<<endl;
}while(true);
return 0;
}