回答編集履歴

2

追記

2020/08/28 06:55

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -15,3 +15,81 @@
15
15
 
16
16
 
17
17
  条件が満たされたとき、migi/hidariの**両方とも**交換する。
18
+
19
+
20
+
21
+ [追記] おためし
22
+
23
+ ```C
24
+
25
+ #include <stdio.h>
26
+
27
+ #include <string.h>
28
+
29
+
30
+
31
+ int main(void){
32
+
33
+ char buf[1000];
34
+
35
+ int n;
36
+
37
+ int hidari[100];
38
+
39
+ int migi[100];
40
+
41
+
42
+
43
+ n = 27;
44
+
45
+
46
+
47
+ for(int i = 0; i < n; i++) {
48
+
49
+ hidari[i] = i%3;
50
+
51
+ migi[i] = i/3;
52
+
53
+ printf("%d %d\n", hidari[i], migi[i]);
54
+
55
+ }
56
+
57
+ printf("\nafter ---\n");
58
+
59
+ for(int i = 0; i < n; i++) {
60
+
61
+ for(int j = i + 1; j < n; j++) {
62
+
63
+ if ( hidari[i] > hidari[j] || (hidari[i] == hidari[j] && migi[i] > migi[j]) ) {
64
+
65
+ int t = hidari[i];
66
+
67
+ hidari[i] = hidari[j];
68
+
69
+ hidari[j] = t;
70
+
71
+ t = migi[i];
72
+
73
+ migi[i] = migi[j];
74
+
75
+ migi[j] = t;
76
+
77
+ }
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ for(int i = 0; i < n; i++) {
86
+
87
+ printf("%d %d\n", hidari[i], migi[i]);
88
+
89
+ }
90
+
91
+ return 0;
92
+
93
+ }
94
+
95
+ ```

1

追記

2020/08/28 06:55

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -7,3 +7,11 @@
7
7
 
8
8
 
9
9
  if ( **hidari[i] == hidari[j] &&** migi[i] > migi[j] ) { ではいかが?
10
+
11
+
12
+
13
+ > バラバラになってしまうのにその解決法がなかなか分からないです。
14
+
15
+
16
+
17
+ 条件が満たされたとき、migi/hidariの**両方とも**交換する。