[ Foro de C ]

Menú modificar matrices

02-Dec-2021 04:33
Xoán Araújo
0 Respuestas

Por alguna razon que desconozco el código hace lo que quiere xD. Las matrices se guardan mal y no sé la razón. Por otra parte la función de pausar no soy capaz de hacerla funcionar. Si alguien sabe que es lo que estoy haciendo mal y lo comenta perfe

-------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdbool.h>
#define TITLE 'PROGRAMA MATRICES'
#define OP1 'D'
#define OP2 'M'
#define OP3 'S'
#define OP4 'R'
#define OP5 'E'

void getmatrix(int n,int matrix[n][n]);
void printmatrix(int n, int matrix[n][n]);
void changematrix(int n, int matrix[n][n]);
int sum();
int dif();
int selectOption();
void explainMenu();
void manageMenu();

void printmatrix(int n, int matrix[n][n]){

   printf("Matriz actual:\n");
   int r,c;
   for(r=0;r<n;r++){
       for(c=0;c<n;c++){
           if(c!=0)
               printf("%s%3d%s","",matrix[r][c],(c==n-1?"]\n":""));
           else
               printf("%s%d%s","[",matrix[r][c],(c==n-1?"]\n":""));
       }
   }
}

void getmatrix(int n,int matrix[n][n]){
   int r,c;

   printf("De que orden quieres que sea la matriz?\n");
   scanf("%d",&n);
   printf("Define los elementos de la matriz de orden %dx%d:\n",n,n);
   for(r=0;r<n;r++){
       for(c=0;c<n;c++){
           printf("%dx%d?:",r+1,c+1);
           scanf("%d",&matrix[r][c]);
       }
   }
   printmatrix(n,matrix);
}

void changematrix(int n, int matrix[n][n]) {
   int row, column;
   printf("Que posicion de la matriz (%dx%d) quieres modificar? Ej: \"1x2\"\n", n+1, n+1);
   scanf("%d%*c%d", &row, &column);
   row--;
   column--;
   printf("Que valor quieres que tenga el elemento de posicion %dx%d\n", row+1, column+1);
   scanf("%d", &matrix[row][column]);
   printf("La matriz se ha modificado.\n");
   printmatrix(n,matrix);
}

void pause() {
   printf("\nPulse la tecla ENTER para continuar...\n");
   getchar();
}

int selectOption(){
   char option;
   printf("Selecciona la opcion [%c] [%c] [%c] [%c] [%c]\n",OP1,OP2,OP3,OP4,OP5);
   scanf("%c",&option);
   return option;
}

void explainMenu(){
   //printf("%s\n\n",TITLE);
   printf("Opciones del programa:\n"
          "D) Definir la matriz\n"
          "M) Modificar la matriz\n"
          "S) Suma un numero entero a un elemento de la matriz\n"
          "R) Resta un numero entero a un elemento de la matriz\n"
          "E) Salir del programa\n");

}

void manageMenu(){
   int n=0;
   int matrix[n][n];

   bool repeat=true;
   do{
   explainMenu();
       switch (selectOption()) {
           case OP1:
               getmatrix(n, matrix);
               pause();
               break;
           case OP2:
               changematrix(n,matrix);
               pause();
               break;
           case OP3:
               pause();
               break;
           case OP4:
               pause();
               break;
           case OP5:{
               repeat=false;
               printf("----------------------------------------\n"
                      "------------FIN DEL PROGRAMA------------\n"
                      "----------------------------------------\n");
               break;
           }
           default:
               printf("Error en el programa.");
               break;
       }
   } while (repeat);
}

int main() {
/*    int N = 3;
   int matrix[N][N];

   printf("Define la matriz que vas a modificar en el programa.\n"
          "----------------------------------------------------\n");
   getmatrix(N,matrix);*/
   manageMenu();

   return 0;
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)