与えられた配列 p[5] を循環的に左に 2 桁シフトする関数を記述します。したがって、p[0] = 15、p[1] = 30、p[2] = 28、p[3] = 19、p[4] = 61 の場合、シフト後 p[0] = 28、p[ 1] = 19、p[2] = 61、p[3] = 15、および p[4] = 30. (4 x 5) 行列に対してこの関数を呼び出し、2 だけ左にシフトされた行を取得します。
以下は私がこれまでに持っているコードですが、機能していません。の問題は、ヘルパー関数がパラメーターint *
を取るため、メイン関数で配列を取らないため、正しく機能しないことです。しかし、それはうまくコンパイルされます。
#include<stdio.h>
void moveLeft2(int p[5])
{
int temp1 = p[0];
int temp2 = p[1];
for(int i = 0; i < 5 - 2; i++)
{
p[i] = p[i + 2];
}
p[3] = temp1;
p[4] = temp2;
}
int main()
{
int p[4][5] = {
{15,30,28,19,61},
{1,2,3,4,5},
{6,7,8,9,20},
{11,12,13,14,15}};
int i;
moveLeft2(p);
return 0;
}
誰でも助けることができますか?