この部分にエラーが出て→ sweep(c, t, 3, 4, iwork, ILL);
型"double”の引数は型”int*"とのパラメータとの互換性がありませんと出ます
また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください
#include<stdio.h> #include<math.h> #include<stdlib.h> #define eps 1.e-5 void sweep(double *, double *, int, int, int *, int); void DS0(double *, double *, int *, double *, double *, int, int); void FUN(double *, double *, double *, int, double *, int *); void main(void) { double a[1], da[1], x[7], y[7]; int i, n, delta[1]; scanf_s("%d", &n); for (i = 0; i < n; ++i) scanf_s("%1f %1f", &x[i], &y[i]); scanf_s("%1f %1f", &a[0], &da[0]); printf("Iteration b(1) b(2) b(3) a f\n"); DS0(a, da, delta, x, y, 1, n); } void DS0(double *pa, double *pda, int *pdelta, double *px, double *py, int m, int n) { double ak, akp, akm, f0, fp, fm; int k, j, iteration = 0; for (k = 0; k < m; ++k) { *(pdelta + k) = 1; } FUN(pa, px, py, n, &f0, &iteration); do { j = 0; for (k = 0; k < m; ++k) { ak = *(pa + k); akp = *(pa + k) + *(pda + k); akm = *(pa + k) - *(pda + k); if (*(pdelta + k) == 1) { *(pa + k) = akp; FUN(pa, px, py, n, &fp, &iteration); if (f0 > fp) { *(pdelta + k) = 1; f0 = fp; break; } else { *(pa + k) = akm; FUN(pa, px, py, n, &fm, &iteration); if (f0 > fm) { *(pdelta + k) = -1; f0 = fm; break; } else { j++; *(pa + k) = ak; } } } else { *(pa + k) = akm; FUN(pa, px, py, n, &fm, &iteration); if (f0 > fm) { *(pdelta + k) = -1; f0 = fm; break; } else { *(pa + k) = akp; FUN(pa, px, py, n, &fp, &iteration); if (f0 > fp) { *(pdelta + k) = 1; f0 = fp; break; } else { j++; *(pa + k) = ak; } } } } } while (j != m); printf("*** SOLVED ***\n"); FUN(pa, px, py, n, &f0, &iteration); return; } void FUN(double *pa, double *px, double *py, int n, double *pf, int *pi) { double b[3], c[3][4], iwork[3], t[3], yi; int i, ILL; c[0][0] = n; c[0][1] = 0.; c[0][2] = 0.; c[0][3] = 0.; c[1][1] = 0.; c[1][2] = 0.; c[1][3] = 0.; c[2][2] = 0.; c[2][3] = 0.; for (i = 0; i < n; i++) { c[0][1] += log10(*(px + i)); c[1][1] += log10(*(px + i))*log10(*(px + i)); c[0][2] += pow(log10(*(px + i)), *(pa + 0)); c[1][2] += pow(log10(*(px + i)), *(pa + 0) + 1.); c[2][2] += pow(log10(*(px + i)), 2.**(pa + 0)); c[0][3] += *(py + i); c[1][3] += *(py + i)*log10(*(px + i)); c[2][3] += *(py + i)*pow(log10(*(px + i)), *(pa + 0)); } c[1][0] = c[0][1]; c[2][0] = c[0][2]; c[2][1] = c[1][2]; sweep(c, t, 3, 4, iwork, ILL); for (i = 0; i < 3; ++i) { b[i] = c[i][3]; } *pf = 0.; for (i = 0; i < n; ++i) { yi = b[0] + b[1] * log10(*(px + i)) + b[2] * pow(log10(*(px + i)), *(pa + 0)); *pf += (*(py + i) - yi)*(*(py + i) - yi); } printf("%6d %12.3e%12.3e%12.3e%7.2f%11.2e\n", *pi, b[0], b[1], b[2], *(pa + 0), *pf); ++*pi; return; } void sweep(double *pa, double *pt, int n, int m, int *piwork, int ILL) { double max, w; int i, j, k, iw, p, q; for (i = 0; i < n; ++i) { max = fabs(*(pa + m * i)); for (j = 0; j < n; ++j) { if (max < fabs(*(pa + m * i + j))) max = fabs(*(pa + m * i + j)); } for (j = 0; j < m; ++j)*(pa + m * i + j) = *(pa + m * i + j) / max; } for (j = 0; j < n; ++j) { max = fabs(*(pa + j)); for (i = 0; i < n; ++j) { if (max < fabs(*(pa + m * i + j))) max = fabs(*(pa + m * i + j)); } *(pt + j) = max; for (i = 0; i < n; ++i) *(pa + m * i + j) = *(pa + m * i + j) / max; } for (i = 0; i < n; ++i) { *(piwork + i) = i; } for (k = 0; k < n; ++j) { max = fabs(*(pa + m * k + k)); p = k; q = k; for (j = k; j < n; ++j) { for (i = k; i < n; ++i) { if (max < fabs(*(pa + m * i + j))) { max = fabs(*(pa + m * i + j)); p = i; q = j; } } } if (max <= eps) { ILL = 1; printf("MATRIX IS ILL\n"); return; } for (i = 0; i < n; ++i) { w = *(pa + m * i + k); *(pa + m * i + k) = *(pa + m * i + q); *(pa + m * i + q) = w; } for (j = k; j < m; ++j) { w = *(pa + m * k + j); *(pa + m * k + j) = *(pa + m * p + j); *(pa + m * p + j) = w; } i = *(piwork + k); *(piwork + k) = *(piwork + q); *(piwork + q) = i; for (j = k + 1; j < m; ++j) { *(pa + m * k + j) = *(pa + m * k + j) / (*(pa + m * k + k)); } for (i = 0; i < n; ++i) { if (i != k) { for (j = k + 1; j < m; ++j) { *(pa + m * i + j) = *(pa + m * i + j) - *(pa + m * i + k)*(*(pa + m * k + j)); } } } } for (j = n; j < m; ++j) { for (i = 0; i < n; ++i) { iw = *(piwork + i); *(pa + m * iw + n - 1) = *(pa + m * i + j); } for (i = 0; i < n; ++i) { *(pa + m * i + j) = *(pa + m * i + n - 1) / (*(pt + i)); } } system("pause"); return; }