あともう一つあるのでこちらも…
【問題3】
以下のCプログラムを良く読み,下記の問に対する解答を電子メールで提出せよ.
/*
???といった機能を持つプログラム
*/
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int c;
int lastchar;
int status;
lastchar = '\n';
status = OUT;
while ( ( c=getchar() ) != EOF ) {
if ( lastchar == '\n' ) {
if ( c == '#' )
status = IN;
else
status = OUT;
}
if ( status == IN )
putchar(c);
lastchar = c;
}
}
(1) 上記プログラムは,どのような機能を持ったプログラムか?簡潔に説明せよ.
(ヒント: 上記プログラムをコンパイル・リンクした後,リダイレクションの機能を使ってソースプログラム自身を読み込ませてみて,結果を見てみよ.
その際,上記ソースプログラムの左端に寄っている行はその通りになっているようにしておくこと.)
(2) なぜ上記プログラムは,(1)の解答のような動作をするのか?それがわかるように,プログラムの構造を説明せよ.
(「他人に解説する」ことを思い描いて,全体的な流れ,各行の説明等をなるべくわかりやすく記述せよ.)
* report2の例と,実行例.
実行プログラムの名前を a.out 以外にしたいときは,下の例のように gcc コマンドの -o オプションを利用できる.
report2の例
#!/bin/sh
cd ~/programs
# プログラムの表示
echo
echo "==============================="
echo "= report2_0.c の表示 ="
echo "==============================="
cat report2_0.c
# コンパイル・リンク
gcc -o report2_0 report2_0.c
# プログラムの実行
echo
echo "==============================="
echo "= プログラムの実行 ="
echo "= report2_0 ="
echo "==============================="
./report2_0
report2の実行例
(太字がコマンド,
斜体が出力)
eduws1% cd
eduws1% scripts/report2
===============================
= report2_0.c の表示 =
===============================
#include <stdio.h>
main()
{
~~~ 略 ~~~
}
===============================
= プログラムの実行 =
= report2_0 =
===============================
Xa Xc Xb 誤差 Ya Yc Yb
0.0000000 0.5000000 1.0000000 0.5000000 -0.5000000 -0.3750000 0.5000000
0.5000000 0.7500000 1.0000000 0.2500000 -0.3750000 -0.0781250 0.5000000
0.7500000 0.8750000 1.0000000 0.1250000 -0.0781250 0.1699219 0.5000000
~~~ 略 ~~~
eduws1%
お暇な方いらしたらぜひ助けていただけると泣いて喜びます;
無題
Re:無題
これは問題となっている文章をコピペしただけでしょうか?
不必要な文章が含まれていたり、問題や回答について全く自分の言葉が入っていないと
完全に「丸投げ」となってしまい、大抵の掲示板で禁止されている行為になってしまいます。
「忙しいは理由にならない、そうなったのは自分のせいだ」という考え方が一般的であろうかとは思いますが、
そうは言っても私自身学生時代締め切り前になってからジタバタしたり半泣きで徹夜しながら
レポート書いた事もよくあり、お気持ちはよくわかります。
しかしどうしようもなくても、なるべく規約に沿う事はやっていただけるのでは無いかと思います。
タグを使ったり、先生から出された文章完全コピーではなく、自分の言葉を入れたり。
トピの題名はきちんと付けたり、自分はどこまでわかるのか補足を入れたり。
「やる気」の姿勢を見せることで、回答者様も親身になってくれると思います。
不必要な部分というのは「これをメールに添付して提出せよ」とか「上のプログラムを完全にコピーして実行してみよ」とかです。
長文になるときは特に、不必要な部分を削除して回答者が読む手間を省くようにした方がいいと思います。
18日ということはまだ一週間ありますよね。
まずは「どこまでやってどこがわからないのか」を明確にしませんか?
それから単に「やってみよ」系の問題も結構ありますが、実際にコンパイルして確認してみましたか?
質問の仕方がわからないようでしたら、規約にテンプレートがあるのでお使い下さい。
不必要な文章が含まれていたり、問題や回答について全く自分の言葉が入っていないと
完全に「丸投げ」となってしまい、大抵の掲示板で禁止されている行為になってしまいます。
「忙しいは理由にならない、そうなったのは自分のせいだ」という考え方が一般的であろうかとは思いますが、
そうは言っても私自身学生時代締め切り前になってからジタバタしたり半泣きで徹夜しながら
レポート書いた事もよくあり、お気持ちはよくわかります。
しかしどうしようもなくても、なるべく規約に沿う事はやっていただけるのでは無いかと思います。
タグを使ったり、先生から出された文章完全コピーではなく、自分の言葉を入れたり。
トピの題名はきちんと付けたり、自分はどこまでわかるのか補足を入れたり。
「やる気」の姿勢を見せることで、回答者様も親身になってくれると思います。
不必要な部分というのは「これをメールに添付して提出せよ」とか「上のプログラムを完全にコピーして実行してみよ」とかです。
長文になるときは特に、不必要な部分を削除して回答者が読む手間を省くようにした方がいいと思います。
18日ということはまだ一週間ありますよね。
まずは「どこまでやってどこがわからないのか」を明確にしませんか?
それから単に「やってみよ」系の問題も結構ありますが、実際にコンパイルして確認してみましたか?
質問の仕方がわからないようでしたら、規約にテンプレートがあるのでお使い下さい。
割れたように絵を分割、新たなグラフィックハンドルを作る
毎度お世話になっております、山崎です。
今回は、グラフィックを分割する方法についてお伺いに参りました。
現在、「物が割れて砕け散る」というプログラムを作ろうとしております。
添付した画像のように、一枚のグラフィックを割れたように分割して、
かけらのような複数のグラフィックを新たに作りたいと考えています。
このとき、割れ方の中心はXとYで指定した座標で、
いくつのグラフィックに分割されるかも指定できるようにしたいと考えています。(3~7枚程度に)
割れ方の方向(亀裂の角度)も割れるたびにランダムにしたいと思っています。
そこで、どうやって実現しようと思い悩んだ末私が考えたのが、
①LoadSoftImageで分割したいイメージを読みこんでおく。このイメージをAとします。
分割後のイメージ用にMakeARGB8ColorSoftImageで分割数だけハンドルを用意。これらをBとします。
②亀裂の直線の式を求め、DrawPixelSoftImageでAに亀裂の中心からイメージの端まである色で線を引いておく。
③GetPixelSoftImageでAの左上のピクセルから順に色を取得していき、
取得した色をBの同じ座標にDrawPixelSoftImageで書き込んでいく。
このとき、取得した色がさきほどDrawPixelSoftImageで線を引いた際の色ならば
そこからは違うBに色を写していく。
実際にこのアルゴリズムをコーディングしてみたところ、
分割したい画像に線を引くところまではできたのですが、
どの画素をどのイメージハンドルに写すのか?という判別の方法がわからず、
頓挫してしまいました。
添付した画像のように、あるひとつのグラフィックを
割れたように複数のグラフィックに分割する方法はどういったものがあるでしょうか。
私が挙げた方法にはこだわっておりません。
また、このグラフィックの分割を1フレームで行いたいと思っているのですが、可能でしょうか。
今回は、グラフィックを分割する方法についてお伺いに参りました。
現在、「物が割れて砕け散る」というプログラムを作ろうとしております。
添付した画像のように、一枚のグラフィックを割れたように分割して、
かけらのような複数のグラフィックを新たに作りたいと考えています。
このとき、割れ方の中心はXとYで指定した座標で、
いくつのグラフィックに分割されるかも指定できるようにしたいと考えています。(3~7枚程度に)
割れ方の方向(亀裂の角度)も割れるたびにランダムにしたいと思っています。
そこで、どうやって実現しようと思い悩んだ末私が考えたのが、
①LoadSoftImageで分割したいイメージを読みこんでおく。このイメージをAとします。
分割後のイメージ用にMakeARGB8ColorSoftImageで分割数だけハンドルを用意。これらをBとします。
②亀裂の直線の式を求め、DrawPixelSoftImageでAに亀裂の中心からイメージの端まである色で線を引いておく。
③GetPixelSoftImageでAの左上のピクセルから順に色を取得していき、
取得した色をBの同じ座標にDrawPixelSoftImageで書き込んでいく。
このとき、取得した色がさきほどDrawPixelSoftImageで線を引いた際の色ならば
そこからは違うBに色を写していく。
実際にこのアルゴリズムをコーディングしてみたところ、
分割したい画像に線を引くところまではできたのですが、
どの画素をどのイメージハンドルに写すのか?という判別の方法がわからず、
頓挫してしまいました。
添付した画像のように、あるひとつのグラフィックを
割れたように複数のグラフィックに分割する方法はどういったものがあるでしょうか。
私が挙げた方法にはこだわっておりません。
また、このグラフィックの分割を1フレームで行いたいと思っているのですが、可能でしょうか。
Re:割れたように絵を分割、新たなグラフィックハンドルを作る
>添付した画像のように、あるひとつのグラフィックを
>割れたように複数のグラフィックに分割する方法はどういったものがあるでしょうか
同じくらい面倒かもしれませんが、DrawPolygon / DrawPolygonBaseで数分だけ分割して、
それぞれを空ハンドルに描画、でどうでしょう?
Re:割れたように絵を分割、新たなグラフィックハンドルを作る
>Justyさん
ご返信、誠にありがとうございます。
ただいま、JustyさんのDrawPolygonを使った方法を試そうとしております。
しかしなぜか、ポリゴンに貼り付けるグラフィックを指定すると
ポリゴンが表示されないという状況に陥っており、
本家DXライブラリの掲示板の方で質問させて頂いています。
Justyさんの方法を実装できるのは少し先になりそうです。
お教えいただきありがとうございました。
ご返信、誠にありがとうございます。
ただいま、JustyさんのDrawPolygonを使った方法を試そうとしております。
しかしなぜか、ポリゴンに貼り付けるグラフィックを指定すると
ポリゴンが表示されないという状況に陥っており、
本家DXライブラリの掲示板の方で質問させて頂いています。
Justyさんの方法を実装できるのは少し先になりそうです。
お教えいただきありがとうございました。