質問編集履歴
2
暫定的な解決策
title
CHANGED
File without changes
|
body
CHANGED
@@ -124,4 +124,52 @@
|
|
124
124
|
入力がi=5, j=6
|
125
125
|
や
|
126
126
|
i=-1, j=5
|
127
|
-
になることは想定されていないので途中から一見するとおかしな値が出力されていますが、それは仕様でありプログラムは正常に動作しています。
|
127
|
+
になることは想定されていないので途中から一見するとおかしな値が出力されていますが、それは仕様でありプログラムは正常に動作しています。
|
128
|
+
### 暫定的な解決策
|
129
|
+
回答してくれた方々を参考に、自分なりにコードを書いてみました。条件分岐の代わりに膨大な四則演算を用いていてかっこ悪いですが......
|
130
|
+
|
131
|
+
```C
|
132
|
+
#include <stdio.h>
|
133
|
+
void nexthen(int v,int* i,int* j,int plus){
|
134
|
+
int k=(*j+plus==((v+*i)+(v-*i)*plus)/2);
|
135
|
+
*i+=plus*k;
|
136
|
+
*j=*j*(1-k)+((v+*i)-(v-*i)*plus)/2*k+plus;
|
137
|
+
}
|
138
|
+
int main(){
|
139
|
+
int v=6;
|
140
|
+
int i=3;
|
141
|
+
int j=4;
|
142
|
+
nexthen(v,&i,&j,1);if(i!=3||j!=5)printf("iは%d, jは%d\n",i,j);
|
143
|
+
nexthen(v,&i,&j,1);if(i!=4||j!=5)printf("iは%d, jは%d\n",i,j);
|
144
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=6)printf("iは%d, jは%d\n",i,j);
|
145
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=7)printf("iは%d, jは%d\n",i,j);
|
146
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=8)printf("iは%d, jは%d\n",i,j);
|
147
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=9)printf("iは%d, jは%d\n",i,j);
|
148
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=10)printf("iは%d, jは%d\n",i,j);
|
149
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=11)printf("iは%d, jは%d\n",i,j);
|
150
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=12)printf("iは%d, jは%d\n",i,j);
|
151
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=13)printf("iは%d, jは%d\n",i,j);
|
152
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=14)printf("iは%d, jは%d\n",i,j);
|
153
|
+
printf("\n");
|
154
|
+
i=2;
|
155
|
+
j=3;
|
156
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=5)printf("iは%d, jは%d\n",i,j);
|
157
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=4)printf("iは%d, jは%d\n",i,j);
|
158
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=3)printf("iは%d, jは%d\n",i,j);
|
159
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=2)printf("iは%d, jは%d\n",i,j);
|
160
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=5)printf("iは%d, jは%d\n",i,j);
|
161
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=4)printf("iは%d, jは%d\n",i,j);
|
162
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=3)printf("iは%d, jは%d\n",i,j);
|
163
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=2)printf("iは%d, jは%d\n",i,j);
|
164
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=1)printf("iは%d, jは%d\n",i,j);
|
165
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=5)printf("iは%d, jは%d\n",i,j);
|
166
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=4)printf("iは%d, jは%d\n",i,j);
|
167
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=3)printf("iは%d, jは%d\n",i,j);
|
168
|
+
printf("end\n");
|
169
|
+
}
|
170
|
+
```
|
171
|
+
実行結果
|
172
|
+
```
|
173
|
+
|
174
|
+
end
|
175
|
+
```
|
1
タイトルをより適切なものへと変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
C言語の
|
1
|
+
C言語でほぼ同じ2か所の部分を1つにまとめたい
|
body
CHANGED
File without changes
|