Bueno yo remodele su code, a ver que tal. En vez de lo de su code el mio escribe todo en un fichero, pero no pregunta fecha ni nada. El mio directamente obtiene la hora del sistema xD!
Creo que usas muchas estructuras, variables, etc... a mi asi me parece mas sencillo.
Lo que le falta es escribir fecha y hora, que no me ha dado tiempo. Supongo que la version 1.2 sera mas completa xD....
#include <stdio.h>
#include <stdlib.h>
struct Compra
{
float codprod;
float cantidad;
float precio;
float total;
};
struct Compra compra;
FILE *fd;
int i;
int main()
{
printf ("#*************************************#\n"); printf ("# -[ Comprar 1.1 - by Sagrini ]- #\n"); printf ("# ------------------------------ #\n"); printf ("# Original code by Clodan #\n"); printf ("#*************************************#\n");
fd
=fopen ("./register.dat", "a+"); compra.codprod=1;
while (compra.codprod!=0.0)
{
printf("\nIngrese el Codigo del Producto: "); scanf("%f",&compra.
codprod); if (compra.codprod==0.0)
break;
printf("Ingrese la cantidad: "); scanf("%f",&compra.
cantidad);
printf("Ingrese el precio: "); scanf("%f",&compra.
precio);
compra.total+=compra.precio;
fprintf (fd
, "PRODUCT %f x%f\n", compra.
cantidad, compra.
codprod); }
fprintf (fd
, "TOTAL %f\n\n", compra.
total); printf("\nTOTAL $%f\n\n", compra.
total); return 0;
}
Aqui les traigo la version 1.2 de mi pequeño programa.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct Compra
{
float codprod;
float cantidad;
float precio;
float total;
};
struct Compra compra;
struct tm *hora;
time_t hour;
FILE *fd;
int i;
int main()
{
printf ("#*************************************#\n"); printf ("# -[ Comprar 1.2 - by Sagrini ]- #\n"); printf ("# ------------------------------ #\n"); printf ("# Original code by Clodan #\n"); printf ("#*************************************#\n");
for (;;)
{
fd
=fopen ("./register.dat", "a+"); compra.codprod=1;
while (compra.codprod!=0.0)
{
printf("\nIngrese el Codigo del Producto: "); scanf("%f",&compra.
codprod); if (compra.codprod==0.0)
break;
printf("Ingrese la cantidad: "); scanf("%f",&compra.
cantidad);
printf("Ingrese el precio: "); scanf("%f",&compra.
precio);
compra.total+=compra.precio;
fprintf (fd
, " PRODUCT %f x%f\n", compra.
cantidad, compra.
codprod); }
fprintf (fd
, " TOTAL %f\n\n\n", compra.
total); printf("\nTOTAL $%f\n\n\n", compra.
total); }
return 0;
}
Bueno, si nadie se ha dado cuenta, comento que hay un error de omision. Lo descubri al probarlo en BETA con mi prima xD k le dio a un boton que no era una tecla y se volvia loco... Pruebenlo ustedes mismos, pero les aconsejo cortar rapido pork escribe en disco... Simplemente autorrellena los formularios con un 0, y lo escribe en un archivo... infinitas veces.
Si alguien tiene posibles soluciones, que las postee. Pense en comprobar que la cadena es solo numbers, pero no puedo ahora. A ver k tal...
Quinta modif. a mi post:
Me acabo de dar cuenta de que el modo de impresion es incorrecto...
Remodelando.... Escribo aqui el code nuevo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct Compra
{
int codprod;
int cantidad;
float precio;
float total;
};
struct Compra compra;
struct tm *hora;
time_t hour;
FILE *fd;
int i;
int main()
{
printf ("#**************************************#\n"); printf ("# -[ Comprar 1.3.2 - by Sagrini ]- #\n"); printf ("# ------------------------------- #\n"); printf ("# Original code by Clodan #\n"); printf ("#**************************************#\n");
for (;;)
{
fd
=fopen ("./register.dat", "a+"); compra.codprod=1;
while (compra.codprod!=0.0)
{
printf("\nIngrese el Codigo del Producto: "); scanf("%d",&compra.
codprod); if (compra.codprod==0.0)
break;
printf("Ingrese la cantidad: "); scanf("%d",&compra.
cantidad);
printf("Ingrese el precio: "); scanf("%f",&compra.
precio);
compra.precio*=compra.cantidad;
compra.total+=compra.precio;
fprintf (fd
, " PRODUCT %d x%d==%f\n", compra.
codprod, compra.
cantidad, compra.
precio); }
fprintf (fd
, " TOTAL %f\n\n\n", compra.
total); printf("\nTOTAL $%f\n\n\n", compra.
total); }
return 0;
}