teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

11

2018/06/30 04:41

投稿

xxxrrrr
xxxrrrr

スコア17

title CHANGED
File without changes
body CHANGED
@@ -82,5 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- 昇順にしてみましたが、
85
+ 昇順にしたら、きちんとできました!!!
86
- 同じでした。
86
+ ミスの見逃しすね。これからもさらに勉強てミスを減らしていきいです
87
+
88
+ ベストアンサー以外の回答者様や指摘をしてくれた方、ありがとうございました!

10

2018/06/30 04:41

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:33

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:32

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:30

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:28

投稿

xxxrrrr
xxxrrrr

スコア17

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]<a[j])
29
+ if(a[i]>a[j])
30
30
  {
31
31
  temp=a[i];
32
32
  a[i]=a[j];

5

2018/06/30 04:27

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:20

投稿

xxxrrrr
xxxrrrr

スコア17

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,k,temp;
18
+ int a[15],i,j,l,temp;
19
19
 
20
- for(k=0;k<15;k++)
20
+ for(l=0;l<15;l++)
21
21
  {
22
- printf("a[%d]=",k);
22
+ printf("a[%d]=",l);
23
- scanf("%d",&a[k]);
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

2018/06/30 04:16

投稿

xxxrrrr
xxxrrrr

スコア17

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

2018/06/30 04:13

投稿

xxxrrrr
xxxrrrr

スコア17

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
- mid=(low+high)/2;
58
+ > mid=(low+high)/2;
59
-
59
+ >
60
- if(key==a[mid])
60
+ > if(key==a[mid])
61
- {
61
+ > {
62
- printf("目的データ:No.%d",mid);
62
+ > printf("目的データ:No.%d",mid);
63
- return 0;
63
+ > return 0;
64
- }
64
+ > }
65
- else if(key<a[mid])
65
+ > else if(key<a[mid])
66
- {
66
+ > {
67
- high=mid-1;
67
+ > high=mid-1;
68
- }
68
+ > }
69
- else if(key>a[mid])
69
+ > else if(key>a[mid])
70
- {
70
+ > {
71
- low=mid+1;
71
+ > low=mid+1;
72
+ > }
72
- }
73
+ > }
73
- }
74
74
 
75
75
  printf("目的データが見つかりません");
76
76
  return 0;

1

2018/06/30 04:13

投稿

xxxrrrr
xxxrrrr

スコア17

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
- ここにより詳細な情報を記載してください。