Hola buenas.
Hace poco que me inicié en la programación y me he topado con una duda.
Si yo por ejemplo quiero hacer un programa que diga que el usuario ingrese dos numeros, uno de las filas de la matriz y otro de las columnas, y luego lo quiero guardar en un array, como lo hago?
Algo como crear un array estilo float matriz1 [columnas] [filas]
y que columnas y filas fueran variables previamente creadas y que cuando el usuario introduzca los datos, se cree el array con los datos de las variables.
Pero si no mal recuerdo, me parece haber leido que los arrays se crean cuando se compila el programa y no se pueden alterar no?
¿Alguien me puede solucionar esto o linkearme algun ejemplo que hubiera en otro post?
Gracias por vuestro tiempo^^!
Veamos... en C, cuando declaras matrices (por hablar de lo que preguntas) debes hacerlo con un tamaño fijo. Para poder crear una matriz con datos introducidos por el usuario debes recurrir a memoria dinámica(malloc, free)
Aquí tienes un pequeño ejemplo de lo que te comenta Akal
#include <stdio.h>
#include <stdlib.h>
int main(){
float ** tabla;
int numeroFilas = 0;
int numeroColumnas = 0;
do{
printf("\nEscribe el numero de filas de la tabla ");
fscanf(stdin,"%d", &numeroFilas);
printf("\nEscribe el numero de columnas de la tabla ");
fscanf(stdin,"%d", &numeroColumnas);
}while (numeroFilas <= 0 && numeroColumnas <= 0);
// primero reservamos memoria para las filas
tabla = (float**) malloc(numeroFilas * sizeof(float));
if (tabla == NULL){
//no se pudo reservar memoria
return -1;
}
int i = 0;
for ( ; i < numeroFilas ; i++){
tabla[i] = (float*) malloc(numeroColumnas * sizeof(float));
*tabla[i] = (i + 1) * 2 ; // la llenamos con lo que sea
}
//ahora solo nos queda mostrar la tabla
for ( i = 0 ; i < numeroFilas ; i++){
printf("\nFila %d valor=%.0f ", i , *tabla[i]);
}
getchar();
}
CitarVeamos... en C, cuando declaras matrices (por hablar de lo que preguntas) debes hacerlo con un tamaño fijo. Para poder crear una matriz con datos introducidos por el usuario debes recurrir a memoria dinámica(malloc, free
ummm estas seguro ?¿
#include <stdio.h>
#include <stdlib.h>
int fila,columna=0;
main()
{
int matriz[3][3];
for(fila=0; fila <3; fila++){
for(columna=0; columna<3; columna++){
printf("Datos a alamacenar %i %i:",fila,columna);
scanf("%d",&matriz[fila][columna]);
}
}
printf("dato fila 0, columna 0 es %d:", matriz[0][0]);
printf("dato fila 0, columna 1 es %d:", matriz[0][1]);
// etc etc...
getch();
}
Hola, así sería como ildarion dice
#include <stdio.h>
#include <stdlib.h>
int main()
{
int fila, columna;
printf("Introduce el numero de filas:");
scanf("%d", &fila);
printf("Introduce el numero de columnas:");
scanf("%d", &columna);
int matriz[fila][columna];
for(fila=0; fila <3; fila++){
for(columna=0; columna<3; columna++){
printf("Datos a alamacenar en la pos. %i , %i:",fila,columna);
scanf("%d",&matriz[fila][columna]);
}
}
printf("dato fila 0, columna 0 es:", matriz[0][0]);
printf("dato fila 0, columna 0 es:", matriz[0][1]);
// etc etc...
getch();
return 0;
}
Saludos
ummm lo ordenastes y le pusistes a elegir la fila y la columna pero mira fijate que ahora me di cuenta de que el code esta mal
es un error sin importancia pero bueno
printf("dato fila 0, columna 0 es %d:", matriz[0][0]);
printf("dato fila 0, columna 1 es %d:", matriz[0][1]);
me olvide de ponerle a printf el tipo de dato que deve de mostrar en panatalla juas :P
Cita de: sinsombra_666 en 25 Septiembre 2010, 18:21 PM
CitarVeamos... en C, cuando declaras matrices (por hablar de lo que preguntas) debes hacerlo con un tamaño fijo. Para poder crear una matriz con datos introducidos por el usuario debes recurrir a memoria dinámica(malloc, free
ummm estas seguro ?¿
Ese datos quedó un tanto confuso, me refería a que el tamaño de la matriz fuese un dato introducido por el usuario, no su contenido.
EDIT: pero si, parece ser que se puede sin recurrir a memoria dinámica. No había caido en declararla a mitad código en vez de al principio.
Cita de: sinsombra_666 en 25 Septiembre 2010, 18:47 PM
ummm lo ordenastes y le pusistes a elegir la fila y la columna pero mira fijate que ahora me di cuenta de que el code esta mal
es un error sin importancia pero bueno
printf("dato fila 0, columna 0 es %d:", matriz[0][0]);
printf("dato fila 0, columna 1 es %d:", matriz[0][1]);
me olvide de ponerle a printf el tipo de dato que deve de mostrar en panatalla juas :P
Es verdad y yo también caí jajajajaja