LuckyStrike
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте, не поможете ли исправить ошибки в коде в С++ не совсем разбираюсь...из с# в с++ пытался переделать..получилось вот #include <stdio.h> #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> #include <time.h> #include <iomanip.h> #include <math.h> //#define eps 0.001 const int count=4; void Jacobi(int N, double **A, double *F, double eps) { cout<<"Metod Jacobi"<<endl; double *TempX = new double[N]; double *X = new double[N]; double norm; int k=0; do { for (int i = 0; i < N; i++) { TempX[i] =- F[i]; for (int g = 0; g < N; g++) { if (i != g) TempX[i] += A[i][g] * X[g]; } TempX[i] /= -A[i][i]; } norm = fabs(X[0] - TempX[0]); for (int h = 0; h < N; h++) { if (fabs(X[h] - TempX[h]) > norm) norm = fabs(X[h] - TempX[h]); X[h] = TempX[h]; } } while (norm > eps); cout<<"Vektor X:"<<endl; for (int i=0; i<N; i++) //cout<<"X["+(i+1)+"]="+X[i]<<endl; cout<<"Kolichestvo iteraziy="+k<<endl; } /*bool converge(double *xk, double *xkp, double eps) { int Z=4; for (int i = 0; i < xk[Z]; i++) if (fabs(xk[i]-xkp[i]) >= eps) return false; else return true; } void Zeidel(int n, double **a, double *b, double eps) { cout<<"Metod Zeidely"<<endl; double *x = new double[n]; double *p = new double[n]; int k = 0; do { for(int i = 0; i < n; i++) { double var = 0; for(int j = 0; j < n; j++) if(j != i) var += (a[i][j]*x[j]); p[i] = x[i]; x[i]=(b[i] - var)/a[i][i]; } } while(!converge(x,p,eps)); cout<<"Vektor X:"<<endl; for (int i=0; i<n; i++) cout<<"X["+(i+1)+"]="+x[i]<<endl; cout<<"Kolichestvo iteraziy="+k<<endl; }*/ int main() { double a[count][count]={ { -0.77, -0.14, 0.06, -0.12 }, { 0.12, -1, 0.32, -0.18 }, { 0.08, -0.12, -0.77, 0.32 }, { 0.25, 0.02, 0.14, -1 } }; double b[count]={ -1.21, 0.72, 0.58, -1.56 }; double Eps = 0.01; cout<<"Tochnost'=0,01"; Jacobi(count, a, b, Eps); //Zeidel(count, a, b, Eps); Eps = 0.001; cout<<"Tochnost'=0,001"; Jacobi(count, a, b, Eps); //Zeidel(count, a, b, Eps); Eps = 0.0001; cout<<"Tochnost'=0,0001"; Jacobi(count, a, b, Eps); //Zeidel(count, a, b, Eps); Eps = 0.00001; cout<<"Tochnost'=0,00001"; Jacobi(count, a, b, Eps); //Zeidel(count, a, b, Eps); Eps = 0.000001; cout<<"Tochnost'=0,000001"; Jacobi(count, a, b, Eps); //Zeidel(count, a, b, Eps); getch(); return (0); } ощибки 82 D:\4.cpp cannot convert `double (*)[4]' to `double**' for argument `2' to `void Jacobi(int, double**, double*, double)' 86 D:\4.cpp cannot convert `double (*)[4]' to `double**' for argument `2' to `void Jacobi(int, double**, double*, double)' 90 D:\4.cpp cannot convert `double (*)[4]' to `double**' for argument `2' to `void Jacobi(int, double**, double*, double)' 94 D:\4.cpp cannot convert `double (*)[4]' to `double**' for argument `2' to `void Jacobi(int, double**, double*, double)' 98 D:\4.cpp cannot convert `double (*)[4]' to `double**' for argument `2' to `void Jacobi(int, double**, double*, double)' |