質問編集履歴

2

突っかかってくる方がいるのでそれを避けるために

2020/10/11 08:07

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- C言語ループごとに初期値を+1
1
+ 解決済みの質問なので大丈夫で
test CHANGED
@@ -1,111 +1 @@
1
- 配列をn個入力して、その中で値の差の絶対値が一番小さい配列のペアとその絶対値を出力するプログラムを作ろうと考えています。
2
-
3
- のプログラムでは、総当たり配列差の絶対値計算し、中の最小値得ようとしていま
1
+ ポインタ使い方やループについて質問をしましたが予期せぬ指摘を受けたでコード削除させていただきした
4
-
5
- 1日考えましたが、どこが間違っているのか分かりませんでした。
6
-
7
- 入力を、
8
-
9
- 5
10
-
11
- -4
12
-
13
- 4.5
14
-
15
- -1.1
16
-
17
- 4.2
18
-
19
- 10.4
20
-
21
- とすると、実行結果が
22
-
23
- 最も近いペア:(a[0],a[3]), 距離:8.200000
24
-
25
- となります。fabsの使い方やポインタの使い方も曖昧なので、ご教授いただきたいです。
26
-
27
-
28
-
29
-
30
-
31
- ```C
32
-
33
- #include<stdio.h>
34
-
35
- #include<math.h>
36
-
37
-
38
-
39
- //aとbは配列番号の記憶、*kは最小距離,nは配列の要素数
40
-
41
- void cal(int* a, int* b, double* k, double *t, int n){
42
-
43
- int s = 1, count = 1;
44
-
45
- *k = fabs(t[0] - t[1]);
46
-
47
- for (int i=0; i < n - 1; i++) {
48
-
49
- for (s; s < n; s++) {
50
-
51
- if (fabs(t[i] - t[s]) < (*k)) {
52
-
53
- *k = fabs(t[i] - t[s]); //最小距離の記憶
54
-
55
- *a = i;
56
-
57
- *b = s;
58
-
59
- }
60
-
61
- count++;
62
-
63
- s = count;
64
-
65
- }
66
-
67
- }
68
-
69
- }
70
-
71
-
72
-
73
- int main(void) {
74
-
75
- int n;
76
-
77
- scanf("%d",&n);
78
-
79
- double a[n];
80
-
81
- for (int i = 0; i < n; i++) {
82
-
83
- scanf("%lf", &a[i]);
84
-
85
- }//ここまで配列の作成と入力
86
-
87
- int p1, p2;//最初距離のペアの配列番号を記憶する変数
88
-
89
- double min;//最小距離
90
-
91
- int* pair_1;
92
-
93
- int* pair_2;
94
-
95
- double* x_dst;
96
-
97
- pair_1 = &p1;
98
-
99
- pair_2 = &p2;
100
-
101
- x_dst = &min;
102
-
103
- cal(pair_1, pair_2, x_dst, a, n);
104
-
105
- printf("最も近いペア:(a[%d],a[%d]), 距離:%f", p1, p2, min);
106
-
107
- return 0;
108
-
109
- }
110
-
111
- ```

1

自分の実現したいことを加筆しました。

2020/10/11 08:07

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
1
  配列をn個入力して、その中で値の差の絶対値が一番小さい配列のペアとその絶対値を出力するプログラムを作ろうと考えています。
2
+
3
+ 下のプログラムでは、総当たりに配列の差の絶対値を計算し、その中の最小値を得ようとしています。
2
4
 
3
5
  1日考えましたが、どこが間違っているのか分かりませんでした。
4
6
 
@@ -21,6 +23,8 @@
21
23
  最も近いペア:(a[0],a[3]), 距離:8.200000
22
24
 
23
25
  となります。fabsの使い方やポインタの使い方も曖昧なので、ご教授いただきたいです。
26
+
27
+
24
28
 
25
29
 
26
30