Hola a todos
Por favor necesito su ayuda ... tengo una matriz que es leida desde un archivo txt y quiero de esa matriz de mxn sacar las ultimas n-4 columnas y llamarla como otra matriz.
¡Buenas pastyto!
Para hacer eso, necesitas crearte una matriz N-4xN. Una vez creada debes rellenarla con los valores de la matriz original. Asi que necesitas recorrer la matriz original con 2 bucles for() y cojer el valor y ponerlo en la matriz nueva.
for(i=0;i<n-4;i++){
for(j=0;j<n;j++){
//cojer valor y poner en la matriz nueva en la posicion (i,j)
}
}
Espero haberte servido de ayuda, un saludo.
gracias
y para escribir la nueva matriz puedo poner asi ???
T_Part[j]=Datos[j];
de la matriz Datos es de donde saco las columnas que quiero y quiero que se almacenen en la matriz T_Part....
soy nueva en programacion ... gracias
EI: juntando mensajes.
estaria bien ponerle asi ??? porque no corre ...
vector<vector<double> > Datos;
vector<vector<double> > T_Part;
Datos=leer_archivo("matriz_1.txt");
escribir_archivo("matriz_original.txt",Datos); // esta funcion ya esta creada
for (int i=0;i<Datos.size()-3;i++)
{
for (int j=0;j<Datos.size();j++)
{
T_Part[j]=Datos[j];
}
}
escribir_archivo("partidos.txt",T_Part);
y no funciona ...
Pensandolo un poco no es claro si quieres crear una matriz en base a otra consistiendo de:
A) Todas las columnas menos las ultimas cuatro.
B) Solo las ultimas cuatro columnas.
Otro problema es que usualmente se almacena la informacion en filas y columnas (no al reves: columnas y filas).
En el caso usual con filas primero y columnas despues, utilizando la clase vector de C++ puedes:
1) Crear el nuevo vector
2) Utilizas por cada uno de los elementos del vector la funcion miembro "assign" para el reajuste del tamaño y copia de valores.
Un programa de ejemplo relativamente largo, la mayoria solo es "fluf" (creacion y asignacion de valores a la matriz), la parte importante donde se muestra el proceso de copia esta comentado.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <vector>
using std::vector;
int main()
{
vector<vector<int> > mat(10);
typedef vector<vector<int> >::size_type vvi_size;
typedef vector<int>::size_type vi_size;
for (vvi_size i = 0; i != mat.size(); ++i){
mat[i].resize(10);
for (vi_size j = 0; j != mat[i].size(); ++j)
mat[i][j] = j;
}
for (vvi_size i = 0; i != mat.size(); ++i){
for (vi_size j = 0; j != mat[i].size(); ++j)
cout << ' ' << mat[i][j];
cout << endl;
}
cout << "----" << endl;
// Creamos el nuevo vector
vector<vector<int> > nuevo(10);
// Iteramos por cada elemento (fila)
for (vvi_size i = 0; i != nuevo.size(); ++i)
// Asignamos los elementos requeridos del vector original (mat)
nuevo[i].assign(mat[i].begin(), mat[i].end() - 4);
// Impresion de prueba
for (vvi_size i = 0; i != nuevo.size(); ++i){
for (vi_size j = 0; j != nuevo[i].size(); ++j)
cout << ' ' << nuevo[i][j];
cout << endl;
}
return 0;
}
Un saludo
mil gracias .... besos