100社のが知られている売上高は、ファイルに記録IN.DAT DM製品コードにより販売されている各製品(キャラクタ4)、商品名MC(文字10)、一価DJ(整数)のレコードの数SL(INT)、5部のJEの量(長整数)。
ここで、金額=価格*数量計算。読んで、構造体の配列に100回の販売記録を保存されているReadDat機能は、()販売しています。
機能SortDat()、その機能要件を用意してください:製品名で小から大順に、製品名は、プレスの量と等しい場合は小さいものから大きい順に、最終的な結果は、まだ関数呼び出しWriteDat(後に、アレイ売りに配置された構造に格納されます。内のファイルOUT5.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)のために
もし(strcmpの(販売[I]の.mc、販売[J]の.mc)> 0 ||のstrcmp(販売[I]の.mc、販売[J]の.mc)== 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(「OUT5.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)。
}