Fichero secuancial binario
Publicado por Mario (8 intervenciones) el 21/08/2017 11:03:00
Hola, tengo los siguientes códigos para leer un fichero binario, y si se cumple una condición que escriba los datos en el otro fichero, os dejo una imagen del enunciado, no es una tarea es un examen que hice hace tiempo y quisiera saber que código es mas correcto.

Codigo 1:
Codigo 2:
Hay que suponer que los ficheros stock y pedidos ya están creados, básicamente hay que hacer que mientras el nivel actual sea menor que el mínimo, que escriba los datos en el fichero pedidos. Y el total pedidos sera el numero de pedidos que necesitara para llegar al nivel máximo.
Espero que puedan ayudarme a decir que código es el mas apropiado, gracias a todos de antemano.

Codigo 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
struct stock{
int cod_Articulo;
int nivel_maximo;
int nivel_minimo;
int nivel_actual;
char proveedor[30];
int precio;
}regstock;
struct pedidos{
int cod_Articulo;
char proveedor[30];
int total_pedido;
}regpedidos;
int main()
{
FILE *stock,*pedidos;
stock = fopen("stock.dat","rb+");
pedidos = fopen("pedidos.dat","wb");
if(stock == NULL || pedidos == NULL)
{
puts("Error al intentar leer los archivos");
}
else
{
while(!feof(stock))
{
fread(®stock,sizeof(regstock),1,stock);
if(regstock.nivel_actual<regstock.nivel_minimo)
{
regpedidos.cod_Articulo=regstock.cod_Articulo;
strcpy(regpedidos.proveedor,regstock.proveedor);
regpedidos.total_pedido=regstock.nivel_maximo-regstock.nivel_actual;
fwrite(®pedidos,sizeof(regpedidos),1,pedidos);
}
}
}
return 0;
}
Codigo 2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
struct stock{
int cod_Articulo;
int nivel_maximo;
int nivel_minimo;
int nivel_actual;
char proveedor[30];
int precio;
}regstock;
struct pedidos{
int cod_Articulo;
char proveedor[30];
int total_pedido;
}regpedidos;
int main()
{
FILE *stock,*pedidos;
stock = fopen("stock.dat","rb+");
pedidos = fopen("pedidos.dat","rb+");
if(stock == NULL || pedidos == NULL)
{
puts("Error al intentar leer los archivos");
}
else
{
fread(®stock,sizeof(regstock),1,stock);
while(!feof(stock))
{
if(regstock.nivel_actual<regstock.nivel_minimo)
{
regpedidos.cod_Articulo=regstock.cod_Articulo;
strcpy(regpedidos.proveedor,regstock.proveedor);
regpedidos.total_pedido=regstock.nivel_maximo-regstock.nivel_actual;
fwrite(®pedidos,sizeof(regpedidos),1,pedidos);
}
fread(®stock,sizeof(regstock),1,stock);///
}
}
fclose(stock);
fclose(pedidos);
return 0;
}
Hay que suponer que los ficheros stock y pedidos ya están creados, básicamente hay que hacer que mientras el nivel actual sea menor que el mínimo, que escriba los datos en el fichero pedidos. Y el total pedidos sera el numero de pedidos que necesitara para llegar al nivel máximo.
Espero que puedan ayudarme a decir que código es el mas apropiado, gracias a todos de antemano.
Valora esta pregunta


0