Foros del Web » Programación para mayores de 30 ;) » C/C++ »

capturar los datos de la matríz aumentada mediante un archivo de texo

Estas en el tema de capturar los datos de la matríz aumentada mediante un archivo de texo en el foro de C/C++ en Foros del Web. Hola, tengo este código: Código: #include<iostream> #include<conio.h> using namespace std; int main() { int i, j, k, n; float a[10][10] = { 0 }, d; ...
  #1 (permalink)  
Antiguo 11/10/2015, 23:02
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
capturar los datos de la matríz aumentada mediante un archivo de texo

Hola, tengo este código:
Código:
#include<iostream>
#include<conio.h>
 
using namespace std;
 
int main()
{
    int i, j, k, n;
    float a[10][10] = { 0 }, d;
    cout << "Numero de ecuaciones: ";
    cin >> n;
    cout << "Vector de téminos independietes: " << endl;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            cin >> a[i][j];
 
    for (i = 1; i <= n; i++)
        for (j = 1; j <= 2 * n; j++)
            if (j == (i + n))
                a[i][j] = 1;
 
    /************** pivoteo parcial **************/
    for (i = n; i > 1; i--)
    {
        if (a[i - 1][1] < a[i][1])
            for (j = 1; j <= n * 2; j++)
            {
                d = a[i][j];
                a[i][j] = a[i - 1][j];
                a[i - 1][j] = d;
            }
    }
    cout << "Pivoteo: " << endl;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n * 2; j++)
            cout << a[i][j] << "    ";
        cout << endl;
    }

 
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n * 2; j++)
            if (j != i)
            {
                d = a[j][i] / a[i][i];
                for (k = 1; k <= n * 2; k++)
                    a[j][k] -= a[i][k] * d;
            }
    }

    for (i = 1; i <= n; i++)
    {
        d = a[i][i];
        for (j = 1; j <= n * 2; j++)
            a[i][j] = a[i][j] / d;
    }
 
    cout << "Soluciones: " << endl;
    for (i = 1; i <= n; i++)
    {
        for (j = n + 1; j <= n * 2; j++)
            cout << a[i][j] << "    ";
        cout << endl;
    }
 
    getch();
    return 0;
}
que sirve para encontrar la inversa de una matríz mediando el método de Gauss-Jordan con Pivoteo Parcial. Pero se me solicita lo siguiente:

"El programa deberá capturar los datos de la matríz aumentada mediante un archivo de texo."

Y no entiendo como realizarlo, alguien me puede ayudar?, gracias de antemano.
  #2 (permalink)  
Antiguo 13/10/2015, 01:21
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: capturar los datos de la matríz aumentada mediante un archivo de texo

pues tienes que abrir un el fichero, para lo cual puedes usar las funciones de C (fopen por ejemplo) o las de C++ (como ifstream).

Una vez abierto tienes que ir leyendo el contenido para lo cual debes saber de qué forma están almacenados los datos en el fichero (no es lo mismo almacenar los datos en binario que en XML, por ejemplo).

Una vez tienes esa información tienes que trabajar sobre el fichero para ir leyendo los datos que precisas. Para C puedes mirar fget, fread y compañía y para ifstream puedes echar un vistazo a su interfaz.

Tienes infinidad de ejemplos en la red sobre cómo leer un fichero tanto en C como en C++. Tienes que ver la forma de leer tus propios datos y eso, como te he comentado, depende de la forma en la que estén almacenados.

Un saludo
  #3 (permalink)  
Antiguo 13/10/2015, 23:23
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: capturar los datos de la matríz aumentada mediante un archivo de texo

Ya veo, con ficheros. Pero para capturar los datos sólo de la matriz aumentada?, específicamente esa parte?
  #4 (permalink)  
Antiguo 14/10/2015, 03:31
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: capturar los datos de la matríz aumentada mediante un archivo de texo

Cita:
Iniciado por Jose_A Ver Mensaje
Ya veo, con ficheros. Pero para capturar los datos sólo de la matriz aumentada?, específicamente esa parte?
esa parte? te refieres a leerlos de un fichero del cual desconozco el formato?

Un ejemplo de fichero puede ser:

Código binario:
Ver original
  1. 000200034F5A2345CD05DCCA23834845

El cual indica al principio el tamaño de la matriz (2x3) y después contiene los 6 números que componen la matriz.

O este otro:

Código binario:
Ver original
  1. 4F5A2345FFFFCD05DCCAFFFF23834845FFFF

En el que no se indica el tamaño de la matriz pero usa el número FFFF a modo de 'magic number' para indicar un salto de fila

O este otro:

Código XML:
Ver original
  1. <matriz filas=2 columnas=3>
  2.   <numero>23</numero>
  3.   <numero>5</numero>
  4.   <numero>12</numero>
  5.   <numero>-45</numero>
  6.   <numero>0</numero>
  7.   <numero>0</numero>
  8. </matriz>

O este otro:

Código texto:
Ver original
  1. 2 3
  2. 23 5 12 -45 0 0

Hay un número indeterminado de formas diferentes de almacenar datos en un fichero... la forma concreta de recuperar información dependerá del formato elegido.

Entenderás, por tanto, que no sea posible dar una solución concreta a un problema que no lo es.

Un saludo
  #5 (permalink)  
Antiguo 15/10/2015, 02:44
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: capturar los datos de la matríz aumentada mediante un archivo de texo

O simplemente usar una estructura y fread para leer cada elemento del archivo que anteriormente fue creado con la misma estructura. Otro modo por ejemplo siguiendo con lo que puso el amigo eferion:
010AHola mundo020812345678030512,50

Donde el rojo indica el tipo (1=char, 2=int, 3=float, ...) y el verde el número de caracteres que ocupa. Puedes hacerlo de muchas formas.

Etiquetas: int, mediante, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:29.