重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

次のようなあみだくじをコマンドライン上に表示させるプログラムを作成せよ。なお、横線の引き方は通常のあみだくじに従う。また、横線およびあたりについては乱数
を使って実行ごとに変わることとする。


| | | |---|
| |---| | |
|---| | | |
| | | |---|
| | | |---|
| | |---| |
|---| | | |
| | |---| |
| | |---| |
|---| | | |
!!!
当たりのところは!!!です。解説とソースをよろしくお願いします。

A 回答 (2件)

$ ./hoge


| |---| | |
|---| | | |
| | | |---|
|---| | | |
| | |---| |
|---| | | |
| | | |---|
| | | |---|
| | | |---|
| | | |---|
!!

$ cat hoge.c
#include <stdio.h>

void ladder(int pos)
{
  int i;
  for(i=0; i<6; i++){
    if(i == pos){
      printf("---");
    }
    else if(i+1 == pos){
      printf("|");
    }
    else{
      printf("| ");
    }
  }
  printf("\n");
}

int main(int argc, const char *argv[])
{
  srand(time(NULL));
  int i;
  for(i=0; i<10; i++)
    ladder(rand()%4+1);
  int goal = rand()%6;
  for(i=0; i<goal; i++)
    printf(" ");
  printf("!!\n");
  return 0;
}

かならず線を一本またいでるみたいですけど、これが「引き方は通常のあみだくじに従う」に
合致しているのでしょうか?
先生に聞いてみて下さい。
    • good
    • 0

課題の答えを書く訳にはいかないので、ヒント程度とさせて下さい。




「表示させるプログラムを作成」なので、実際に動かす必要は無いと取れます。
簡単に考えましょう。

肝心のあみだくじについて、
縦線は5本、その縦線のうち隣合う2本の縦線の間に横線が一行毎に1個入っています。
一番左の縦線の左、または一番右の縦線の右には横線が入らない事から、乱数は何通り有れば良いかは分かりますね。

上記を10回繰り返した後に、次はゴールを書く。
ゴールの!!!の表示位置については、全角スペースを前に入れることで右にずらす事が出来ますね。


ってただ読んだだけですが、これをこの順でプログラムにすれば良いんじゃないでしょうか?



どうでもいい話ですが、
「コマンドラインでやる以上、縦線を全角で!を半角で表示させたとしても!が一個はみ出るので、美しくないです!」
って先生に付き返してみて下さい・x・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!