質問編集履歴

4

文法の修正

2018/12/07 10:43

投稿

cooh2
cooh2

スコア10

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
 
6
6
 
7
- また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください```#include<stdio.h>
7
+ また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください
8
+
9
+
10
+
11
+ ```ここに言語を入力
12
+
13
+ #include<stdio.h>
8
14
 
9
15
  #include<math.h>
10
16
 
@@ -410,6 +416,4 @@
410
416
 
411
417
  }
412
418
 
413
- コード
414
-
415
419
  ```

3

文法の修正

2018/12/07 10:43

投稿

cooh2
cooh2

スコア10

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください
7
+ また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください```#include<stdio.h>
8
-
9
-
10
-
11
- #include<stdio.h>
12
8
 
13
9
  #include<math.h>
14
10
 
@@ -413,3 +409,7 @@
413
409
  return;
414
410
 
415
411
  }
412
+
413
+ コード
414
+
415
+ ```

2

文法の修正

2018/12/07 10:42

投稿

cooh2
cooh2

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,181 @@
1
+ この部分にエラーが出て→ sweep(c, t, 3, 4, iwork, ILL);
2
+
3
+ 型"double”の引数は型”int*"とのパラメータとの互換性がありませんと出ます
4
+
5
+
6
+
7
+ また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください
8
+
9
+
10
+
11
+ #include<stdio.h>
12
+
13
+ #include<math.h>
14
+
15
+ #include<stdlib.h>
16
+
17
+ #define eps 1.e-5
18
+
19
+ void sweep(double *, double *, int, int, int *, int);
20
+
21
+ void DS0(double *, double *, int *, double *, double *, int, int);
22
+
23
+ void FUN(double *, double *, double *, int, double *, int *);
24
+
25
+
26
+
27
+ void main(void)
28
+
29
+ {
30
+
31
+ double a[1], da[1], x[7], y[7];
32
+
33
+ int i, n, delta[1];
34
+
35
+ scanf_s("%d", &n);
36
+
37
+ for (i = 0; i < n; ++i) scanf_s("%1f %1f", &x[i], &y[i]);
38
+
39
+ scanf_s("%1f %1f", &a[0], &da[0]);
40
+
41
+ printf("Iteration b(1) b(2) b(3) a f\n");
42
+
43
+ DS0(a, da, delta, x, y, 1, n);
44
+
45
+ }
46
+
47
+
48
+
49
+ void DS0(double *pa, double *pda, int *pdelta, double *px, double *py, int m, int n)
50
+
51
+ {
52
+
53
+ double ak, akp, akm, f0, fp, fm;
54
+
55
+ int k, j, iteration = 0;
56
+
57
+ for (k = 0; k < m; ++k) {
58
+
59
+ *(pdelta + k) = 1;
60
+
61
+ }
62
+
63
+ FUN(pa, px, py, n, &f0, &iteration);
64
+
65
+ do {
66
+
67
+ j = 0;
68
+
69
+ for (k = 0; k < m; ++k) {
70
+
71
+ ak = *(pa + k);
72
+
73
+ akp = *(pa + k) + *(pda + k);
74
+
75
+ akm = *(pa + k) - *(pda + k);
76
+
77
+ if (*(pdelta + k) == 1) {
78
+
79
+ *(pa + k) = akp;
80
+
81
+ FUN(pa, px, py, n, &fp, &iteration);
82
+
83
+ if (f0 > fp) {
84
+
85
+ *(pdelta + k) = 1;
86
+
87
+ f0 = fp;
88
+
89
+ break;
90
+
91
+ }
92
+
93
+ else {
94
+
95
+ *(pa + k) = akm;
96
+
97
+ FUN(pa, px, py, n, &fm, &iteration);
98
+
99
+ if (f0 > fm) {
100
+
101
+ *(pdelta + k) = -1;
102
+
103
+ f0 = fm;
104
+
105
+ break;
106
+
107
+ }
108
+
109
+ else {
110
+
111
+ j++;
112
+
113
+ *(pa + k) = ak;
114
+
115
+ }
116
+
117
+ }
118
+
119
+ }
120
+
121
+ else {
122
+
123
+ *(pa + k) = akm;
124
+
125
+ FUN(pa, px, py, n, &fm, &iteration);
126
+
127
+ if (f0 > fm) {
128
+
129
+ *(pdelta + k) = -1;
130
+
131
+ f0 = fm;
132
+
133
+ break;
134
+
135
+ }
136
+
137
+ else {
138
+
139
+ *(pa + k) = akp;
140
+
141
+ FUN(pa, px, py, n, &fp, &iteration);
142
+
143
+ if (f0 > fp) {
144
+
145
+ *(pdelta + k) = 1;
146
+
147
+ f0 = fp;
148
+
149
+ break;
150
+
151
+ }
152
+
153
+ else {
154
+
155
+ j++;
156
+
157
+ *(pa + k) = ak;
158
+
159
+ }
160
+
161
+ }
162
+
163
+ }
164
+
165
+ }
166
+
167
+ } while (j != m);
168
+
169
+ printf("*** SOLVED ***\n");
170
+
171
+ FUN(pa, px, py, n, &f0, &iteration);
172
+
173
+ return;
174
+
175
+ }
176
+
177
+
178
+
1
179
  void FUN(double *pa, double *px, double *py, int n, double *pf, int *pi)
2
180
 
3
181
  {
@@ -82,10 +260,156 @@
82
260
 
83
261
 
84
262
 
85
- この部分にエラーが出て→ sweep(c, t, 3, 4, iwork, ILL);
86
-
87
- 型"double”の引数は型”int*"とのパラメータとの互換性がありませんと出ます
88
-
89
-
90
-
91
- また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください
263
+ void sweep(double *pa, double *pt, int n, int m, int *piwork, int ILL)
264
+
265
+ {
266
+
267
+ double max, w;
268
+
269
+ int i, j, k, iw, p, q;
270
+
271
+
272
+
273
+ for (i = 0; i < n; ++i) {
274
+
275
+ max = fabs(*(pa + m * i));
276
+
277
+ for (j = 0; j < n; ++j) {
278
+
279
+ if (max < fabs(*(pa + m * i + j))) max = fabs(*(pa + m * i + j));
280
+
281
+ }
282
+
283
+ for (j = 0; j < m; ++j)*(pa + m * i + j) = *(pa + m * i + j) / max;
284
+
285
+ }
286
+
287
+ for (j = 0; j < n; ++j) {
288
+
289
+ max = fabs(*(pa + j));
290
+
291
+ for (i = 0; i < n; ++j) {
292
+
293
+ if (max < fabs(*(pa + m * i + j))) max = fabs(*(pa + m * i + j));
294
+
295
+ }
296
+
297
+ *(pt + j) = max;
298
+
299
+ for (i = 0; i < n; ++i) *(pa + m * i + j) = *(pa + m * i + j) / max;
300
+
301
+ }
302
+
303
+ for (i = 0; i < n; ++i) {
304
+
305
+ *(piwork + i) = i;
306
+
307
+ }
308
+
309
+ for (k = 0; k < n; ++j) {
310
+
311
+ max = fabs(*(pa + m * k + k));
312
+
313
+ p = k;
314
+
315
+ q = k;
316
+
317
+ for (j = k; j < n; ++j) {
318
+
319
+ for (i = k; i < n; ++i) {
320
+
321
+ if (max < fabs(*(pa + m * i + j))) {
322
+
323
+ max = fabs(*(pa + m * i + j));
324
+
325
+ p = i;
326
+
327
+ q = j;
328
+
329
+ }
330
+
331
+ }
332
+
333
+ }
334
+
335
+ if (max <= eps) {
336
+
337
+ ILL = 1;
338
+
339
+ printf("MATRIX IS ILL\n");
340
+
341
+ return;
342
+
343
+ }
344
+
345
+ for (i = 0; i < n; ++i) {
346
+
347
+ w = *(pa + m * i + k);
348
+
349
+ *(pa + m * i + k) = *(pa + m * i + q);
350
+
351
+ *(pa + m * i + q) = w;
352
+
353
+ }
354
+
355
+ for (j = k; j < m; ++j) {
356
+
357
+ w = *(pa + m * k + j);
358
+
359
+ *(pa + m * k + j) = *(pa + m * p + j);
360
+
361
+ *(pa + m * p + j) = w;
362
+
363
+ }
364
+
365
+ i = *(piwork + k);
366
+
367
+ *(piwork + k) = *(piwork + q);
368
+
369
+ *(piwork + q) = i;
370
+
371
+ for (j = k + 1; j < m; ++j) {
372
+
373
+ *(pa + m * k + j) = *(pa + m * k + j) / (*(pa + m * k + k));
374
+
375
+ }
376
+
377
+ for (i = 0; i < n; ++i) {
378
+
379
+ if (i != k) {
380
+
381
+ for (j = k + 1; j < m; ++j) {
382
+
383
+ *(pa + m * i + j) = *(pa + m * i + j) - *(pa + m * i + k)*(*(pa + m * k + j));
384
+
385
+ }
386
+
387
+ }
388
+
389
+ }
390
+
391
+ }
392
+
393
+ for (j = n; j < m; ++j) {
394
+
395
+ for (i = 0; i < n; ++i) {
396
+
397
+ iw = *(piwork + i);
398
+
399
+ *(pa + m * iw + n - 1) = *(pa + m * i + j);
400
+
401
+ }
402
+
403
+ for (i = 0; i < n; ++i) {
404
+
405
+ *(pa + m * i + j) = *(pa + m * i + n - 1) / (*(pt + i));
406
+
407
+ }
408
+
409
+ }
410
+
411
+ system("pause");
412
+
413
+ return;
414
+
415
+ }

1

変換できないプログラムが間違えていました

2018/12/07 10:30

投稿

cooh2
cooh2

スコア10

test CHANGED
File without changes
test CHANGED
@@ -88,4 +88,4 @@
88
88
 
89
89
 
90
90
 
91
- また、void FUN(double *, double *, double *, int, double *, int *);が変換できないと出てきます
91
+ また、void sweep(double *, double *, int, int, int *, int);が変換できないと出てきます。書き直し方を教えてください