Code:#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXROWS 20 #define MAXCOLS 20 int columnas, filas; void clrMatrix(double matrix[][MAXCOLS]) /* Establecer en 0.0 todos los elementos de la matriz */ { int i, j; for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) matrix[i][j] = 0.0; } void setMatrix(double matrix[][MAXCOLS]) /* Asignar números aleatorios a los elementos de la matriz */ { int i, j; static unsigned int s; s = s + time(NULL) * 100; srand(s); for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) matrix[i][j] = ((double) rand() / RAND_MAX); }void prnMatrix(double matrix[][MAXCOLS]) /* Imprime los valores de la matriz */ { int i, j; printf("\n"); for (i = 0; i < filas; i = i + 1) { for (j = 0; j < columnas; j = j + 1) printf("%10.2f ", matrix[i][j]); printf("\n"); } } void movMatrix(double dstMatrix[][MAXCOLS], double srcMatrix[][MAXCOLS]) /* Mueve, i. e. “asigna” los valores de la matriz srcMatrix a dstMatrix */ { int i, j; for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) dstMatrix[i][j] = srcMatrix[i][j]; } void addMatrix(double dstMatrix[][MAXCOLS], double srcMatrix[][MAXCOLS]) /* Suma de matrices */ { int i, j; for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) dstMatrix[i][j] += srcMatrix[i][j]; } void subMatrix(double dstMatrix[][MAXCOLS], double srcMatrix[][MAXCOLS]) /* Resta de matrices */ { int i, j; for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) dstMatrix[i][j] -= srcMatrix[i][j]; } void mulMatrix(double dstMatrix[][MAXCOLS], double srcMatrix[][MAXCOLS]) /* Multiplicacion de matrices (requiere validación de las dimensiones)*/ { int i, j, k; for (i = 0; i < MAXROWS; i = i + 1) for (j = 0; j < MAXCOLS; j = j + 1) for (k = 0; k < MAXCOLS; k = k + 1) {dstMatrix[i][j] = dstMatrix[i][j] + (dstMatrix[k][j] * srcMatrix[i][k]); } } void clrRow(double dstMatrix[][MAXCOLS], int row) /* Puesta en 0.0 de los elementos “fila” dada (row) de una matriz */ { int i; for(i = 0; i < MAXCOLS; i = i + 1) dstMatrix[row][i] = 0.0; }void clrCol(double dstMatrix[][MAXCOLS], int col) /* Puesta en 0.0 de los elementos “columna” dada (col) de una matriz */ { int i; for(i = 0; i < MAXROWS; i = i + 1) dstMatrix[i][col] = 0.0; } void getRow(double dstVector[], double srcMatrix[][MAXCOLS], int row) /* Devuelve, i. e. “asigna” los elementos de una fila de una matrizx a un vector */ { int i; for (i = 0; i < MAXCOLS; i = i + 1) dstVector[i] = srcMatrix[row][i]; } void prnVector(double vector[MAXROWS]) /* Imprime los valores de un vector */ { int i; printf("\n"); for (i = 0; i < MAXROWS; i = i + 1) printf("%8.2f\n", vector[i]); } int main() { double A[MAXROWS][MAXCOLS]; double B[MAXROWS][MAXCOLS]; double C[MAXROWS][MAXCOLS]; double D[MAXROWS]; double E[MAXCOLS]; int salir=1, raro,z=1, p,s; clrMatrix(A); clrMatrix(B); clrMatrix(C); setMatrix(A); setMatrix(B); setMatrix(C); do { printf (" Que opcion desea elegir?\n"); printf ("1.Crear matriz \n2.Suma de matrices \n3.Resta de matrices.\n"); printf ("4.Multiplicacion de matrices.\n5.Matriz Transpuesta\n6.Encontrar punto de cabalgadura de una matriz\n"); printf ("7.Borrar matrices guardadas\n"); scanf ("%d", &raro); switch(raro) { case 1: printf ("\n Cuantas filas tendran las matrices? (Tenga en cuanta que la suma no se efectuara si las matrices no son cuadradas)\n"); scanf ("%d", &filas); printf ("\n Cuantas columnas tendran las matrices?\n"); scanf ("%d", &columnas); printf("\nMatriz A:\n"); prnMatrix(A); printf("\nMatriz B:\n"); prnMatrix(B); z=0; break; case 2: if (z==0) { printf ("Sumatoria de la matriz A + B, tenga en cuenta que si las matrices no poseen el mismo tamaño no se efectuara la suma\n"); addMatrix(A, B); printf("\nMatriz A:\n"); prnMatrix(A); } else printf (" No se han creado matrices para sumar\n"); break; case 3: if (z==0) { printf ("Resta de la matriz A - B, tenga en cuenta que si las matrices no poseen el mismo tamaño no se efectuara la resta\n"); subMatrix(A, B); printf("\nMatriz A:\n"); prnMatrix(A); } else printf (" No se han creado matrices para restar\n"); break; } case 4: if (z==0) { printf ("Multiplicacion de la matriz A x B\n"); mulMatrix(A, B); prnMatrix(A); } else printf (" No se han creado matrices para multiplicar\n"); break; } while(salir==1); }
case label not within switch statement. It select case 4 yet when i take it out it compiles and runs just well.