ciao a tutti, da poco a scuola abbiamo iniziato il c++ e subito giu con le matrici

il codice riempe una matrice 3x3 con i valori da 1 a9 e poi deve copiarli nella matrice2 nell'ordine inverso ([0][0] diventa [2][2]).
inoltre lo scambio deve essere fatto seguendo questo percorso:

codice:
--->---|
       |
---<---|
|
|-->----
in teoria saprei come fare, solo che all'esecuzione da o err e 0 warn ma da "matrice.exe il prog ha eseguito un operazoine nn valida e verrà terminato"
prima avevo anche provato a prendere i valori in input da tastiera, li prenderva e sutbito dopo errore...

che c'è che nn va?!?

codice:
#include "iostream.h"
#include "stdio.h"
#include "string.h"

int inv(int f){
int tmp;
tmp=f;
	switch(tmp){
	case 1:
		f= 3;
		break;
	case 3:
		f=1;
		break;
	}
return tmp;
}		

int main()
{
	  
int v1[2][2];
int v2[2][2];
int r,c,ir,ic;

cout << "Input valori\n";
for(r=0;r<3;r++){

	for(c=0;c<3;c++){
		v1[r][c]=(r-1)*3 +c;
		cout<< v1[r][c];
}}

r=0;
c=0;

for(r=0;r<3;r++){
	for(c=0;c<3;c++){
		cout <<"Ciao\n";
		ir=inv(r);
		ic=inv(c);
		if(r%2==0){ //pari
			v2[r][c]=v1[ir][ic];
		}else{
			v2[ir][ic]=v1[r][c];
		}
		cout<< r << " - " << c << "\n";
	}
}

cout << "Matrice1\n";
for(r=0;r<3;r++){
	for(c=0;c<3;c++){
		cout << v1[r][c] <<"\t";
	}
	cout << "\n";
}
	cout << "\n\n";

cout << "Matrice2\n";
for(r=0;r<3;r++){
	for(c=0;c<3;c++){
		cout << v2[r][c] <<"\t";
	}
	cout << "\n";
}
return 0;

}