подскажите что не так в программе почему то выдает ошибку одну когда начинается сортировка слиянием после int merge(.....) пишет(declaration synax error)и скажите может что самой логикой задачи не правильно будет ли работать так эта сортировка слиянием
Код:
#include <stdio.h>
#include<conio.h>
#include <dir.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <dos.h>
struct potreb
{
int nomer;
char FIO[25];
char adress[25];
int start;
int end;
int startdat[3];
int enddat[3];
int cena;
int dolgnik;
int ras;
};
int main()
{
char s;
int i,n,a,b,c,e;
potreb pb;
char filename[]="c:\\TEMA.txt";
FILE*f;
f=fopen(filename,"rb+");
char filname[]="c:\\oplata.txt";
FILE*d;
d=fopen(filname,"rt");
/*printf("введите цену за первые 100 квт:");
scanf("%i",&a);
printf("введите цену за следующие 150 квт:");
scanf("%i",&b);
printf("введите цену свыше 150 квт:");
scanf("%i",&c);
fprintf(d,"%i",a);
fprintf(d,"%i",b);
fprintf(d,"%i",c);
*/
fscanf(d,"%i",&a);
fscanf(d,"%i",&b);
fscanf(d,"%i",&c);
if(f)
{
do
{
fflush(stdin);//o4istka bufera klaviaturi
printf("\n файл есть выберите действие:\n");
printf("0-создать файл заново\n");
printf("1-добавить данные в существующий файл\n");
printf("2-отказаться от ввода\n");
printf("3-просмотр файла*\n");
printf("4-выход\n");
printf("5-должники\n");
printf("6-сортировка слиянием по общему расходу\n");
s=getchar();
if (s=='0') f=fopen(filename,"wb+");
else if(s=='1') f=fopen(filename,"ab+");
else if(s=='2')
{
printf("\n выберите другое действие:");
s=getchar();
}
else if(s=='3')
{
printf("\n ╔════╦═════════════╦═════════════╦═════╦═════╦═════╦════╦═══════════╦═══════════╗");
printf("\n ║ No ║ фио ║ адрес ║нач.п ║кон.п ║общ.р║цена ║ нач.дат ║ кон.дат ║");
printf("\n ╠════╬═════════════╬═════════════╬═════╬═════╬═════╬════╬═══════════╬═══════════╣ ");
rewind(f);
while(fread(&pb,sizeof(pb),1,f))
{
pb.ras=pb.end-pb.start;
if((pb.ras)<=100 && (pb.ras)>0)
pb.cena=(pb.ras)*a;
else if((pb.ras)>100 && (pb.ras)<=250)
pb.cena=(100*a)+(((pb.ras)-100)*b);
else if((pb.ras)>=250);
pb.cena=(100*a)+(150*b)+(((pb.ras)-250)*c);
printf("\n %4d %11s %11s %5d %5d %5d %4d", pb.nomer,pb.FIO,pb.adress,pb.start,pb.end,pb.ras,pb.cena);
for(int i=0;i<3;i++)
if (i==0 || i==1)
printf("%2d.",pb.startdat[i]);
else printf("%4d.",pb.startdat[i]);
printf("є");
for(int j=0;j<3;j++)
if (j==0 || j==1)
printf("%2d.",pb.enddat[j]);
else printf("%4d.",pb.enddat[j]);
printf("║");}
printf("\n ╚════╩═════════════╩═════════════╩═════╩═════╩═════╩════╩═══════════╩═══════════╝");
}
else if(s=='5')
{
printf("\n ╔══════════════════════╗");
printf("\n ║ должники ║");
printf("\n ╠══════════════════════╣");
rewind(f);
while(fread(&pb,sizeof(pb),1,f))
{
if((pb.enddat[2]-pb.startdat[2])>=1 || (pb.enddat[2]-pb.startdat[2]==0)
&& (pb.enddat[1]-pb.startdat[1])>1 || (pb.enddat[2]-pb.startdat[2])==0 &&
(pb.enddat[1]-pb.startdat[1])==1 && (pb.enddat[0]>pb.startdat[0])
|| (pb.enddat[2]-pb.startdat[2])==1 && !(pb.enddat[1]==12 && pb.startdat[1]==1))
printf("\n є%21sє",pb.FIO); }
printf("\n ╚════════════════════╝");
}
int Merge (potreb*Array, int Start, int Middle, int End)
{\\вот тут ошибка declaration synax error
potreb *RezArray;
RezArray=((potreb)*malloc(sizeof(potreb)*(End-Start+1));
int iFlag1, iFlag2, iSumFlag, i;
iSumFlag=0;
iFlag1=Start;
iFlag2=Middle+1;
while((iFlag1<=Middle)&&(iFlag2<=End))
{
if(Array[iFlag1].ras>Array[iFlag2].ras)
{
RezArray[iSumFlag]=Array[iFlag1];
iSumFlag++;
iFlag1++;
} else
{
RezArray[iSumFlag]=Array[iFlag2];
iSumFlag++;
iFlag2++;
}
}
for(i=iFlag1; i<Middle+1; i++)
{
RezArray[iSumFlag+i-iFlag1]=Array[i];
}
for(i=iFlag2; i<End+1; i++)
{
RezArray[iSumFlag+i-iFlag2]=Array[i];
}
for(i=0; i<End-Start+1; i++)
{
Array[Start+i]=RezArray[i];
}
}
int MergeSort(potreb *Array, int Start, int End)//подпрограмма слияния
{
if(Start<End)
{
MergeSort(Array, Start, (Start+End)/2);
MergeSort(Array, (Start+End)/2+1, End);
Merge(Array, Start, (Start+End)/2, End);
}
}