Leer como una tabla de productos .txt desde dev c++

Quería saber si me podrías ayudar con un programa en lenguaje C en el cual tengo que facilitar el cálculo de seis productos que se encuentran en un archivo (.txt). En el texto se encuentran planteados de la siguiente forma:
ProductoX Producto Z Producto PP...
2.0 37.46 35.6 ...
2.4 63.64 36.6 ..
Y asi sigue y no se como leer los numeros ejemplo todos los del producto x leerlos en una variable todos los del product z en otra y asi.

1 respuesta

Respuesta
1
Disculpa que no te pueda dar una respuesta muy extensa pero es que últimamente ando escaso de tiempo.
Supongo que lo que tienes que hacer es leer cada linea e ir sumando los costes de todos los productos POR en una variable y análogamente con el resto.
-----------------------------------------------------------------------
//Para leer cada linea primero tienes que definir una cadena de caracteres y un fichero, ej:
char linea[200];
FILE *productos;
//luego debes abrir el fichero
producto=fopen("mis_productos.txt","r");
//Seguidamente leemos una linea:
fgets(linea, 200, producto);
Ya tenemos almacenado en la variable linea todos los productos de una linea.
----------------------------------------------------------------------------------------------------
Si esto no es lo que pedías o no lo entiendes dímelo; pero no vayas a cerrar el hilo sin que se haya resuelto el problema.
Bueno eso fue lo que yo había hecho usando fgets pero eso los traía como string asique no podía trabajar con ellos y cuando ponía para cambiarlos a enteros o flotantes y eso digamos poniendo enfrente (int) y cosas así me salían valores y signos raros.. =S incluso aveces salían hasta errores disque invalid conversión from char to int y así...
Es que si estuvieran planteados hacía abajo todos los valores yo podría hacerlo pero como están como si fuera una tabla, apenas estoy en primer año de Industrial y mis conocimientos no me dan para eso y mi profesor no explica nada solo espera que lo hagamos y ya.
Comprendo tu problema:
Pues si ya has llegado hasta ese punto lo que te queda es bastante entretenido:
Tendrás que crear una subrutina o algo que te permita obtener cada numero, evidente no puedes hacerlo directamente poniendo int ya que eso devuelve el código asci.
Lo que tienes que hacer es una subrutina que te meta en un array cada numero, para ello vas leyendo la cadena string y cuando encuentres un espacio ya sabes que has terminado de leer un numero
//definimos el array de numeros
int numeros[MAX_NUMS];
int j,i=0;//definimos los indices
for(j=0;j<MAX_NUMS;j++)
numeros[j]=0;//Iniciamos todos los valores a 0
for(j=0;j<MAX_NUMS;j++){
while(linea!=' '){
numeros[j]*=10;//Multiplicamos x10 por si el numero es de varias cifras; si es de una
//sola no pasará nada porque el valor inicial es 0 y 0x10 =0
numeros[j]+=int(linea)-int('0'); //esta es la forma de convertir un caracter a un numero
i++;
}
}
//------------------------------------------------------------
Espero que sea de utilidad, el código puede contener fallos pues no lo he comprobado pero espero sea orientativo. Si sigues con dudas comunícamelo
Disculpe que demorara en responder.. la verdad no entendí muy bien eso de la subrutina =S... también demoré porque intente aclarar mi duda con un joven en mi universidad pero no tuvimos tiempo para que me lo explicara
El código que escribí es aproximadamente el de la supuesta subrutina, la cual va leyendo los números uno a uno y los mete en un array para luego poder operar con ellos. Si sigues teniendo duda notifícamelo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas