📄 gudingzengliangfa.cpp
字号:
#include<stdio.h>
main()
{
float a[100][100]={0.0};
float A[100]={0.0};
int i=1,j,h=0;
float b;
int k=1,q=1,l,y;
char c,d;
int r[100]={0};
//-------------请输入样本集X1,并将其转化为增广模式向量---------------------------
printf("请输入样本集X1,不同维间用逗号隔开,回车进入下一个,输入完毕后按#退出。\n");
while(c!='#')
{
printf("请输入第%d个样本",i);
j=0;
scanf("%f",&a[i][j+1]);
scanf("%c",&c);
while(c==',')
{
j++;
scanf("%f",&a[i][j+1]);
scanf("%c",&c);
} //由,号区别不同维向量,放入a[][]二维数组中
r[i]=j+2; //r[]数组存放该模式向量集维数
while(c=='@') //输入@退出程序
break;
a[i][0]=1; //将其成员变为增广模式向量
i++;
}
//-------------请输入样本集X2,并将其转化为增广模式向量--------------------------
printf("请输入样本集X2,不同维间用逗号隔开,回车进入下一个,输入完毕后按#退出。\n");
while(d!='#')
{
j=0;
printf("请输入第%d个样本",i);
scanf("%f",&b);
a[i][j+1]=-b; //X2成员符号定为负
scanf("%c",&d);
while(d==',')
{
j++;
scanf("%f",&b);
a[i][j+1]=-b; //将样本集X2归一化
scanf("%c",&d);
}
r[i]=j+2;
while(d=='@')
break;
a[i][0]=-1;
i++;
}
l=i; //记录数组总长度
//-----------------------打印---------------------------------
for(i=1;i<l;i++)
{
printf("a[%d]=",i); //打印所有数组成员
y=r[i];
j=0;
while(y!=0)
{
printf("%f\t",a[i][j]);
y--;
j++;
}
printf("\n");
if(r[i]>h)
h=r[i]; //h的终值为最大维数
}
printf("A=");
for(j=0;j<h;j++)
printf("%d",A[j]);
printf("\n");
//------------------------------固定增量法求解权向量-----------------------------
while(k!=0)
{
k=0;
printf("第%d次迭代:\n",q);
for(i=1;i<l;i++)
{
y=r[i];
b=0.0;
for(j=0;j<y;j++)
b=A[j]*a[i][j]+b; //计算内积
if(b<=0)
{
printf("用固定增量法求解的权向量为A=");
y=r[i];
for(j=0;j<y;j++)
{
A[j]=A[j]+a[i][j];
printf("%f\t",A[j]);
}
k++; //标记
printf("\n");
}
}
q++;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -