ページ 1 / 1
シフト演算についての質問です。
Posted: 2009年7月15日(水) 19:24
by アヤ
シフト演算を用いて「□」と「■」を以下のように表示せよという問題が出たのですが
分からなくて困っています。
どなたかお知恵を貸していただけないでしょうか?
□□□□□□□□■
□□□□□□□■
□□□□□□■
□□□□□■
□□□□■
□□□■
□□■
□■
■
□■
□□■
□□□■
□□□□■
□□□□□■
□□□□□□■
□□□□□□□■
□□□□□□□□■
Re:シフト演算についての質問です。
Posted: 2009年7月15日(水) 20:15
by conio
シフト演算を、どう描画と結びつけるのかが不明なのですが
とりあえず こんな感じでどうでしょう?
※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;
}
-----------------------------------------------------------------
Re:シフト演算についての質問です。
Posted: 2009年7月17日(金) 09:54
by LUNA
へぇ・・・シフト演算子ってこうやって使うんだなぁ~・・・
後、mainの中ループ使ってサクッとしたプログラムにできそうね。