Quiero comparar una matriz que ingresa el usuario con una ya almacenada en una variable y determinar si son o no iguales. El problema es que al comparar, hay casos donde me dice que le matriz ingresada es igual a la otra pero claramente no es así! La comparación no está funcionando como debe.
Código
#include <iostream> #include <cstring> using namespace std; int main(){ char verificacion1[5]; char verificacion2[2]="v"; int num12, num13, num21, num22, num31, num33; int matriz1[3][3]= { {3, 0, 0}, {0, 0, 3}, {0, 3, 0} }; int matriz1correcta[3][3] = { {3, 1, 2}, {1, 2, 3}, {2, 3, 1}, }; int i, j; int m; cout << "Esta es la matriz!" << endl; for(int i = 0; i < 3; i++) {//Muestro en pantalla la matriz incompleta. for(int j = 0; j < 3; j++) { printf("%d ", matriz1[i][j]); } printf("\n"); } cout << "Ingresa un numero en la fila 1, columna 2: "; cin >> num12; matriz1[0][1] = num12; cout << "Ingresa un numero en la fila 1, columna 3: "; cin >> num13; matriz1[0][2] = num13; cout << "Ingresa un numero en la fila 2 , columna 1: "; cin >> num21; matriz1[1][0] = num21; cout << "Ingresa un numero en la fila 2, columna 2: "; cin >> num22; matriz1[1][1] = num22; cout << "Ingresa un numero en la fila 3, columna 1: "; cin >> num31; matriz1[2][0] = num31; cout << "Ingresa un numero en la fila 3 , columna 3: "; cin >> num33; matriz1[2][2] = num33; cout << endl << endl; cout << "Este es la matriz que acabas de armar!" << endl; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { printf("%d ", matriz1[i][j]); } printf("\n"); } do{ cout << endl << "Presiona la tecla 'v' para determinar si es correcto o no: "; cin >> verificacion1; if (strcmp(verificacion1,verificacion2)==0){ for(i=0; i<3; i++) { for (j=0; j<3; j++) { if(matriz1[i][j]!= matriz1correcta[i][j]) { m=1; } else { m=0; } } } if(m==1){ cout << "no son iguales!"; break; } if(m==0){ cout << "son iguales!"; } } else { cout << "Por favor, ingrese la letra que se le pide."; } }while(strcmp(verificacion1,verificacion2)!=0); return 0; }