Buenas, tengo un trabajillo para la uni que consiste en hacer una especie de gestoría de biblioteca.
En unos de los apartados, me piden calcular el precio entre unas determinada fechas y guardalos en un archivo binario:
ofstream Buffer; Buffer.open(BUFFER.c_str()); // Nombre del archivo predefinido en la constante BUFFER for (int i = 0; i < elementos; i++) if (ComprobarFecha(Libro,Leidas[1],Leidas[0],i,elementos)) { Buffer.write((char *)&Libro[i].Precio,sizeof(int)); // Guardamos precio Buffer.write((char *)&Libro[i].Fecha.Dia,sizeof(fecha)); // Guardamos fecha contador++; } Buffer.close(); // Enunciado: CIV (obtener el precio total y medio de los libros encontrados) ifstream CargarDatos; CargarDatos.open(BUFFER.c_str()); // Reseteamos variables Min = 0; Max = 0; contador = 0; // Empezamos a leer while(!CargarDatos.eof()) { CargarDatos.read((char *)&Datos[contador],sizeof(int)); // Leemos precio Max += Datos[contador]; // Vamos calculando el precio total... CargarDatos.read((char *)&Leidas[contador],sizeof(fecha)); // Leemos la fecha contador++; // Añadimos un libro mas leido } CargarDatos.close(); // Cuando terminamos, mostramos la informacion cout<<endl<<"El precio total de los libros entre las dos fechas es de "<<Max<<"$ con un precio medio de "; cout<<Max/contador<<"$/Libro. Hay una cantidad de "<<contador<<" libros";
Al probarlo, me aparece que los libros son 21 (correcto) y que su precio es de 5547734745... Un disparate vamos xD
Las estructuras son:
struct fecha { int Anyo,Mes,Dia; }; struct Biblioteca { string Titulo, Autor; float Precio; bool Prestado; fecha Fecha; };
Las variables de esta funcion son:
int Max = 0; int Min = 0; int contador = 0; int Datos[elementos]; fecha Leidas[elementos]; Biblioteca Libro[elementos];
Editado: El límite del ancho de las imágenes es de 500 pixeles, sobrepasar este límite puede descolocar la web e incumple las Normas de la Comunidad, antes de volver a postear por favor revíselas.| AORV
Precio es float, pero lo
Precio es float, pero lo tratas como int?
Probá a cambiarle el tipo de Max a float (ya que veo que hay algunos precios que llevan decimales...)
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
En efecto, era eso. Mira
En efecto, era eso. Mira que...
Gracias!!