Buon giorno ragazzi,sono uno studente di un instituto tecnico,e sto svolgendo un esercizio in C++,l'esercizio consiste:

-ingrandire una matrice faccendo si che un quadrato della matrice di partenza corrisponda a un quadrato 2x2 della nuova matrice

-rimpicciolire la matrice faccendo si che un quadrato 2x2 della matrice di partenza corrisponda a un quadrato della nuova matrice



ecco il mio codice (ho sviluppato solo l'ingrandimento per ora):

codice:
#include <iostream>
#define Mp 3
#include <conio.h>
#include <stdlib.h>
#include <windows.h>

using namespace std;

void menu (int c);
void movimento_cursore(int &c);
void dimensionamento (int &righe,int &colonne);
void ingrandisci (int righe,int colonne,bool matrice[][colonne],bool m[][c]);
void caricamento(bool matrice[][colonne],int righe, int colonne);


int main()
{
    int righe,colonne;

    dimensionamento(righe,colonne);

    int r=righe*2,c=colonne*2;
    bool matrice[righe][colonne],m[r][c];

    caricamento(matrice,righe,colonne);

int opzione=0;
bool b=0;

do{
movimento_cursore(opzione);


switch (opzione)
{
    case 0: {
        ingrandisci(matrice,righe,colonne,m);
        break;
    }

    case 1:{
    break;
    }

    case 2:
        {
        b=1;
        break;
        }


}
}
while (b==1);
system("cls");
cout<<"Hai terminato il programma: ARRIVEDERCI! :D";
return 0;

}


void movimento_cursore(int &c){
    int key=0,opzione=0;

while (key != 13){  //tasto enter
menu (c);
key = getch();

switch (key) {

case 72:    //sopra
    {
    if (c>0)
        c--;
    else
        c=Mp-1;
    }
break;

case 80: //sotto
    {
    if (c<Mp-1)
        c++;
    else
        c=0;
    }
break;
}
}
}


void menu (int c){
system ("cls");
if(c==0)cout<<"--->";cout<<"Ingrandisci la matrice"<<endl;
if(c==1)cout<<"--->";cout<<"Rimpicciolisci la matrice"<<endl;
if(c==2)cout<<"--->";cout<<"Esci dal programma"<<endl;
}

void dimensionamento (int &righe,int &colonne){
cout<<"Inserisci le dimensioni della matrice (ATTENZIONE: se si vuole rimpicciolire la matrice le dimensioni devono essere multipli di 2)"<<endl<<endl;
cout<<"riga: ";
cin>>righe;
cout<<endl<<"colonne: ";
cin>>colonne;
cout<<endl<<"Inserimento avvenuto con successo";
system ("pause");
system ("cls");
}

void caricamento(bool matrice[][colonne],int righe,int colonne){
for (int i=0;i<righe;i++){
    for (int j=0;j<colonne;j++){
        cin>>matrice[i][j];
    }
}
}

void ingrandisci (bool matrice[][colonne],int righe,int colonne,bool m[][c]){
    bool comodo;
    int r_comodo,c_comodo;

    for (int i=0;i<righe;i++){
        for (int j=0;j<colonne;j++){
                comodo=matrice[i][j];
                r_comodo=i*2;
                c_comodo=j*2;
                m[r_comodo][c_comodo]=comodo;
                m[r_comodo][c_comodo+1]=comodo;
                m[r_comodo+1][c_comodo]=comodo;
                m[r_comodo+1][c_comodo+1]=comodo;
        }
    }

}

ma il compilatore (CodeBlocks) mi da un errore che non riesco a capire:



riga 12 error: use of parameter 'colonne' outside function body



perchè? nella riga 12 dichiaro un prototipo di una funzione che uso dopo,i parametri (in questo caso righe e colonne) vengono passati dal main alla funzione,qual'è il suo problema? XD