[ Foro de C ]
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.)