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)
| | |-+  Dudas sobre Programar en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas sobre Programar en C++  (Leído 2,310 veces)
blablablabla

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Dudas sobre Programar en C++
« en: 5 Agosto 2016, 17:06 pm »

Estoy intentando leer una cantidad de datos para asignarlo al espacio de un arreglo (vector) usando un ifstream, pero el programa me los asigna de manera errada, no asignando el valor correcto de cada hora. La tabla que esta abajo es un ejemplo del input data para el codigo.

Hora              Valor
00:00                0
01:00                0
02:00                0
03:00                4560
04:00                150
05:00                0
06:00                0

Estoy usando esta parte del codigo para leer los valores y asignarlo al espacio del arreglo Minlet.

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <vector>

ifstream inFile;   inFile.open("data_Minlet_Andasol1.txt");
    if (inFile.fail()){ cout << "Error Opening File" <<endl; exit(0); }

    string lecture;

    for (i=0; i<tmax; i++)
        inFile>>lecture>>Minlet;

Los valores estoy tomando desde un archivo de texto que solamente contiene los valores (sin las horas) como si el archivo fuera el siguiente:

0
0
0
4560
150.3
0
0

Al correr el codigo, no me asigna los valores en las posiciones correctas y no me distingue entre el 4560 y el 150.3

¿Alguien tiene idea de como leer los valores de un archivo de texto (como el de arriba), asignar cada valor a un espacio de un arreglo para despues usar ese arreglo?.

Estoy un poco confundido y no tengo mucha experiencia programando.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Dudas sobre Programar en C++
« Respuesta #1 en: 5 Agosto 2016, 17:11 pm »

Código
  1. for (i=0; i<tmax; i++)
  2.    inFile>>lecture>>Minlet;
Estás leyendo 1 valor y guardándolo en lecture, y otro para guardarlo en Minlet.

querrías decir:
Código
  1. for (i=0; i<tmax; i++)
  2.    inFile>>Minlet[i];
Para guardarlo en Minlet.
no sé qué es Minlet, así que no sé si eso es correcto. Suponiendo que es un vector<string> con un tamaño de tmax, funcionaría. Si el vector tiene tamaño 0, entonces sería:
Código
  1. for (i=0; i<tmax; i++){
  2.    inFile>>lecture;
  3.    Minlet.push_back(lecture);
  4. }

O:
Código
  1. Minlet.resize(tmax);
  2. for (i=0; i<tmax; i++)
  3.    inFile>>Minlet[i];


En línea

blablablabla

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Dudas sobre Programar en C++
« Respuesta #2 en: 5 Agosto 2016, 17:17 pm »

OK. Minlet es un vector, que tiene tamaño conocido y lo declare de esta manera.

vector<double> Minlet(tmax+1)

El punto es que es una lista de 8000 datos y estoy corriendo para varios casos. Quiero que del archivo .txt pueda asignar cada dato de esos 8000 a un espacio del vector Minlet. Estoy probando con 24 horas, pero no me los asigna correctamente.

Cuando te refieres a que esta leyendo 1 valor, es solamente a un digito?

Gracias por tu ayuda
En línea

blablablabla

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Dudas sobre Programar en C++
« Respuesta #3 en: 5 Agosto 2016, 18:13 pm »

Alguien tiene idea de como hacer eso? Necesito ayuda para eso, porque solo se me ocurre poner los datos de manera manual
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Dudas sobre Programar en C++
« Respuesta #4 en: 5 Agosto 2016, 18:31 pm »

1 número. Pero como lo tenías, leías 2 veces, osea que leías 2 líneas.

Probaste este?
Código
  1. for (i=0; i<tmax; i++)
  2.    inFile>>Minlet[i];
En línea

blablablabla

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Dudas sobre Programar en C++
« Respuesta #5 en: 5 Agosto 2016, 18:48 pm »

Funciono perfecto. Muchas gracias, ahora si los leyó correctamente.

Ahora, ¿porque razón leía 2 lineas en vez de 1?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Dudas sobre Programar en C++
« Respuesta #6 en: 5 Agosto 2016, 19:04 pm »

Código
  1. inFile>>lecture>>Minlet[i];

Es equivalente a:
Código
  1. inFile>>lecture;
  2. inFile>>Minlet[i];
Eso es, leer primero una string, y luego un número. 2 líneas.
En línea

blablablabla

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Dudas sobre Programar en C++
« Respuesta #7 en: 5 Agosto 2016, 19:24 pm »

Muchas gracias por tu ayuda ivancea96
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDAS] Todas las dudas sobre RadASD + MASM aqui « 1 2 3 »
ASM
AleX Inc. 23 21,122 Último mensaje 5 Julio 2010, 11:58 am
por Eternal Idol
dudas con uml a la hora de programar en java
Java
rivet 2 2,771 Último mensaje 26 Abril 2012, 14:23 pm
por raul_samp
Ayuda con algunas dudas para programar en android
Programación General
marrison 0 1,531 Último mensaje 28 Febrero 2013, 16:54 pm
por marrison
Dudas varias(programar en Python; compra de un nuevo ordenador...)
Dudas Generales
elmoyer 4 3,255 Último mensaje 6 Octubre 2013, 00:14 am
por topomanuel
dudas a la hora de programar « 1 2 »
Programación C/C++
Drewermerc 14 5,374 Último mensaje 11 Mayo 2014, 20:44 pm
por Drewermerc
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines