麻烦各位XDJM,各位大侠们帮我将下面这段代码翻译成JAVA代码,谢谢了!#include <iostream>
#include <cmath>
using namespace std;
int a,b,m;
double *x0;
void Jacobi(double **c,double *d,int n,double eps);
void Gauss(double **c,double *d,int n,double eps);
void main()
{
int n;
double **A,*B;
    double e;
cout<<"请选择求方程组的迭代方法!雅可比选0,高斯-赛德尔选1!"<<endl;
cin>>n;
cout<<"输入方程组的变量的个数以及方程的个数!"<<endl;
cin>>a>>b;
A=new double*[b];
for(int i=0;i<b;i++)
{
A[i]=new double[a];
}
B=new double[b];
x0=new double[a];
cout<<"输入每个方程组的变量的系数以及方程右端的值!"<<endl;
for(int k=0;k<b;k++)
{
for(int j=0;j<a;j++)
{
cin>>A[k][j];
cout<<"A["<<k<<j<<"]="<<A[k][j]<<endl;
}
cin>>B[k];
cout<<"B["<<k<<"]="<<B[k]<<endl;
}
cout<<"输入方程组迭代的次数及所要求的精度!"<<endl;
cin>>m>>e;
cout<<"输入方程组迭代的初值!"<<endl;
for(int j=0;j<a;j++)
{
cin>>x0[j];
}
switch (n)
{
case 0:Jacobi(A,B,m,e);
break;
case 1:Gauss(A,B,m,e);
break;
default:cout<<"你没有选择求解方程组的一种方法!!"<<endl; 
break;
}
} void Jacobi(double **c,double *d,int n,double eps)
 {
 int k,i;
     double *y = new double[a],*x=new double[a],s,temp=0.0;
 k=1;
 while(1)
 {
 temp = 0.0;
 for(i=0;i<a;i++)
 {
 s=0.0;
 for(int j=0;j<a;j++)
 {
 if(j!=i)
 {
 s+=c[i][j]*x0[j];
 }
 }
 s=(d[i]-s)/c[i][i];
 y[i]=s;
 if(fabs(x0[i]-s)>temp)
 {
 temp=fabs(x0[i]-s);
 }
 }
 if(temp<eps)
 {
 cout<<"迭代成功!迭代结果为:"<<endl;
 for(i=0;i<a;i++)
 {
 cout<<"y["<<i<<"] ="<<y[i]<<endl;
 }
 break;
 }
 if(k==m)
 {
 cout<<"迭代失败!!"<<endl;
 break;
 }
 k+=1;
 for(i=0;i<a;i++)
 {
 x0[i]=y[i];
 }
 }
 }
 void Gauss(double **c,double *d,int n,double eps)
 {
 int k,i;
 double *y=new double[a],*x=new double[a],s,temp=0.0;
 for(i=0;i<a;i++)
 {
 x[i]=x0[i];
 y[i]=x[i];
 }
 k=1;
 while(1)
 {
 temp=0.0;
 for(i=0;i<a;i++)
 {
 s=0.0;
 for(int j=0;j<a;j++)
 {
 if(j!=i)
 {
 s+=c[i][j]*y[j];
 }
 }
 s=(d[i]-s)/c[i][i];
 y[i]=s;
 if(fabs(x[i]-s)>temp)
 {
 temp=fabs(x[i]-s);
 }
 }
 if(temp<eps)
 {
 cout<<"迭代成功!迭代结果为:"<<endl;
 for(i=0;i<a;i++)
 {
 cout<<"y["<<i<<"] ="<<y[i]<<endl;
 }
 break;
 }
 if(k==m)
 {
 cout<<"迭代失败!!"<<endl;
 break;
 }
 k+=1;
 for(i=0;i<a;i++)
 {
 x[i]=y[i];
 }
 }
 }

解决方案 »

  1.   

    这个应该不是很难啊
    把cout<  <<endl;该成System.out.println();
    再把函数的类型该一下,再就只用该头文件了啊
    至于什么if  for   都是一样的啊
      

  2.   

    里面涉及到两种算法,雅可比算法,高斯-赛德尔算法,可以先从这两种算法的类JAVA程序着手!然后再处理,我对C不太熟,帮不上什么忙,顶一下!希望高手解决
      

  3.   

    void Gauss(double **c,double *d,int n,double eps)

     void Jacobi(double **c,double *d,int n,double eps)
    涉及到通过参数返回值的问题.
    看代码,其实是一个二维数组和一个一维数组
    java中方法取成void Gauss(double[][] c,double[] d,int n,double eps)
    定义成double *的地方我看了看用[]替换*应该均可以.
    再有的就是System.in.read代替cin,System.out.print代替cout.
    while(1)改为while(true),<<改为+;
    缺少double fabs(double)这个方法.import java.io.IOException;
    import java.io.InputStreamReader;/**
     * TODO
     * @author trs 应用产品开发部 ly
     * @date 2005-12-9
     * @version 0.9
     */
    public class TestHelp
    {
    static int a;
    static int b,m;
    static double []x0;
    public static void main(String[] args) throws IOException
    {
    int n;
    double [][]A;
    double []B;
        double e;
        char[] in=new char[1024];
        int length=0;
    System.out.println("请选择求方程组的迭代方法!雅可比选0,高斯-赛德尔选1!");
    InputStreamReader isr=new InputStreamReader(System.in);
    length=isr.read(in);
    n=Integer.parseInt(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    System.out.println("输入方程组的变量的个数以及方程的个数!");
    length=isr.read(in);
    a=Integer.parseInt(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    length=isr.read(in);
    b=Integer.parseInt(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    A=new double[b][];
    for(int i=0;i<b;i++)
    {
    A[i]=new double[a];
    }
    B=new double[b];
    x0=new double[a];
    System.out.println("输入每个方程组的变量的系数以及方程右端的值!");
    for(int k=0;k<b;k++)
    {
    for(int j=0;j<a;j++)
    {
    length=isr.read(in);
    A[k][j]=Double.parseDouble(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    System.out.println("A["+k+j+"]="+A[k][j]);
    }
    length=isr.read(in);
    B[k]=Double.parseDouble(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    System.out.println("B["+k+"]="+B[k]);
    }
    System.out.println("输入方程组迭代的次数及所要求的精度!");
    length=isr.read(in);
    m=Integer.parseInt(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    length=isr.read(in);
    e=Double.parseDouble(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    System.out.println("输入方程组迭代的初值!");
    for(int j=0;j<a;j++)
    {
    length=isr.read(in);
    x0[j]=Double.parseDouble(new String(in,0,length).replace('\n', ' ').replace('\r', ' ').trim());
    }
    switch (n)
    {
    case 0:Jacobi(A,B,m,e);
    break;
    case 1:Gauss(A,B,m,e);
    break;
    default:System.out.println("你没有选择求解方程组的一种方法!!"); 
    break;
    }
    } static void Jacobi(double [][]c,double []d,int n,double eps)
     {
     int k,i;
         double []y = new double[a];
         double s,temp=0.0;
     k=1;
     while(true)
     {
     temp = 0.0;
     for(i=0;i<a;i++)
     {
     s=0.0;
     for(int j=0;j<a;j++)
     {
     if(j!=i)
     {
     s+=c[i][j]*x0[j];
     }
     }
     s=(d[i]-s)/c[i][i];
     y[i]=s;
     if(fabs(x0[i]-s)>temp)
     {
     temp=fabs(x0[i]-s);
     }
     }
     if(temp<eps)
     {
     System.out.println("迭代成功!迭代结果为:");
     for(i=0;i<a;i++)
     {
     System.out.println("y["+i+"] ="+y[i]);
     }
     break;
     }
     if(k==m)
     {
     System.out.println("迭代失败!!");
     break;
     }
     k+=1;
     for(i=0;i<a;i++)
     {
     x0[i]=y[i];
     }
     }
     }
    static double fabs(double a)
    {
    return 0;
    }
    static void Gauss(double [][]c,double []d,int n,double eps)
     {
     int k,i;
         double []y = new double[a];
         double []x=new double[a];
         double s,temp=0.0;
     for(i=0;i<a;i++)
     {
     x[i]=x0[i];
     y[i]=x[i];
     }
     k=1;
     while(true)
     {
     temp=0.0;
     for(i=0;i<a;i++)
     {
     s=0.0;
     for(int j=0;j<a;j++)
     {
     if(j!=i)
     {
     s+=c[i][j]*y[j];
     }
     }
     s=(d[i]-s)/c[i][i];
     y[i]=s;
     if(fabs(x[i]-s)>temp)
     {
     temp=fabs(x[i]-s);
     }
     }
     if(temp<eps)
     {
     System.out.println("迭代成功!迭代结果为:");
     for(i=0;i<a;i++)
     {
     System.out.println("y["+i+"] ="+y[i]);
     }
     break;
     }
     if(k==m)
     {
     System.out.println("迭代失败!!");
     break;
     }
     k+=1;
     for(i=0;i<a;i++)
     {
     x[i]=y[i];
     }
     }
     }
    }
      

  4.   

    原题是这样的:用"雅可比迭代法"和"高斯-赛德尔迭代法"求解方程组,谢谢了!10x1-x2-2x3=7.2
    -x1+10x2-2x3=8.3
    -x1-x2+5x3=4.3
      

  5.   

    liu_you(滴水藏海)  这个人太牛了!
    佩服一个!!!