non ho analizzato tutto il codice ma controlla questo

cout << "Input valori\n";
for(r=0;r<3;r++){
...
for(c=0;c<3;c++){
// attenzione questa riga deve essere sbagliata vedi sotto
// v1[r][c]=(r-1)*3 +c;
v1[r][c]=r*3 +c;
cout<< "v1[r][c]" << v1[r][c] << "\n";
}}
...
questo [ il mio output
[sergio@localhost tmp]$ ./a.out
Input valori
v1[r][c]0
v1[r][c]1
v1[r][c]2
v1[r][c]3
v1[r][c]4
v1[r][c]5
v1[r][c]6
v1[r][c]7
v1[r][c]8
Ciao
0 - 0
Ciao
0 - 1
Ciao
0 - 2
Ciao
1 - 0
Ciao
1 - 1
Ciao
1 - 2
Ciao
2 - 0
Ciao
2 - 1
Ciao
2 - 2
Matrice1
6 7 8
8 4 6
6 7 8


Matrice2
0 1 3
3 4 6
6 7 8
[sergio@localhost tmp]$

ciao