CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C言語でFizzBuzz

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

C言語でFizzBuzzしてみた

FizzBuzzとは、数字を順番に言う中で、
3の倍数の時はFizzと、5の倍数はBuzzと言い換える遊びである。
ちなみに、3と5の倍数の場合は FizzBuzz。
で、ためらったら負け。
飲み会やドライブでちょっと楽しむようなゲームらしい。(参考:Wikipedia)

また、FizzBuzzのプログラムを書かせてみると結構書けない人多いという
いわゆるFizzBuzz問題というのが有名。

いまさらそんな~~と思ってたけど、
やってみると、意外と簡単だとは思えなかった。そんな自分が残念だ(汗)

まず、心を空にしてコードを書く。

#include <stdio.h>
void main(){
  int i;
  for(i=1;i<100;i++){
    if(i%15==0){
      printf("FizzBuzz");
    }else if(i%3==0){
      printf("Fizz");
    }else if(i%5==0){
      printf("Buzz");
    }else{
      printf("%d",i);
    }
    printf("\n");
  }
}

まぁこれで動くといえば動くんだけど、
これはちょっといただけないコードだ。
だって、3と5の最小公倍数なんてゲームのルールに出てこなかったし。

なので、ルールが分かるようなコードを目指してみる。
で、できたのがこれ。

#include <stdio.h>
void main(){
  for(int i=1;i<100;i++){
    if(printf((i%3==0)?"Fizz":"")+
       printf((i%5==0)?"Buzz":"")==0){
       printf("%d",i);
    }   
    printf("\n");
  }
}

FizzともBuzzとも言わなかったら数字を言う。
ルールを完結に表現したのは良かったかなと思ったけど、
こういう書き方は受け付けない人がいるから良いコードとは言い難し。

で、もっとうまく書こうとしてみたけど、
これ以上、満足のいくコードにはたどり着けず。
残念。

スポンサーサイト


★☆★コメント★☆★

コメントの投稿

Name
Subject
Mail
URI
Comment
Pass
Secret 管理者にだけ表示を許可する

トラックバック

http://iyukki.blog56.fc2.com/tb.php/148-d16127e3

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。