Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Problema con metodo de seleccion con una estructura

levapantozsalva

Bovino maduro
Desde
28 Ago 2010
Mensajes
190
Hola bakunos, se me ha presentado un problema con un método de ordenación (selección) dentro de c++,
el problema se encuentraen negritas y cursiva, el problema consiste en que no me lee los datos de la estructura, me lee números aleatorios. Seria de mucha ayuda que me auxilien en resolverlo.
A continuación se presenta el código

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

#define MAX_VENTAS 5
typedef struct datos{
int folio, id_cliente;
float monto;
} datos_ingr;

FILE *ap_archivo;
FILE *ap_temporal;
datos_ingr ingresos, aux, registros [MAX_VENTAS];

void registrar(void)
{
int i;

ap_archivo=fopen("ventas.txt", "w");

for(i=1;i<=MAX_VENTAS; i++)
{
printf("\n Folio: ");
scanf("%d",& ingresos.folio);
printf("\n Cliente: ");
scanf("%d",& ingresos.id_cliente);
printf("\n Monto: ");
scanf("%f",& ingresos.monto);
fwrite(&ingresos,sizeof(datos_ingr), 1, ap_archivo);
}
fclose(ap_archivo);
}

void leer(void)
{
ap_archivo = fopen("ventas.txt","r");

printf("\nVentas\n");
while(!feof(ap_archivo))
{
fread(&ingresos,sizeof(datos_ingr),1,ap_archivo);

printf("\nFolio: %d",ingresos.folio);
printf("\tCliente: %d",ingresos.id_cliente);
printf("\tMonto: %7.2f",ingresos.monto);
}

fclose(ap_archivo);
getch();
}

void seleccion(void)
{
int i, aux=0, x=0, temp=0, tmp=0, a[MAX_VENTAS];

ap_archivo=fopen("ventas.txt","r");
ap_temporal=fopen("leer_seleccion.txt","w");

while(!feof(ap_archivo) && i<=MAX_VENTAS)
{
fread(&registros,sizeof(ingresos),1,ap_archivo);
i++;
}

for(i=0;i<=MAX_VENTAS-1; i++)
{
aux=1;
tmp=aux;
for(x=i+1; x<=MAX_VENTAS;x++)
{
if(registros[i-1].folio >= a[MAX_VENTAS])
{
aux=x;
tmp=a[x];
}
}
temp=a[MAX_VENTAS];
a[MAX_VENTAS]=a[aux];
a[aux]=temp;
}

printf("\n\nArreglo ordenado\n");
for(i=0;i<MAX_VENTAS;i++)
{
fwrite(&registros,sizeof(ingresos),1,ap_temporal);

printf("%d",registros.folio);
printf("\t%d",registros.id_cliente);
printf("\t%7.2f\n",registros.monto);
}
getch();
fclose(ap_temporal);
fclose(ap_archivo);
}

void leer_seleccion(void)
{
ap_temporal=fopen("leer_seleccion.txt", "r");

printf("\nOrdenados por el metodo de seleccion\n");
while(!feof(ap_temporal))
{
fread(&ingresos,sizeof(datos_ingr),1, ap_temporal);
printf("\nFolio: %d",ingresos.folio);
printf("\tCliente: %d",ingresos.id_cliente);
printf("\tMonto: %7.2f",ingresos.monto);
}
fclose(ap_temporal);
getch();
}

int main(void)
{
registrar();
leer();
seleccion();
leer_seleccion();
return 0;
}
 
Volver
Arriba