VB程序设计题目:求方程9X—9Y=1,在|X|

VB程序设计题目:求方程9X—9Y=1,在|X|,第1张

sum=0

for i=-100 to 100

for j=-50 to 50

if 9i-9j=1 then

sum=sum+1

end if

next

next

#include <stdioh>

#include <mathh>

int getpara(char s[],int i)

{

int a=0,t=0;

char temp[32];

if (s[i]=='x')

{

a=1;

}

else

{

int k=0;

t=0;

while(s[i]!='x'&&s[i]!='=')

{

temp[t++]=s[(i)++];

}

while (t!=0)

{

a=a+(temp[t-1]-48)pow(10,k);

k++;

t--;

}

}

return a;

}

void main()

{

int a=0,b=0,c=0,i=0,t=0,signal;

char s[32],temp[32];

printf("请输入一个一元二次方程的标准形式,如2x^2+3x+9=0\n");

gets(s);

a=getpara(s,&i);

while (s[i]!='+'&&s[i]!='-')i++;

if(s[i]=='-')signal=1;

i++;

b=getpara(s,&i);

if(signal==1)b=0-b;

while(s[i]!='+'&&s[i]!='-')i++;

if(s[i]=='-')signal=1;

++i;

c=getpara(s,&i);

if(signal==1)c=0-c;

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

你看看行不?

先判断然后分三种类型输出:1)b^2-4ac<0 无实数根 2)b^2-4ac=0 有一根 3)b^2-4ac>0 有两根结果式=-b+sqr(b^2-4ac)/2a =-b-sqr(b^2-4ac)/2a写程序的时候把a,b,c换成你题目中的即可

原来的程序为:(那位朋友帮我改一下)

#include "stdlibh"

#include "mathh"

#include "stdioh"

#define MAX 255

int Guass(a,b,n)

int n;

double a[],b[];

{

int js,l,k,i,j,is,p,q;

double d,t;

js=malloc(nsizeof(int));

l=1;

for (k=0;k<=n-2;k++)

{

d=00;

/下面是换主元部分,即从系数矩阵A的第K行,第K列之下的部分选出

绝对值最大的元,交换到对角线上。/

for (i=k;i<=n-1;i++)

for (j=k;j<=n-1;j++)

{

t=fabs(a[in+j]); /fabs()定义在mathh中,含义是求一个浮点数的绝对值。/

if (t>d) { d=t; js[k]=j; is=i;}

}

if (d+10==10) l=0; /主元为0/

/主元不为0的时候/

else

{

if (js[k]!=k)

for (i=0;i<=n-1;i++)

{

p=in+k; q=in+js[k];

t=a[p]; a[p]=a[q]; a[q]=t;

}

if (is!=k)

{

for (j=k;j<=n-1;j++)

{

p=kn+j; q=isn+j;

t=a[p]; a[p]=a[q]; a[q]=t;

}

t=b[k]; b[k]=b[is]; b[is]=t;

}

}

if (l==0)

{

free(js); printf("fail\n");

return(0);

}

d=a[kn+k];

/下面为归一化部分/

for (j=k+1;j<=n-1;j++)

{

p=kn+j; a[p]=a[p]/d;

}

b[k]=b[k]/d;

/下面为矩阵A,B消元部分/

for (i=k+1;i<=n-1;i++)

{

for (j=k+1;j<=n-1;j++)

{

p=in+j;

a[p]=a[p]-a[in+k]a[kn+j];

}

b[i]=b[i]-a[in+k]b[k];

}

}

d=a[(n-1)n+n-1];

/矩阵无解或有无限多解/

if (fabs(d)+10==10)

{

free(js); printf("该矩阵为奇异矩阵\n");

return(0);

}

b[n-1]=b[n-1]/d;

/下面为迭代消元/

for (i=n-2;i>=0;i--)

{

t=00;

for (j=i+1;j<=n-1;j++)

t=t+a[in+j]b[j];

b[i]=b[i]-t;

}

js[n-1]=n-1;

for (k=n-1;k>=0;k--)

if (js[k]!=k)

{ t=b[k]; b[k]=b[js[k]]; b[js[k]]=t;}

free(js);

return(1);

}

main()

{

int i,n;

double A[MAX];

double B[MAX];

clrscr();

puts("This is a program to solve N order linear equation set Ax=B");

puts("\n It use Guass Elimination Method to solve the equation set:");

puts("\n a(0,0)x0+a(0,1)x1+a(0,2)x2++a(0,n-1)xn-1=b0");

puts(" a(1,0)x0+a(1,1)x1+a(1,2)x2++a(1,n-1)xn-1=b1");

puts(" ");

puts(" a(n-1,0)x0+a(n-1,1)x1+a(n-1,2)x2++a(n-1,-1)xn-1=bn-1\n");

printf(" >> Please input the order n (>1): ");

scanf("%d",&n);

printf(" >> Please input the %d elements of matrix A(%d%d) one by one:\n",nn,n,n);

for(i=0;i<nn;i++)

scanf("%lf",&A[i]);

printf(" >> Please input the %d elements of matrix B(%d1) one by one:\n",n,n);

for(i=0;i<n;i++)

scanf("%lf",&B[i]);

if (Guass(A,B,n)!=0) /调用Guass消去,1为计算成功/

printf(" >> The solution of Ax=B is x(%d1):\n",n);

for (i=0;i<n;i++) /打印结果/

printf("x(%d)=%f ",i,B[i]);

puts("\n Press any key to quit");

getch();

}

以上就是关于VB程序设计题目:求方程9X—9Y=1,在|X|全部的内容,包括:VB程序设计题目:求方程9X—9Y=1,在|X|、c语言 程序设计 关于 二元一次方程、怎样用vb设计一个解方程的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10125157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存