質問編集履歴
2
暫定的な解決策
test
CHANGED
File without changes
|
test
CHANGED
@@ -251,3 +251,99 @@
|
|
251
251
|
i=-1, j=5
|
252
252
|
|
253
253
|
になることは想定されていないので途中から一見するとおかしな値が出力されていますが、それは仕様でありプログラムは正常に動作しています。
|
254
|
+
|
255
|
+
### 暫定的な解決策
|
256
|
+
|
257
|
+
回答してくれた方々を参考に、自分なりにコードを書いてみました。条件分岐の代わりに膨大な四則演算を用いていてかっこ悪いですが......
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
```C
|
262
|
+
|
263
|
+
#include <stdio.h>
|
264
|
+
|
265
|
+
void nexthen(int v,int* i,int* j,int plus){
|
266
|
+
|
267
|
+
int k=(*j+plus==((v+*i)+(v-*i)*plus)/2);
|
268
|
+
|
269
|
+
*i+=plus*k;
|
270
|
+
|
271
|
+
*j=*j*(1-k)+((v+*i)-(v-*i)*plus)/2*k+plus;
|
272
|
+
|
273
|
+
}
|
274
|
+
|
275
|
+
int main(){
|
276
|
+
|
277
|
+
int v=6;
|
278
|
+
|
279
|
+
int i=3;
|
280
|
+
|
281
|
+
int j=4;
|
282
|
+
|
283
|
+
nexthen(v,&i,&j,1);if(i!=3||j!=5)printf("iは%d, jは%d\n",i,j);
|
284
|
+
|
285
|
+
nexthen(v,&i,&j,1);if(i!=4||j!=5)printf("iは%d, jは%d\n",i,j);
|
286
|
+
|
287
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=6)printf("iは%d, jは%d\n",i,j);
|
288
|
+
|
289
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=7)printf("iは%d, jは%d\n",i,j);
|
290
|
+
|
291
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=8)printf("iは%d, jは%d\n",i,j);
|
292
|
+
|
293
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=9)printf("iは%d, jは%d\n",i,j);
|
294
|
+
|
295
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=10)printf("iは%d, jは%d\n",i,j);
|
296
|
+
|
297
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=11)printf("iは%d, jは%d\n",i,j);
|
298
|
+
|
299
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=12)printf("iは%d, jは%d\n",i,j);
|
300
|
+
|
301
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=13)printf("iは%d, jは%d\n",i,j);
|
302
|
+
|
303
|
+
nexthen(v,&i,&j,1);if(i!=5||j!=14)printf("iは%d, jは%d\n",i,j);
|
304
|
+
|
305
|
+
printf("\n");
|
306
|
+
|
307
|
+
i=2;
|
308
|
+
|
309
|
+
j=3;
|
310
|
+
|
311
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=5)printf("iは%d, jは%d\n",i,j);
|
312
|
+
|
313
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=4)printf("iは%d, jは%d\n",i,j);
|
314
|
+
|
315
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=3)printf("iは%d, jは%d\n",i,j);
|
316
|
+
|
317
|
+
nexthen(v,&i,&j,-1);if(i!=1||j!=2)printf("iは%d, jは%d\n",i,j);
|
318
|
+
|
319
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=5)printf("iは%d, jは%d\n",i,j);
|
320
|
+
|
321
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=4)printf("iは%d, jは%d\n",i,j);
|
322
|
+
|
323
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=3)printf("iは%d, jは%d\n",i,j);
|
324
|
+
|
325
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=2)printf("iは%d, jは%d\n",i,j);
|
326
|
+
|
327
|
+
nexthen(v,&i,&j,-1);if(i!=0||j!=1)printf("iは%d, jは%d\n",i,j);
|
328
|
+
|
329
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=5)printf("iは%d, jは%d\n",i,j);
|
330
|
+
|
331
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=4)printf("iは%d, jは%d\n",i,j);
|
332
|
+
|
333
|
+
nexthen(v,&i,&j,-1);if(i!=-1||j!=3)printf("iは%d, jは%d\n",i,j);
|
334
|
+
|
335
|
+
printf("end\n");
|
336
|
+
|
337
|
+
}
|
338
|
+
|
339
|
+
```
|
340
|
+
|
341
|
+
実行結果
|
342
|
+
|
343
|
+
```
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
end
|
348
|
+
|
349
|
+
```
|
1
タイトルをより適切なものへと変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
C言語の
|
1
|
+
C言語でほぼ同じ2か所の部分を1つにまとめたい
|
test
CHANGED
File without changes
|