Hola a todos!
Llevo varios días liada con una función y no sé qué le pasa. ¿Podéis ayudarme?
Os explico de qué va el tema. Tengo un archivo donde la primera línea contiene el nombre de una matriz, la segunda el número de filas, la tercera el nº de columnas, y después los elementos de la matriz leyéndolas por filas. Lo que necesito es leerla, y almacenarla en un vector con su nombre, en las dos primeras posiciones el tamaño, y después los elementos, pero como si la estuviera leyendo por columnas.
Os pongo un ejemplo:
Es decir, tenemos un matriz 2x3 A=[1 2 3
4 5 6]
En el archivo aparecerá como:
A
2
3
1
2
3
4
5
6
Al leerla, quiero que se almacena en un vector A=[2,3,1,4,2,5,3,6]
Y ahora os pongo el trozo de código que utilizo para almacenarla en el vector (la parte de abrir el archivo y todo eso va bien):
fscanf(fp,"%s",nombre);
fscanf(fp,"%lf",&filas);
fscanf(fp,"%lf",&columnas);
if (vect!=NULL){
indice=0;
for(pi=0;pi<(int)columnas;pi++)
{
for (pj=0;pj<(int)filas;pj++)
{
indice=(pj*columnas+pi+2);
vect=vect+indice;
fscanf(fp,"%lf",vect);
}
}
}
Al final lo único que me escribe es 2, 3, 1, 0, 0, 0, 0, 0. ¿Sabéis por qué escribe sólo el tamaño y el primer elemento? He ido comprobando el valor de la variable "indice" con el debugger y lo hace bien. Imagino que debe ser algo del puntero, pero no doy con el problema.
Llevo varios días liada con una función y no sé qué le pasa. ¿Podéis ayudarme?
Os explico de qué va el tema. Tengo un archivo donde la primera línea contiene el nombre de una matriz, la segunda el número de filas, la tercera el nº de columnas, y después los elementos de la matriz leyéndolas por filas. Lo que necesito es leerla, y almacenarla en un vector con su nombre, en las dos primeras posiciones el tamaño, y después los elementos, pero como si la estuviera leyendo por columnas.
Os pongo un ejemplo:
Es decir, tenemos un matriz 2x3 A=[1 2 3
4 5 6]
En el archivo aparecerá como:
A
2
3
1
2
3
4
5
6
Al leerla, quiero que se almacena en un vector A=[2,3,1,4,2,5,3,6]
Y ahora os pongo el trozo de código que utilizo para almacenarla en el vector (la parte de abrir el archivo y todo eso va bien):
fscanf(fp,"%s",nombre);
fscanf(fp,"%lf",&filas);
fscanf(fp,"%lf",&columnas);
if (vect!=NULL){
indice=0;
for(pi=0;pi<(int)columnas;pi++)
{
for (pj=0;pj<(int)filas;pj++)
{
indice=(pj*columnas+pi+2);
vect=vect+indice;
fscanf(fp,"%lf",vect);
}
}
}
Al final lo único que me escribe es 2, 3, 1, 0, 0, 0, 0, 0. ¿Sabéis por qué escribe sólo el tamaño y el primer elemento? He ido comprobando el valor de la variable "indice" con el debugger y lo hace bien. Imagino que debe ser algo del puntero, pero no doy con el problema.