数学编程题2
- 提问者网友:动次大次蹦擦擦
- 2021-07-18 00:54
#include <math.h>
//using namespace std;
float re( float a[][3],int n)
{
// a[][3]=new int a[10][3];
float b=0,float h=0;
for (int i=0;i<3;i++)
{
b+=a[n][i]*a[n][i];
}
h=sqrt(b);
return h;
};
void main()//rayleigh法
{
float a[3][3]={{2,4,6},{3,9,15},{4,16,36}};
float b[10][3]={0};
float y[10][3]={0},
float x[10][3]={0};
int i,j;
int c=0;float max=0; x[0][0]=12.0000;x[0][1]=27.0000;x[0][2]=56.0000;
for(c=0;c<10;c++)
{
for (i=0;i<3;i++)
{
y[c][i]=x[c][i]/re(x[][3],c);
}
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
x[c+1][i]+=a[i][j]*y[c][j];
}
cout<<x[c][i]<<'\n';
for (j=0;j<3;j++)
{
b[c][j]+=y[c][j]*x[c+1][i];
}
cout<<b[c][j];
}
max=0;
}
}
为什么不行??请大虾帮忙
- 五星知识达人网友:底特律间谍
- 2021-07-18 01:48
一些语法问题 还有编程小毛病
改过的地方都给你注释了
如果我的回答你满意 请选为满意答案哦
#include <iostream.h>
#include <math.h>
//using namespace std;
double re( float a[][3],int n)
{
// a[][3]=new int a[10][3];
float b=0;
double h=0; //这两个值的定义要用分号隔开 h要和sqrt的返回值匹配 因此用 double
for (int i=0;i<3;i++)
{
b+=a[n][i]*a[n][i];
}
h=sqrt(b);
return h;
};
void main()//rayleigh法
{
float a[3][3]={{2,4,6},{3,9,15},{4,16,36}};
float b[10][3]={0};
float y[10][3]={0}; //这里你用的逗号
float x[10][3]={0};
int i,j;
int c=0;float max=0; x[0][0]=12.0000;x[0][1]=27.0000;x[0][2]=56.0000;
for(c=0;c<10;c++)
{
for (i=0;i<3;i++)
{
y[c][i]=x[c][i]/re(x,c); //这里第一个参数传入一个数组指针就可以了
}
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
x[c+1][i]+=a[i][j]*y[c][j];
}
cout<<x[c][i]<<'\n';
for (j=0;j<3;j++)
{
b[c][j]+=y[c][j]*x[c+1][i];
}
cout<<b[c][j];
}
max=0;
}
}