Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ArashiTensei

#1
Jaja si, se que el código no es nada elegante, pero creo que así entiendo lo que hago mejor, la practica me hará mejorar, supongo.

Aqui te dejo el archivo para que veas como esta estructurado, te recomiendo abrirlo con notepad++, porque al abrirlo en el notepad normal sale una sola linea
https://mega.co.nz/#!whRT0I7K!Ysx_szFA7ovtuPr-LVAUmVfG-k6PD4vccKX9UR9AdKg

yo le cambie el nombre al archivo por eso puse "1" en el código.

#2
Primero gracias por la ayuda,  ahora puedo entender como funciona, tenia la corazonada de que >> era sobre el uso de CIN y COUT, pero tampoco es que supiera que es a lo que se referían estos símbolos.
Lo de la variable vector, en realidad tengo pensado cambiarle el nombre, le puse vector por la costumbre, pero no sabia que era una palabra reservada, gracias por le dato.

Sobre lo que no entendías en el archivo,  viene la cantidad de objetos porque no es la única instancia de la que debo obtener datos, hoy otras con datos de objetos de hasta 300, tengo pensado obtener este numero (100) en una variable que identifique la cantidad de objetos para poder modificar los arrays que contendrán los datos de los objetos y no tener que hacer código para cada instancia.
Bueno, te agradezco la ayuda, con esta informacion veré que puedo avanzar, saludos!




Gracias a lo que me explicaste ya eh podido  obtener los datos mas facilmente, la primera fila me da algo raro, la segunda ya la tengo y en la tercera, según yo almaceno todos los datos en la matriz, pero extrañamente me quedan corridos un espacio menos:

en la tercer fila me empieza este problema, los datos obtenidos son mostrados menos el primero:

#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
#include <stdio.h>


using namespace std;

int main(){
    string linea;
    int numero,num,i=0,j=0,cantidad;
    int Matriz[100][100];
    ifstream F_in;
    F_in.open("1.txt");
   
getline (F_in, linea);
getline (F_in, linea);
istringstream S1(linea);
while(S1 >> numero){
cantidad = numero;
printf("%i\n\n",cantidad);
}


while(getline (F_in, linea)){
istringstream S2(linea);
while (S2 >> numero){
if( i == 100){
i=0;j++;
}
Matriz[i][j] = numero;i++;
}

}

for(int i=0; i<100;i++)
printf("%i.- [%i]\n",i+1,Matriz[i][2]);
    F_in.close();
}


#3
Lo has interpretado muy bien, es exactamente lo que hace, hay varias cosas que no uso en este codigo que puse antes y se debe a que eh estado modificandolo para exprimentar los resultados, se me olvido borrarlos.

Explicare mejor que es lo que pretendo.

Tengo un archivo 1.txt es una instancia de valores sobre el problema de la mochila cuadratica, lo que necesito es obtener esos valores en una matriz para manipularlos y debe ser de la siguiente forma

La primer fila hasta la fila es el nombre del archivo
la segunda es el numero de objetos (100)
la tercer fila con los valores combinados de beneficio que tiene cada objeto, como ejemplo pongo lo siguiente para representarlo:  Los números del 1 al 6 no están en el archivo los pongo para que se entienda de que las coordenadas donde apuntan los números son la combinación de de 2 objetos lo que lo hace un beneficio combinado

nombre del la instancia
100   //  cantidad de objetos
   1 2 3 4 5 6.. 100        La diagonal son los beneficios individuales
1 0 4 5 7 8 3        los demas son beneficios combinados
2    0 5 6 7 7
3       7 4 2 7
4          3 4 1
5             2 9
6                5

capacidad de la mochila
pesos  *  *  *  *  *  * ... 100
pero en el archivo no viene de esta forma sino como la que puse al principio.
quiero que eceptuando el ultimo numero guarde todos los numeros en la primer fila de una matriz , la segunda fila en la segunda fila de la matriz, y asi sucesivamente, la diagonal la guarda en otro vector y el peso que es la ultima fila  en otro vector.

El codigo que puse no es mio, estuve investigando la forma de hacer el problema y vi un ejemplo que me ayudaba , pero no entiendo todavia como manejar estas sintaxis, donde pone el while (S >> numero)  .. aparte de que no conozco ese operador, me supongo que es lo que permite que los numeros sean identificados en sus dos digitos y no solo un digito como estaba antes con el fgetc, pero no entiendo en que parte del archivo hace el bucle, es hasta encontrar un salto de linea? o la comparacion la hace cada que encuentra un numero?
me estoy frustrando demasiado ya que el programa debe hacer muchas cosas mas con los datos del archivo y aun no puedo ni obtener los datos... espero que ahora si se entienda un poco mejor, saludos y gracias por responder!
#4
de echo uso el getline pero aun no tengo la practica con estas funciones , eh podido imprimir la diagonal , alrevez pero aun no tengo muy claro como lo eh echo :(

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
#include <stdio.h>


using namespace std;

int main(){
    string linea;
    int numero,i=0;
    int vector[100];
    int temp;
    ifstream F_in;
    F_in.open("1.txt");
    int cap = 699;
    while (getline (F_in, linea)){
        istringstream S(linea);
while (S >> numero){
   for(int i=0;i<100;i++)
vector[i] = numero;
        }
printf  ("%i\n",vector[i]);

}
    F_in.close();
}
#5
Necesito ayuda con el manejo de archivosde texto  en c++

tengo muchos datos en un archivo, son puros numeros, y tienen esta estructura

***********
*********
*******
*****
***
*

*
**
********

la primeras hasta el antepenultimo numero va en un arreglo , o eso pretendo, y los ultimos numeros de cada fila en otro vector, el problema es que entre los numeros hay espacios y estos no son constantes, ademas de que hay numeros de mas de 1 digito, entonces no puedo usar fgetc , y con fgets no se como separar los numeros de los espacios... agluein conoce alguna forma?