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