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; }

Rispondi quotando