adrianD
Newbie

Mensajes: 9
|
 |
« en: Julio 06, 2008, 03:58:01 » |
|
/*Un negocio desea conocer la cantidad vendida de sus productos, en un determinado día, para ello se ingresa por teclado, por cada venta realizada la siguiente información: · Código del producto (3 caracteres) · Cantidad vendida (entero) Estos datos deben ser grabados en un archivo binario, previa conversión del código de producto a mayúscula. Utilizar función Coversion_Codigo. La información del archivo consta de acumular la cantidad vendida por código de producto. El ingreso por teclado termina, con el ingreso de código de producto igual a “FIN” */
#include<conio.h> #include<stdio.h> #include<stdlib.h> #include<string.h>
typedef struct{ char codigo[4]; int cant; }producto;
void carga(void); void informe(void); void conversion_codigo(char *); void actualizar(void);
void main(void) {
// carga(); informe(); actualizar();
getch(); } ///////////////////////////////////////////////////// void carga (void) { FILE * pf; producto p; if((pf=fopen("c:\\prod.dat","wb+"))==NULL) { perror("Error\n "); getch(); exit(1); }
printf("Ingrese cod producto\n"); gets(p.codigo); conversion_codigo(p.codigo);//esto es cadena, lo paso por referncia
while( strcmpi(p.codigo,"FIN") )// Compara 2 cade Devuelve 0 si p.codigo y FIN { //son identicas sale del bucle printf("Ingresar cantidad de productos\n"); scanf("%d",& p.cant);
fwrite(&p,sizeof(producto),1,pf);
printf("Ingrese cod producto\n"); fflush(stdin); gets(p.codigo); conversion_codigo(p.codigo); }
fclose(pf); } //////////////////////////////////////////////////////// void informe(void) { FILE * pf; producto p; if((pf=fopen("c:\\prod.dat","rb+"))==NULL) { perror("Error\n "); getch(); exit(1); } printf("Codigo de producto Cantidad de producto\n"); printf("**********************************************\n\n");
fread(&p,sizeof(producto),1,pf);
while(!feof(pf)) { printf("%s %d \n",p.codigo,p.cant); fread(&p,sizeof(producto),1,pf); } fclose(pf); } //////////////////////////////////////////////////////////// void conversion_codigo(char *cod) { int i;
for(i=0;i<3;i++) *(cod+i)=*(cod+i)-32; } /*/////////////////////////////////////////////////////////// void actualizar(void) {
FILE * pf; producto p; char x[4]; int i,a=0,con=0;
if((pf=fopen("c:\\prod.dat","rb+"))==NULL) { perror("Error\n "); getch(); exit(1); }
fread(&p,sizeof(producto),1,pf); //leemos el 1° registro
while(!feof(pf)) {
if( strcmpi(x,p.codigo) )//si son diferentes las palbras, entonces cumple la condicion {
strcpy(x,p.codigo); //Copia la cadena de caracteres s2 en la cadena s1
a=0; a+=p.cant; //le asigno al acumulador "a" el valor de cant con+=1;
while(!feof(pf)) { fread(&p,sizeof(producto),1,pf); if(! strcmpi(x,p.codigo)) //si son iguales las palabras cumple la condicion a+=p.cant;
} printf("el valor de %s es %d\n",x,a); } else con+=1; printf("bucle\n");
rewind(pf); //me voy al principio del archivo fseek(pf, (con)*sizeof(producto),0); //me posiciono en el siguiente registro fread(&p,sizeof(producto),1,pf); }
fclose(pf); } ////////////////////////////////////////////////////////////*/
|