100社のが知られている売上高は、ファイルに記録IN.DAT DM製品コードにより販売されている各製品(キャラクタ4)、商品名MC(文字10)、一価DJ(整数)のレコードの数SL(INT)、5部のJEの量(長整数)。ここで、金額=価格*数量計算。読んで、構造体の配列に100回の販売記録を保存されているReadDat機能は、()販売しています。
()関数SortDatを調製、その機能要件てください:製品コードのためには、降順に配置された、製品コード場合と同様、プレス下降量が配置され、まだ関数呼び出しの後、アレイ売りの最終的な構造配置に結果WriteDat()OUT6.DATは、ファイルに結果を出力します。
書式#include <stdio.hに>
書式#include <mem.h>
書式#include <string.hの>
書式#include <conio.h>
書式#include <stdlib.h>に含ま
#define MAX 100
typedefは構造体{
チャーDM [5]; / 商品コード /
チャーMC [11]; / 名前 /
int型のDJ; / 価格 /
int型SL; / 数 /
長いJE; / 金額 /
}プロ;
PRO販売[MAX];
空ReadDat();
空WriteDat();
空SortDat()
{私は、jはint型。
PRO XY;
以下のための式(I = 0、I <99; I ++)
(; J <100; J ++ J = I + 1)のために
IF(のstrcmp(売り[I] .dm、販売[J] .dm)<0 ||のstrcmp(売り[I] .dm、販売[J] .dm)== 0 &&売り[I] .je <売り[J ] .je)
{XY =売り[I]。販売[i]は=販売[J]。販売[J] = XY;}
}
無効メイン()
{
memsetの(販売、0、はsizeof(売り));
ReadDat();
SortDat();
WriteDat();
}
空ReadDat()
{
FILE * fpを。
文字列str [80]、CH [11]。
私はint型。
FP =のfopen(「IN.DAT」、「R」)。
以下のための式(I = 0、I <100; I ++){
関数fgets(STR、80、FP)。
memcpy(売り[I] .dm、STR、4)。
memcpy(販売[I]の.mc、STR + 4,10)。
memcpy(CH、STR + 14,4); CH [4] = 0;
販売[I] .dj = ATOI(CH)。
memcpy(CH、STR + 18,5)。
CH [5] = 0; 販売[I]の.sl = ATOI(CH)。
[i]を.je =(ロング)販売を販売[i]を.dj *販売[I]の.sl。
}
FCLOSE(FP)。
}
空WriteDat(無効)
{
FILE * fpを。
私はint型。
FP =のfopen( "OUT6.DAT"、 "W")。
以下のための式(I = 0、I <100; I ++){
printf( "%S%S%4D%5D%5D \ n" は、販売[I] .dm、販売[I]の.mc、販売[I] .dj、販売[I]の.sl、販売[I]。 JE);
関数fprintf(FP、 "%S%S%4D%5D%5D \ n" は、販売[I] .dm、販売[I]の.mc、販売[I] .dj、販売[I]の.sl、販売[I ] .je)。
}
FCLOSE(FP)。
}