• ベストアンサー

市松模様

2つの正の整数を入力すると、それぞれ縦横の数とする”*”の市松模様を出力するプログラム 縦はなんとなくわかるのですが 横の定義の仕方がよくわからないので 教えてください 縦5横6の例 _*_*_* *_*_*_ _*_*_* *_*_*_ _*_*_* _はスペースの意

質問者が選んだベストアンサー

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.4

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)
回答No.5

>私の使っているのでコンパイルしたら >エラーが出てできませんでした 環境とエラーの内容を提示すれば助言できます。 念のため確認します。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++のテキストはお持ちでしょうか。 後々のためにも、応用に入る前にテキスト片手に基礎知識を固めておきましょう。 そうすれば道は必ず開けますよ。

mahiro19
質問者

お礼

私もそう思います(;; わかるようにがんばりたいと思います><b ありがとうございます

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

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"); // 一行分表示したので、改行   } } 判らないところがありましたら、補足してください。

mahiro19
質問者

補足

私の使っているのでコンパイルしたら エラーが出てできませんでした #include <stdio.h> int main() 殻始まる形で作りたいのですが どうすればいいでしょうか?

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

別解。 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)
回答No.1

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は横 いかがでしょうか。

mahiro19
質問者

補足

式の意味を説明していただけるとうれしいです。

関連するQ&A

  • ○△□の模様

    正の整数を入力してその数値の幅だけの正方形をの模様になるように作成する方法(法則性は実行例2を参照、非負の整数が入力された場合は再入力を促す)はどうするのですか? 実行例1 幅:1○ 実行例2 幅:5 ○△□○△ △□○△□ □○△□○ ○△□○△ △□○△□ 実行例3 幅:0 非負の整数を入力してください。 幅:3 ○△□ △□○ □○△

  • C言語 10進数→2進数

    キーボードで入力された1以上の正の整数n(1~15)を2進数(4bit)で出力するプログラムを作りたいんですが、 出力例に書かれている内容、 -出力例- 正の整数:12 整数 12 を2進数表記すると下位bitより 0011 となります。 ---- 上記の下位bit、というのはどういう意味でしょうか? また、この下位bitというものをどうやってプログラム上で 表記すればいいのでしょうか? 教えてください。

  • 公募の写真はなぜ四つ切りが多いのでしょうか

     ふつうデジイチの縦横比は3:2ですよねぇ。  昔のアナログ放送時代の画面や監視カメラとか一部のコンデジは4:3です。  約6:5という縦横比が正方形に近い四つ切りを公募に採用しているところが多いのはなぜでしょうか。  いきさつをご存じの方教えていただけませんか?  縦横比と書くと、縦と横の比。でも横:縦の順で表示する。不思議?海外仕様を導入したらどこかでおかしくなった模様! まぁ順番はどちらでも判るけど。  で、あれっ? 写真のカテゴリはどこっ?  これは独り言でした。

  • 次元の定義として正しいですか?

    様々なサイトにて「次元」の定義見たのですが、そこから僕なりに次元を定義してみました。 以下の定義と具体例は正しいですか? 定義:「独立した変数の個数のことで、その変数の個数によりn次元とよぶ。また、空間の広がりをあらわす一つの指標であり、ある空間内で唯一の場所や物指ししめすために、必要な変数の個数といえる。」 具体例:「縦と横と高さのある物体は、三つの独立した変数(縦、横、高さ)があるから3次元。そして、縦と横と高さという変数にそれぞれ10を代入すると、ある空間内で正六面体を表すことができる」

  • お願いします。

    ・10でわれば7残り、12でわれば3残る整数のうち、9でわれば3残る最小の数は ? です。 ・380個より多く、400個より少ない碁石を4列に並べても、6列に並べても、9列並べても2個あまるとき、碁石は全部で ? 個です。 ・縦3cm、横2cmのタイル70枚で最大の正方形をつくると面積は ? cm2になります。 ・5でわったら1あまり、3でわったら2あまる整数で、3けたの整数は、 ? 個あります。

  • ビジュアルベーシックにおいてのプログラミング

    1、キーボードから入力される正の整数を読み込み、この数より大きい最小の偶数をディスプレイに出力するプログラムを作りたいです。意味は1が入力されたらこれより大きい最小の偶数は2ということですよね?これをどう表現したらいいかわかりません。 2、2つの正の整数n、mを端末から読み込み2つの数の間にある(等しい場合も含む)奇数の和を求めるプログラムを作れ。n、mはどっちが大きいかは不明これに関してはまったく見当がつきません。みなさんアドバイスよろしくお願いいたします。

  • 与えられた正整数が素数なら1を、素数でないなら0を返すプログラム

    与えられた正整数が素数なら1を、素数でないなら0を返す関数isprime()を作り、それを用いて1000以下の素数すべてをprime.txtという名前のファイルに出力するプログラムを作らなくてはなりません>< 学校の課題で与えられたのですが全然わかりません><よかったらわかる方教えていただけないでしょうか?

  • 組み合わせ問題のアルゴリズム

    あらかじめ用意された整数を足して、その合計がある指定された整数と等しくなる組み合わせの数を調べるプログラムを書こうとしているのですが、苦労しています。 具体例がないと伝わりにくいかもしれないので例をあげると、 例えばあらかじめ用意された整数というのが 1・1・2・2・5・8 の4つで、 指定された整数が10である場合は、 8と2 8と1と1 5と2と2と1 という3通りの組み合わせがあるので、3を出力したいというわけです。 今まではもっと単純なアルゴリズムしか考えてこなかったので、こういった組み合わせのような問題が難しく感じられます。 こういう場合、アルゴリズムはどのようなものが考えられるでしょうか。 よろしくお願いします。

  • C++の質問です!!

    正の整数値を読み込んで、その桁数を出力するプログラムの作り方がわかりません;; 教えてください!!

  • 素数

    以前新聞で素数の配列の規則性が見つかっていないという 記事を見つけました。 自分で考えたんですけど縦横に 数字をランダムに決めます。(1×は無し)その四角形にパネルを その数だけ置きます。まず横を2と決め縦を何でも好いのでAと 決めます。そして、その縦に一個だけパネルを増やします。 そこから、こんどは横を3つにしA+1個のパネルを 3っつずつ乗せていきます。この作業を横=縦になるまでやっても ピッタリ当てはまらなかったら。それは素数だと決めてよいので しょうか? しかし、そんなに規則性が見つからないものなのでしょうか?

専門家に質問してみよう