質問編集履歴
11
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,5 +82,7 @@
|
|
82
82
|
|
83
83
|
|
84
84
|
|
85
|
-
昇順にし
|
85
|
+
昇順にしたら、きちんとできました!!!
|
86
|
-
|
86
|
+
ミスの見逃しですね。これからもさらに勉強してミスを減らしていきたいです。
|
87
|
+
|
88
|
+
ベストアンサー以外の回答者様や指摘をしてくれた方、ありがとうございました!
|
10
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
|
13
13
|
```lang-C
|
14
14
|
```#include <stdio.h>
|
15
|
+
#include<stdio.h>
|
15
16
|
int main(void)
|
16
17
|
{
|
17
18
|
int a[15],i,j,l,temp;
|
9
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
### 該当のソースコード
|
12
12
|
|
13
|
+
```lang-C
|
13
14
|
```#include <stdio.h>
|
14
15
|
int main(void)
|
15
16
|
{
|
@@ -71,9 +72,6 @@
|
|
71
72
|
printf("目的データが見つかりません");
|
72
73
|
return 0;
|
73
74
|
}
|
74
|
-
|
75
|
-
|
76
|
-
|
77
75
|
```
|
78
76
|
|
79
77
|
### 試したこと
|
8
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,9 +10,7 @@
|
|
10
10
|
|
11
11
|
### 該当のソースコード
|
12
12
|
|
13
|
-
```C
|
14
|
-
|
15
|
-
#include <stdio.h>
|
13
|
+
```#include <stdio.h>
|
16
14
|
int main(void)
|
17
15
|
{
|
18
16
|
int a[15],i,j,l,temp;
|
7
title
CHANGED
File without changes
|
body
CHANGED
@@ -81,4 +81,9 @@
|
|
81
81
|
### 試したこと
|
82
82
|
|
83
83
|
C言語を始めたばかりなのでそもそもアルゴリズムが間違っているかもしれないです。
|
84
|
-
何度か不等号や変数を変えましたができませんでした。
|
84
|
+
何度か不等号や変数を変えましたができませんでした。
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
昇順にしてみましたが、
|
89
|
+
同じでした。
|
6
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
{
|
27
27
|
for(j=i+1;j<15;j++)
|
28
28
|
{
|
29
|
-
if(a[i]
|
29
|
+
if(a[i]>a[j])
|
30
30
|
{
|
31
31
|
temp=a[i];
|
32
32
|
a[i]=a[j];
|
5
title
CHANGED
File without changes
|
body
CHANGED
@@ -48,7 +48,9 @@
|
|
48
48
|
scanf("%d",&key);
|
49
49
|
low=0;
|
50
50
|
high=14;
|
51
|
+
|
52
|
+
|
51
|
-
|
53
|
+
/*恐らくこの下が間違っているのだと思います*/
|
52
54
|
while(low<high)
|
53
55
|
{
|
54
56
|
mid=(low+high)/2;
|
@@ -72,6 +74,8 @@
|
|
72
74
|
return 0;
|
73
75
|
}
|
74
76
|
|
77
|
+
|
78
|
+
|
75
79
|
```
|
76
80
|
|
77
81
|
### 試したこと
|
4
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,17 +10,17 @@
|
|
10
10
|
|
11
11
|
### 該当のソースコード
|
12
12
|
|
13
|
-
```C
|
13
|
+
```C
|
14
14
|
|
15
15
|
#include <stdio.h>
|
16
16
|
int main(void)
|
17
17
|
{
|
18
|
-
int a[15],i,j,
|
18
|
+
int a[15],i,j,l,temp;
|
19
19
|
|
20
|
-
for(
|
20
|
+
for(l=0;l<15;l++)
|
21
21
|
{
|
22
|
-
printf("a[%d]=",
|
22
|
+
printf("a[%d]=",l);
|
23
|
-
scanf("%d",&a[
|
23
|
+
scanf("%d",&a[l]);
|
24
24
|
}
|
25
25
|
for(i=0;i<15;i++)
|
26
26
|
{
|
@@ -36,8 +36,6 @@
|
|
36
36
|
}
|
37
37
|
|
38
38
|
printf("\n");
|
39
|
-
|
40
|
-
|
41
39
|
int m;
|
42
40
|
for(m=0;m<15;m++)
|
43
41
|
{
|
@@ -51,33 +49,29 @@
|
|
51
49
|
low=0;
|
52
50
|
high=14;
|
53
51
|
|
52
|
+
while(low<high)
|
53
|
+
{
|
54
|
+
mid=(low+high)/2;
|
55
|
+
|
56
|
+
if(key==a[mid])
|
57
|
+
{
|
58
|
+
printf("目的データ:No.%d",mid);
|
59
|
+
return 0;
|
60
|
+
}
|
61
|
+
else if(key<a[mid])
|
62
|
+
{
|
63
|
+
high=mid-1;
|
64
|
+
}
|
65
|
+
else if(key>a[mid])
|
66
|
+
{
|
67
|
+
low=mid+1;
|
68
|
+
}
|
69
|
+
}
|
54
70
|
|
55
|
-
|
56
|
-
/*おそらくこの下が間違っています。*/
|
57
|
-
> while(low<high)
|
58
|
-
> {
|
59
|
-
> mid=(low+high)/2;
|
60
|
-
>
|
61
|
-
> if(key==a[mid])
|
62
|
-
> {
|
63
|
-
> printf("目的データ:No.%d",mid);
|
64
|
-
> return 0;
|
65
|
-
> }
|
66
|
-
> else if(key<a[mid])
|
67
|
-
> {
|
68
|
-
> high=mid-1;
|
69
|
-
> }
|
70
|
-
> else if(key>a[mid])
|
71
|
-
> {
|
72
|
-
> low=mid+1;
|
73
|
-
> }
|
74
|
-
> }
|
75
|
-
|
76
71
|
printf("目的データが見つかりません");
|
77
72
|
return 0;
|
78
73
|
}
|
79
74
|
|
80
|
-
|
81
75
|
```
|
82
76
|
|
83
77
|
### 試したこと
|
3
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,7 +10,8 @@
|
|
10
10
|
|
11
11
|
### 該当のソースコード
|
12
12
|
|
13
|
-
```C
|
13
|
+
```C```
|
14
|
+
|
14
15
|
#include <stdio.h>
|
15
16
|
int main(void)
|
16
17
|
{
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -53,24 +53,24 @@
|
|
53
53
|
|
54
54
|
|
55
55
|
/*おそらくこの下が間違っています。*/
|
56
|
-
while(low<high)
|
56
|
+
> while(low<high)
|
57
|
-
|
57
|
+
> {
|
58
|
-
|
58
|
+
> mid=(low+high)/2;
|
59
|
-
|
59
|
+
>
|
60
|
-
|
60
|
+
> if(key==a[mid])
|
61
|
-
|
61
|
+
> {
|
62
|
-
|
62
|
+
> printf("目的データ:No.%d",mid);
|
63
|
-
|
63
|
+
> return 0;
|
64
|
-
|
64
|
+
> }
|
65
|
-
|
65
|
+
> else if(key<a[mid])
|
66
|
-
|
66
|
+
> {
|
67
|
-
|
67
|
+
> high=mid-1;
|
68
|
-
|
68
|
+
> }
|
69
|
-
|
69
|
+
> else if(key>a[mid])
|
70
|
-
|
70
|
+
> {
|
71
|
-
|
71
|
+
> low=mid+1;
|
72
|
+
> }
|
72
|
-
|
73
|
+
> }
|
73
|
-
}
|
74
74
|
|
75
75
|
printf("目的データが見つかりません");
|
76
76
|
return 0;
|
1
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
__**二分探索しようとすると失敗します
|
1
|
+
__**二分探索しようとすると失敗します
|
2
2
|
|
3
|
-
|
3
|
+
|
4
4
|
配列に15個の数値を入力し、昇順にソートした後 二分探索でkeyに入力したデータが何番目にあるかを出力するプログラムを作りたいのですが、どうすればいいでしょうか。
|
5
5
|
|
6
6
|
### 発生している問題・エラーメッセージ
|
7
7
|
keyが真ん中の時以外、ループを抜けて終わってしまいます。
|
8
8
|
```
|
9
|
-
エラーメッセージ
|
10
|
-
```
|
11
9
|
|
10
|
+
|
12
11
|
### 該当のソースコード
|
13
12
|
|
14
13
|
```C
|
@@ -51,6 +50,9 @@
|
|
51
50
|
low=0;
|
52
51
|
high=14;
|
53
52
|
|
53
|
+
|
54
|
+
|
55
|
+
/*おそらくこの下が間違っています。*/
|
54
56
|
while(low<high)
|
55
57
|
{
|
56
58
|
mid=(low+high)/2;
|
@@ -80,8 +82,4 @@
|
|
80
82
|
### 試したこと
|
81
83
|
|
82
84
|
C言語を始めたばかりなのでそもそもアルゴリズムが間違っているかもしれないです。
|
83
|
-
何度か不等号や変数を変えましたができませんでした。
|
85
|
+
何度か不等号や変数を変えましたができませんでした。
|
84
|
-
|
85
|
-
### 補足情報(FW/ツールのバージョンなど)
|
86
|
-
|
87
|
-
ここにより詳細な情報を記載してください。
|