- ベストアンサー
市松模様
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.1 No.3のarukamunです。 皆さんが書かれているのは関数です。 main等から正しく呼び出せば良いのです。 sample.cとした場合 #include <stdio.h> #include <stdlib.h> void ichimatsu(int v,int h) { int i,j ; for (i=0 ;i<v ;i++){ for (j=0 ;j<h ;j++){ if ( (i+j)%2 ){ printf("*"); } else { printf(" "); } } printf("\n"); } } main(int argc,char *argv[]) { if ( argc < 3 ){ printf("usage : sample 縦 横"); } else { ichimatsu(atoi(argv[1]),atoi(argv[2])); } }
その他の回答 (4)
- mrumesuke
- ベストアンサー率45% (254/557)
>私の使っているのでコンパイルしたら >エラーが出てできませんでした 環境とエラーの内容を提示すれば助言できます。 念のため確認します。arukamunさんのコード(私のコードも)はレイアウトの都合上行頭のスペースが全角になっていますが、それをきちんと半角スペースかTABに直してますか? >#include <stdio.h> >int main() >から始まる形で作りたい #include <stdio.h> int main(int argc, char* argv[]) { void ichimatsu(int, int); // プロトタイプ宣言 ichimatsu(10, 20); return 0; } void ichimatsu(int v,int h) { ~(略)~ } 厳しいことを言うようですが、市松模様以前の問題かと思います。 C/C++のテキストはお持ちでしょうか。 後々のためにも、応用に入る前にテキスト片手に基礎知識を固めておきましょう。 そうすれば道は必ず開けますよ。
- arukamun
- ベストアンサー率35% (842/2394)
No.1のarukamunです。 解説します。 void ichimatsu(int v,int h) // 市松模様を書き込む関数 // v 縦の個数 // h 横の個数 { int i,j ; for (i=0 ;i<v ;i++){ // 縦方向のループ for (j=0 ;j<h ;j++){ // 横方向のループ // ここがこの問題の鍵になります。市松模様になるためには、 if ( (i+j)%2 ){ // (縦+横)を2で割った余りが printf("*"); // 1の場合は"*"を表示 } else { printf(" "); // 0の場合は" "を表示 } } printf("\n"); // 一行分表示したので、改行 } } 判らないところがありましたら、補足してください。
補足
私の使っているのでコンパイルしたら エラーが出てできませんでした #include <stdio.h> int main() 殻始まる形で作りたいのですが どうすればいいでしょうか?
- mrumesuke
- ベストアンサー率45% (254/557)
別解。 void ichimatsu(int v,int h) { const char ptn[2][2] = {{'*', ' '}, {' ', '*'}}; int i, j; for (i = 0; i < v; i++) { for (j = 0; j < h; j++) { putchar(ptn[i % 2][j % 2]); } printf("\n"); } } やってることはarukamunさんと同じです。 一つの目的を実現するための手段は一つではないということの参考程度にでもなれば幸いです。
- arukamun
- ベストアンサー率35% (842/2394)
void ichimatsu(int v,int h) { int i,j ; for (i=0 ;i<v ;i++){ for (j=0 ;j<h ;j++){ if ( (i+j)%2 ){ printf("*"); } else { printf(" "); } } printf("\n"); } } vは縦 hは横 いかがでしょうか。
補足
式の意味を説明していただけるとうれしいです。
関連するQ&A
- C言語 10進数→2進数
キーボードで入力された1以上の正の整数n(1~15)を2進数(4bit)で出力するプログラムを作りたいんですが、 出力例に書かれている内容、 -出力例- 正の整数:12 整数 12 を2進数表記すると下位bitより 0011 となります。 ---- 上記の下位bit、というのはどういう意味でしょうか? また、この下位bitというものをどうやってプログラム上で 表記すればいいのでしょうか? 教えてください。
- ベストアンサー
- C・C++・C#
- 公募の写真はなぜ四つ切りが多いのでしょうか
ふつうデジイチの縦横比は3:2ですよねぇ。 昔のアナログ放送時代の画面や監視カメラとか一部のコンデジは4:3です。 約6:5という縦横比が正方形に近い四つ切りを公募に採用しているところが多いのはなぜでしょうか。 いきさつをご存じの方教えていただけませんか? 縦横比と書くと、縦と横の比。でも横:縦の順で表示する。不思議?海外仕様を導入したらどこかでおかしくなった模様! まぁ順番はどちらでも判るけど。 で、あれっ? 写真のカテゴリはどこっ? これは独り言でした。
- ベストアンサー
- その他(趣味・娯楽・エンターテイメント)
- 次元の定義として正しいですか?
様々なサイトにて「次元」の定義見たのですが、そこから僕なりに次元を定義してみました。 以下の定義と具体例は正しいですか? 定義:「独立した変数の個数のことで、その変数の個数によりn次元とよぶ。また、空間の広がりをあらわす一つの指標であり、ある空間内で唯一の場所や物指ししめすために、必要な変数の個数といえる。」 具体例:「縦と横と高さのある物体は、三つの独立した変数(縦、横、高さ)があるから3次元。そして、縦と横と高さという変数にそれぞれ10を代入すると、ある空間内で正六面体を表すことができる」
- ベストアンサー
- 数学・算数
- ビジュアルベーシックにおいてのプログラミング
1、キーボードから入力される正の整数を読み込み、この数より大きい最小の偶数をディスプレイに出力するプログラムを作りたいです。意味は1が入力されたらこれより大きい最小の偶数は2ということですよね?これをどう表現したらいいかわかりません。 2、2つの正の整数n、mを端末から読み込み2つの数の間にある(等しい場合も含む)奇数の和を求めるプログラムを作れ。n、mはどっちが大きいかは不明これに関してはまったく見当がつきません。みなさんアドバイスよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 与えられた正整数が素数なら1を、素数でないなら0を返すプログラム
与えられた正整数が素数なら1を、素数でないなら0を返す関数isprime()を作り、それを用いて1000以下の素数すべてをprime.txtという名前のファイルに出力するプログラムを作らなくてはなりません>< 学校の課題で与えられたのですが全然わかりません><よかったらわかる方教えていただけないでしょうか?
- 締切済み
- C・C++・C#
- 組み合わせ問題のアルゴリズム
あらかじめ用意された整数を足して、その合計がある指定された整数と等しくなる組み合わせの数を調べるプログラムを書こうとしているのですが、苦労しています。 具体例がないと伝わりにくいかもしれないので例をあげると、 例えばあらかじめ用意された整数というのが 1・1・2・2・5・8 の4つで、 指定された整数が10である場合は、 8と2 8と1と1 5と2と2と1 という3通りの組み合わせがあるので、3を出力したいというわけです。 今まではもっと単純なアルゴリズムしか考えてこなかったので、こういった組み合わせのような問題が難しく感じられます。 こういう場合、アルゴリズムはどのようなものが考えられるでしょうか。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
私もそう思います(;; わかるようにがんばりたいと思います><b ありがとうございます