elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Leer matriz por filas y almacenarla por columnas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer matriz por filas y almacenarla por columnas  (Leído 5,212 veces)
mariyop

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Leer matriz por filas y almacenarla por columnas
« en: 28 Noviembre 2011, 16:31 pm »

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:

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.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Leer matriz por filas y almacenarla por columnas
« Respuesta #1 en: 28 Noviembre 2011, 17:50 pm »

Para ayudarte lo mejor es que publiques el codigo fuente del programa completo o al menos las partes donde declaras las variables y realizas las operaciones de lectura y escritura.

Asi a primera vista no se ve bien el fragmento ya que por algun razon lees el numero de filas y columnas como tipo "double" y despues utilizas contadores de tipo "int".

Y si es un solo bloque de memoria no necesitas de dos bucles, basta con uno, mas o menos asi:
Código:
for (i = 0; i <filas * columnas; i++)
   fscanf(fp, "%lf", vect + i);

Pero de nuevo para sacarte de dudas mejor publica el codigo fuente completo.

Edito:

Por alguna (extraña) razon debes procesar columna por columna en lugar de lo usual que es por filas. En ese caso:
Código:
for (i = 0; i < columnas; i++){
   for (j = 0; j < filas; j++)
      fscanf(fp, "%lf", vect + i + (j * columnas));

Un saludo


« Última modificación: 28 Noviembre 2011, 18:03 pm por rir3760 » En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener size() de columnas y filas de una matriz
Programación C/C++
Stone20 1 1,850 Último mensaje 15 Abril 2012, 13:15 pm
por Stone20
Suma de filas y columnas de una matriz en C
Programación C/C++
estudiante_1 1 17,266 Último mensaje 30 Diciembre 2015, 22:19 pm
por MAFUS
Suma de filas y columnas de una matriz
.NET (C#, VB.NET, ASP)
Ahinoam 2 6,204 Último mensaje 15 Diciembre 2016, 23:59 pm
por Ahinoam
Quitar filas y columnas de una matriz en c
Programación C/C++
victiman 0 2,808 Último mensaje 6 Junio 2017, 22:40 pm
por victiman
Función que diga si dos columnas/filas de una matriz son iguales. « 1 2 »
Programación C/C++
hackersanfe 13 3,382 Último mensaje 8 Diciembre 2018, 22:06 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines