Programación General > C/C++
Traspuesta de una matriz
(1/1)
ermiguel1979:
Hola a todos. Ya se que éste es un tema tratado con anterioridad en el foro, pero he mirado todos los post anteriores y no me entero de nada. Supongo que debe ser porque aún no sé utilizar correctamente funciones y procedimientos (se supone que debo hacer el ejercicio sin usarlos). El tema es que mi código no hace nada, creo que el problema está en la declaración del array que guarda la matriz.
El ejercicio dice así: Escribir un algoritmo que lea por teclado una matriz cuadrada de tamano 'n' y muestre por pantalla su traspuesta.
Mi código es el siguiente:
--- Código: C ---
#include <stdio.h>
#include <stdlib.h>
/*Algoritmo -> Traspuesta de una matriz*/
int main (void){
//DECLARACION DE VARIABLES
int m; //el tamaño de la matriz
int matriz[m][m]; //la matriz cuadrada
int fila, columna; //contadores de la lectura de la matriz origen
int i, j; //contadores de la traspuesta
int aux; //intermedia de la traspuesta
int a, b; //contadores del resultado
/*Leer variables*/
printf("Inserte tamaño de la matriz cuadrada: ");
scanf("%i", &matriz[m][m]);
//OPERACIONES
/*Escribir la matriz origen*/
for(fila=0; fila<=m-1; fila++){
for(columna=0; columna<=m-1; columna++){
printf("Escriba valor en la posicion (%i,%i): ", fila, columna);
scanf("%i", &matriz[fila][columna]);
}
}
/*Traspuesta de la matriz origen (guardada en el mismo array)*/
for(i=0; i<=m-1; i++){
for(j=0; j<=m-1; j++){
aux = matriz[j];
matriz[j] = matriz[j];
matriz[j] = aux;
}
}
//RESULTADOS
/*Mostrar la traspuesta*/
for(a=0; a<=m-1; a++){
for(b=0; b<=m-1; b++){
printf("%2i", matriz[a]);
}
printf("n");
}
return 1;
}
--- Código: C ---
Aver si me orientais un poco. Gracias a todos!
Un saludo desde Granada!
locazopro:
tienes un error en la declaración de tu matriz, no puedes hacer esto:
--- Código: C --- int m; //el tamaño de la matrizint matriz[m][m]; //la matriz cuadrada
en C, tienes que declarar el tamaño de la matriz que necesitas explícitamente, por ejemplo: int matriz[10][10].
Si quieres hacerlo de forma dinámica entonces estas obligado a utilizar punteros y alguna función tipo malloc para realizar la tarea.
Espero te sirva.
Saludos!
undertakos:
investiga la funcion malloc como te lo comente en el otro post masomenos seria algo asi
--- Citar ---/* malloc example: string generator*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
char * buffer;
printf ("How long do you want the string? ");
scanf ("%d", &i);
buffer = (char*) malloc (i+1);
if (buffer==NULL) exit (1);
for (n=0; n<i; n++)
buffer[n]=rand()%26+'a';
buffer='';
printf ("Random string: %sn",buffer);
free (buffer);
return 0;
}
--- Fin de la cita ---
ermiguel1979:
Buenos días. Lamento decir que sigo sin saber como se utiliza la función malloc, como tantas otras... pero...
... ya tengo un código que me funciona. Es algo simple pero hace lo que tiene que hacer.
Os lo envío y mil gracias por todo. La verdad es que vuestras ayudas estimulan un montón...
--- Código: C --- #include <stdio.h>#include <stdlib.h> #define NUM_ELEM 10 int main (void){ int matriz_a[NUM_ELEM][NUM_ELEM]; int matriz_b[NUM_ELEM][NUM_ELEM]; int dimension; int fila, columna; /*Dar dimension a la matriz (hasta 10x10)*/ printf("Numero de filas/columnas: "); scanf("%i", &dimension); if(dimension < 1 || dimension > NUM_ELEM){ return EXIT_FAILURE; } /*Escribir la matriz*/ printf("Introduzca la matriz origen: n"); for(fila=0; fila<dimension; fila++){ for(columna=0; columna<dimension; columna++){ printf("elemento[%i][%i]: ", fila, columna); fflush(stdout); scanf("%i", &matriz_a[fila][columna]); } } printf("n"); /*Mostrar la matriz origen*/ printf("Matriz origen:n"); for(fila=0; fila<dimension; fila++){ for(columna=0; columna<dimension; columna++){ printf("%2i", matriz_a[fila][columna]); } printf("n"); } printf("n"); /*Hacer la matriz traspuesta*/ for(fila=0; fila<dimension; fila++){ for(columna=0; columna<dimension; columna++){ matriz_b[columna][fila]=matriz_a[fila][columna]; } } /*Mostrar la traspuesta*/ printf("Traspuesta de la matriz origen:n"); for(fila=0; fila<dimension; fila++){ for(columna=0; columna<dimension; columna++){ printf("%2i", matriz_b[fila][columna]); } printf("n"); } printf("n"); return 0;}
Un saludo!
Navegación
Ir a la versión completa