回答編集履歴

2

コードの抜け修正

2021/06/30 01:21

投稿

fana
fana

スコア11996

test CHANGED
@@ -62,7 +62,11 @@
62
62
 
63
63
  if( x>=table[k] )break; //※この内側ループを抜ける条件(2)
64
64
 
65
+
66
+
65
-
67
+ table[k+1]= table[k];
68
+
69
+
66
70
 
67
71
  k--;
68
72
 

1

追記

2021/06/30 01:21

投稿

fana
fana

スコア11996

test CHANGED
@@ -19,3 +19,65 @@
19
19
  一個データが入力されるたびに,配列をどのように更新しているのか,というのが.
20
20
 
21
21
  (まぁ,「どのように」=「昇順」なわけだが)
22
+
23
+
24
+
25
+ ---
26
+
27
+
28
+
29
+ コードが読めない(?)とのことなので,
30
+
31
+ 件の2重forの部分を処理順が分かりやすい(つもりの)形に書き換えてみました.
32
+
33
+
34
+
35
+ * ループをwhileに置き換えて,`for(A; B; C)` の{A,B,C}の処理順を明確化
36
+
37
+ * ループ条件をwhileに書くのではなく,ループ内で「ループを抜ける条件」としてbreakする形に書いた.
38
+
39
+
40
+
41
+ ```C
42
+
43
+ n=0;
44
+
45
+ while( 1 )//※とにかく無条件にループ
46
+
47
+ {
48
+
49
+ if( scanf("%d",&x) != 1 )break; //※このループを抜ける条件
50
+
51
+
52
+
53
+ //-----↓内側のforの部分↓
54
+
55
+ k = n-1;
56
+
57
+ while( 1 )//※とにかく無条件にループ
58
+
59
+ {
60
+
61
+ if( k<0 )break; //※この内側ループを抜ける条件(1)
62
+
63
+ if( x>=table[k] )break; //※この内側ループを抜ける条件(2)
64
+
65
+
66
+
67
+ k--;
68
+
69
+ }
70
+
71
+ //-----↑内側のforの部分↑
72
+
73
+
74
+
75
+ table[k+1] = x;
76
+
77
+
78
+
79
+ n++;
80
+
81
+ }
82
+
83
+ ```