Se sabe que hay 100 registros de ventas de productos en el archivo IN.DAT. Cada registro de ventas de productos consta del código de producto dm (tipo de carácter de 4 dígitos), el nombre del producto mc (tipo de carácter de 10 dígitos), precio unitario Consta de cuatro partes: dj (tipo entero), cantidad sl (tipo entero) y cantidad je (tipo entero largo). Entre ellos: monto calculado = precio unitario * cantidad. La función ReadDat() lee estos 100 registros de ventas y los almacena en la matriz de estructura sell. Compile la función SortDat (). Sus requisitos funcionales son: ordenar los nombres de los productos de pequeño a grande. Si los nombres de los productos son iguales, ordénelos por cantidad de pequeño a grande. El resultado final de la disposición aún se almacena en la estructura. venta de matriz y, finalmente, la función WriteDat() Envíe los resultados al archivo OUT5.DAT.
Nota: Parte del programa fuente se almacena en PROG1.C.
No cambie el contenido de la función principal main(), la función de lectura de datos ReadDat() y la función de datos de salida WriteDat().
---------------------------------
void SortDat () /*Respuesta estándar*/
{int I,j;
PRO xy;
for(I=0;I<99;I++)
for(j=I+1;j<100;j++)
if(strcmp(sell[I].dm,sell[j].dm)<0)
{xy=vender[I];vender[I]=vender[j];vender[j]=xy;}
else if(strcmp(vender[I].dm ,vender[j].dm)==0)
if(vender[I].je {xy=vender[I]; vender[I]=vender[j]; vender[j]= xy;}
}
PROG1.C
#include
#include
#include p>
#include
#include
#define MAX 100
typedef struct{
char dm[5]; /*Código de producto*/
char mc[11] /*Nombre del producto*/
int dj /*Precio unitario*/
int sl; ; /*Cantidad*/
long je; /*Cantidad*/
}PRO;
PRO vender[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
void main()
{ memset(sell,0,sizeof(sell));
ReadDat();
SortDat(); p >
WriteDat(); }
void ReadDat()
{FILE *fp;
char str[80],ch[11] ;
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100; i++ ){
fgets(str,80,fp);
memcpy(vender[i].dm,str,4);
memcpy(vender [ i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
vender[i]. dj =atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
vender[i].sl=atoi(ch)
sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);}
void WriteDat(void)
{FILE *fp;
int i;
fp=fopen("OUT5.DAT","w" ) ;
for(i=0;i<100;i++){
fprintf(fp,"%s %s %4d %5d %101d\n", vender[ i ].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}
fclose(fp);
}
IN.DAT
1001 Mundo del software 5 100
1002 Usuario de computadora 6 120
1003 Vida en línea 27 1
1004 Interconexión de red 45 10
1005 Weibo 3.5 5 1000
10063M3.5 3 150
1007 Automatización de oficina 90 100
1008JAVA 48 15
1009 Chino WORD97 68 10
1010EXCLE97 98 103
1011OFFICE97 108 18
1012ACCESS 64 78
1013 Nivel 2 BÁSICO 65 66
1014 Nivel 2 PASCAL 66 89
1015 Nivel 2 C 67 99
1016 Nivel 2 FOR 66 12
1017 Nivel 2 FOX 66 100
1018AUTO CAD 98 871
1019PhotoShop 68 64
1020 Nivel 1 78 101
1021 Clase 1 Clase B 98 1000
1022 Clase 3 Clase A 78 765
1023 Clase 3 Clase B 78 888
1024 Clase 4 88 666
1025INTERNET 58 1858
1001 Mundo del software 5 101
1002 Usuario de computadora 6 120
1003 Vida en línea 27 31
1004 Interconexión de red 45 1000
1005 Weibo 3.5 5 5001
10063M3.5 3 300
1007 Ofimática 90 871
1008JAVA 48 888
1009 Chino WORD97 68 999
1010EXCLE97 98 981
1011OFFICE97 108 18
1012ACCESS 64 78
1013 Nivel 2 BASICO 65 166
1014 Nivel 2 PASCAL 66 189
1015 Nivel 2 C 67 199
1016 Nivel 2 FOR 66 112
1017 Nivel 2 FOX 66 2000
1018AUTO CAD 98 71
1019PhotoShop 68 164
1020 Nivel 1 78 110
1021 Clase 1 B 98 1100
1022 Clase 3 A 78 705
1023 Clase 3 B 78 888
1024 Clase 4 88 650
1025INTERNET 58 2858
1001 Mundo del software 5 102
1002 Usuario de computadora 6 121
1003 Vida en línea 27 11
1004 Interconexión de red 45 20
1005 Weibo 3.5 5 1300
10063M3.5 3 250
1007 Ofimática 90 130
1008JAVA 48 115 p>
1009 Chino WORD97 68 20
1010EXCLE97 98 203
1011OFFICE97 108 818
1012ACCESS 64 178
1013 Nivel 2 BÁSICO 65 166
1014 Nivel 2 PASCAL 66 289
<p>1015 Secundaria C 67 899
1016 Secundaria FOR 66 112
1017 Secundaria FOX 66 500
1018AUTO CAD 98 71
1019PhotoShop 68 4
1020 Nivel 1 78 181
1021 Nivel 1 B 98 1500
1022 Nivel 3 A 78 65
1023 Nivel 3 Clase B 78 88
1024 Nivel 4 88 66
1025INTERNET 58 858
1001 Mundo del Software 5 200
1002 Usuarios de computadoras 6 220
1003 Vida en línea 27 21
1004 Interconexión de red 45 30
1005 Weibo 3.5 5 1050
10063M3.5 3 150 p>
1007 Ofimática 90 100
1008JAVA 48 15
1009 Chino WORD97 68 10
1010EXCLE97 98 103
1011OFFICE97 108 18
1012ACCESO 64 78
1013 Nivel 2 BÁSICO 65 66
1014 Nivel 2 PASCAL 66 89
1015 Nivel 2 C 67 99
1016 Nivel 2 POR 66 12
1017 Nivel 2 FOX 66 600
1018AUTO CAD 98 971
1019PhotoShop 68 164 p>
1020 Nivel 1 78 701
1021 Nivel 1 Categoría B 98 8899
1022 Nivel 3 Categoría A 78 115
1023 Nivel 3 Clase B 78 118
1024 Nivel 4 88 116
1025INTERNET 58 58
OUT.DAT