Escribir un programa en C++

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

#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();

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

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

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

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