シフト演算を用いて「□」と「■」を以下のように表示せよという問題が出たのですが
分からなくて困っています。
どなたかお知恵を貸していただけないでしょうか?
□□□□□□□□■
□□□□□□□■
□□□□□□■
□□□□□■
□□□□■
□□□■
□□■
□■
■
□■
□□■
□□□■
□□□□■
□□□□□■
□□□□□□■
□□□□□□□■
□□□□□□□□■
シフト演算についての質問です。
-
conio
Re:シフト演算についての質問です。
シフト演算を、どう描画と結びつけるのかが不明なのですが
とりあえず こんな感じでどうでしょう?
※Shiftという関数は、指定した数だけ"□"を表示する関数です。
(ただし、一番右端が"■"になる)
あと、このプログラムには色々と修正の余地があるので、考えてみると良いと思います。
-----------------------------------------------------------------
#include <stdio.h>
void Shift(int num)
{
int i = 0;
if(num > 0){
i = 1 << (num - 1);
while(i){
if(i & 1)
printf("■");
else
printf("□");
i >>= 1;
}
}
puts(" ");
}
int main(void)
{
Shift(9);
Shift(8);
Shift(7);
Shift(6);
Shift(5);
Shift(4);
Shift(3);
Shift(2);
Shift(1);
Shift(2);
Shift(3);
Shift(4);
Shift(5);
Shift(6);
Shift(7);
Shift(8);
Shift(9);
return 0;
}
-----------------------------------------------------------------