C言語
前提・実現したいこと
どちらにシフトするかと、いくつシフトするかを入力し、シフトした結果を表示させる。
このときに素数からはみ出ないようにしたい(0、またはここにない数字になる)
- 左右どちらにシフト(移動)するか入力する
- シフト数を入力する
- シフト数は総素数を越えない
試したこと
/* 配列の一文字シフト * 要素数5の配列 */ #include<stdio.h> int main( void ) { int L[ 5 ] = { 5,8,1,3,4 }, R[ 5 ] = { 5,8,1,3,4 }; int i,wk=0; wk = L[ 0 ]; for( i = 0; i<5; i++) L[ i ] = L[i+1]; L[ 4 ] = wk; for( i=0;i<5;i++) { printf( "L[%d]:%d¥n", i, L[ i ] ); } printf( "---------¥n" ); wk=R[ 4 ]; for( i = 4; i >0; i-- ) R[ i ] = R[ i-1 ]; R[ 0 ] =wk ; for( i =0; i <5;i++) { printf( "R[%d]:%d¥n", i, R[ i ] ); } return 0; }
このプログラムをもとにシフトする方向とシフトする数を入れたプログラムを作成したい
実行結果
L[0]:8
L[1]:1
L[2]:3
L[3]:4
L[4]:5
R[0]:4
R[1]:5
R[2]:8
R[3]:1
R[4]:3
試したい実行結果
元の配列:1 2 3 4 5 6 7
どちらにシフトしますか(1:左 2:右):2
いくつシフトしますか(1~6):3
右に3文字シフトした結果
元の配列:1 2 3 4 5 6 7
シフト後:5 6 7 1 2 3 4
### 問題点
このプログラムでは左右に1文字しか移動できていません
実行したいのは左右どちらに何文字シフトさせるのかです
(if文だと記入しやすいです)
回答3件
あなたの回答
tips
プレビュー