Foros de daboweb
MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: beginner en 16 de Diciembre de 2004, 09:40:31 am
-
Mu buenas... Tengo un programa para comparar dos ficheros, uno de pedidos y otro de lo que hay disponible en el almacén, pero no funciona. :( Me parece que sólo está haciendo correr uno de los ficheros, pero no sé cómo solucionarlo. ¿Alguien tiene una sugerencia?
#include<stdio.h>
#include<conio.h>
#include<values.h>
#include<stdlib.h>
#include<ctype.h>
void proceso(void);
void leer_almacen(void);
void leer_pedidos(void);
void encontrado(void);
void error(void);
FILE *alma, *ped;
struct
{
long cod_ar;
char deno[30];
float pv;
short exis;
}reg_alma;
struct
{
long cod_ar;
short uni;
long cod_cli;
}reg_ped;
short er;
void main(void)
{
alma=fopen("c:\\almacen.dat", "r");
if (alma!=NULL)
{
ped=fopen ("c:\\pedidos.dat","r");
if (ped!=NULL)
{
proceso();
fcloseall();
}
else
{
clrscr();
printf("\n\tError de apertura en pedidos");
printf("\n\tEste programa se cancelara");
printf("\n\tPulse cualquier tecla para terminar");
fflush(stdin);
getch();
fclose (alma);
}
}
else
{
clrscr();
printf("\n\tError de apertura en almacen");
printf("\n\tEste programa se cancelara");
printf("\n\tPulse cualquier tecla para terminar");
fflush(stdin);
getch();
}
clrscr();
}
//EN ESTA FUNCION PIENSO QUE ESTA EL PROBLEMA:
void proceso(void)
{
leer_almacen();
leer_pedidos();
while (feof(ped)==0)
{
if (reg_ped.cod_ar>reg_alma.cod_ar)
{
leer_almacen();
if (feof(alma)!=0)
reg_alma.cod_ar=MAXLONG;
}
else
{
if (reg_ped.cod_ar==reg_alma.cod_ar)
encontrado();
else
error();
leer_pedidos();
}
}
}
void leer_almacen(void)
{
er=fread(®_alma, sizeof(reg_alma), 1, alma);
if(er!=1&&feof(alma)==0)
{
clrscr();
printf("\n\tError de lectura en almacen");
printf("\n\tPrograma cancelado");
printf("\n\tPulse cualquier tecla para salir");
fflush(stdin);
getch();
clrscr();
exit(1);
}
}
void leer_pedidos(void)
{
er=fread(®_ped, sizeof(reg_ped), 1, ped);
if (er!=1&&feof(ped)==0)
{
clrscr();
printf("\n\tError de lectura en pedidos");
printf("\n\tPrograma cancelado");
printf("\n\tPulse cualquier tecla para salir");
fflush(stdin);
getch();
clrscr();
exit(1);
}
}
void encontrado(void)
{
clrscr();
gotoxy (26,3);
printf("Proceso de atencion de pedidos");
if (reg_ped.uni>reg_alma.exis)
printf("Pedido no atendido - articulo: %ld, unidades: %ld, existencias: %d, cliente %ld", reg_alma.cod_ar, reg_ped.uni, reg_alma.exis, reg_ped.cod_cli);
else
printf("Pedido atendido - articulo: %ld, unidades: %ld, cliente %ld", reg_ped.cod_ar, reg_ped.uni, reg_ped.cod_cli);
fflush(stdin);
getch();
}
void error(void)
{
clrscr();
gotoxy (26,3);
printf("Proceso de atencion de pedidos");
printf("\n\n\tCodigo de articulo %ld no existe en almacen", reg_ped.cod_ar);
printf("\n\n\tPulse cualquier tecla para salir");
fflush(stdin);
getch();
exit(1);
}
-
Lo imprimiré y me lo miro tranquilamente.
Saludetes.
PD:Joee que ganas tengo de tener mi portatil de nuevo :cry:
-
Hola:
Bienvenido al foro beginner...
A ver que te comentan..
un saludo
-
...bueno, creo que muy tarde, pero para la duda...en primer lugar creo te estas complicando mucho...en segundo, no veo como comparas las cadewnas de los pedidos...lo mejor seria leer el pedido e ir comparandolo con el cada articulo del almacen...veo que es un archivo binario...lomejor seria que trabajaras con archivos de texto...saludos...