我自己写的信号放大器的程序,可总是出错,大家帮忙看下哪里错了,怎么修改
#include<cstdio>#include<cstring>
#include<stdio.h>
#define NUM 100
int main()
{
int n,flag[NUM],G[NUM][NUM],lchild[NUM],rchild[NUM],tolerance,magnifier[NUM],D[NUM];
int i,j,a,b,c,d,temp[NUM],end;
printf("请输入一共有几层节点:");
scanf("%d",&n);
printf("请按以下格式输入边:0 1 3 表示从0号节点到1号节点有一条边,权值为3\n,根节点为0号节点\n节点标号请小于100\n 每个节点的出度最多是2\n");
memset(flag,0,sizeof(flag));
memset(G,0,sizeof(G));
memset(magnifier,0,sizeof(magnifier));
flag[0]=1;
for(i=0;i<n-1;i++)
{
printf("第%d层有几条边:",i+1);
scanf("%d",&i);
end=0;
for (int j = 0; j <d;j++)
{
printf("输入错误!\n程序正在退出......\n");
return 0;
}
if (lchild[a])rchild[a]=b;
else lchild[a]=b;
G[a][b]=c;
temp[end++]=b;
}
for (j=0;j<end;j++)flag[temp[j]]=1;
void set_magnifier(int magnifier[],int G[][NUM],int lchild[],int rchild[],int tolerance,int D[],int num);
printf("请输入容差:");
scanf("%d",&tolerance);
if (!tolerance)
{
printf("输入错误!\n程序正在退出......\n");
return 0;
}
if (n==1)
{
printf("不需要放置放大器\n");
}
memset(D,0,sizeof(D));
set_magnifier(magnifier,G,lchild,rchild,tolerance,D,0);{
int output=0;
for (i=0;i<NUM;i++)
if (magnifier[i])
{
printf("%d",i);
output=1;
}
if (!output) printf("不需要放置放大器\n");
else printf("\n");
return 0;
}
void set_magnifier(int magnifier[],int G[][NUM],int lchild[],int rchild[],int tolerance,int D[],int num);
if (!lchild[num]&&!rchild[num])
return;
if (lchild[num])
{
set_magnifier(magnifier,G,lchild,rchild,tolerance,D,lchild[num]);
if (D[lchild[num]]+G[num][lchild[num]]>tolerance)
{
magnifier[lchild[num]]=1;
D[num]>=D[lchild[num]];
}
else D[num]>=D[rchild[num]]+G[num][rchild[num]];
}
if(rchild[num])
{
set_magnifier(magnifier,G,lchild,rchild,tolerance,D,rchild[num]);
if (D[rchild[num]]+G[num][rchild[num]]>tolerance)
{
magnifier[rchild[num]]=1;
D[num]>=D[rchild[num]];
}
else D[num]>=D[rchild[num]]+G[num][rchild[num]];
}
}
检测说if (!lchild[num]&&!rchild[num])这句以及后面的num 均没有标识符 且main没有返回值
求解。。。。