人に聞けない痔の悩み、これでスッキリ >>

#include <stdio.h>
int main(void) {
for (int i = 1; i <= 100; i++)
{

if (i % 30 == 0) {
//条件はi % 30 == 0を満たすときの処理を書く
printf("FizzBuzz!\n");
}
else if (i % 15 == 0) {
// 条件はi % 15 == 0 を満たしたときの処理を書く
printf("FizzBuzz\n");
}
else if (i % 3 == 0) {
// 条件はi % 3 == 0 を満たしたときの処理を書く
printf("Fizz\n");
}
else if (i % 5 == 0) {
// 条件はi % 3 == 0 を満たさずにi % 5 == 0 を満たすときに行う処理を書く

printf("Buzz\n");
}
else if (i % 2 == 0) {
// 条件はi % 2 == 0 を満たしたときに行う処理を書く
printf("%d!\n",i);
}

else {
printf("%d\n", i);
}

}
return 0;
}

2の倍数の時に!が数時につき、
3の倍数でもある数時にはFizzと表示するため、6の倍数ではFizz!としたいのですが、やり方がわかりません。
printf("Fizz\n");を改行させればよいとヒントはあるのですが、わからず困っています。

質問者からの補足コメント

  • tatsu99さん、ちなみに、なぜこのように考えられたのでしょうか。
    アルゴリズムというか、考え方を教えてください!

      補足日時:2019/08/25 16:33
  • Wr5さん、解答ありがとうございます。
    ちなみに、Wr5さんもテラテイルをご利用なさっている方なのでしょうか?
    また、雄姿に関しては、テラテイルで叩かれて凹んで元気が欲しいため、
    なぜ雄姿に見えたのか教えて頂けると元気がでます。
    面倒な奴ですいません。

      補足日時:2019/08/25 16:41
  • tatsu99さん、
    偶数の最後に!をつけるために再びif文を書いていますが、if文を再度書いたのは今までの条件とは別に、今までの条件かつとして考えるために新しくifを使ったと考えて良いでしょうか。
    どうかよろしくお願い致します。

      補足日時:2019/08/27 06:45

A 回答 (8件)

こういうことですか?


#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 100; i++) {

if (i % 15 == 0) {
// 条件はi % 15 == 0 を満たしたときの処理を書く
printf("FizzBuzz");
} else if (i % 3 == 0) {
// 条件はi % 3 == 0 を満たしたときの処理を書く
printf("Fizz");
} else if (i % 5 == 0) {
// 条件はi % 3 == 0 を満たさずにi % 5 == 0 を満たすときに行う処理を書く
printf("Buzz");
} else {
// 上記以外は数字を出力
printf("%d", i);
}
if (i % 2 == 0){
printf("!");
}
printf("\n");

}
return 0;
}
    • good
    • 1
この回答へのお礼

どうもありがとうございます。

お礼日時:2019/08/25 16:32

>偶数の最後に!をつけるために再びif文を書いていますが、if文を再度書いたのは今までの条件とは別に、今までの条件かつとして考えるために新しくifを使ったと考えて良いでしょうか。



はい。その通りです。
    • good
    • 0

No6です。


>tatsu99さん、ちなみに、なぜこのように考えられたのでしょうか。
>アルゴリズムというか、考え方を教えてください!

No6のコードが、望んだ結果になっていますか?
以下、望んだ結果であるという前提で書きます。
出力部分は3部に分けることができます。
①②③とすると
①は、Fizz,Buzz,FizzBuzz,数字 の何れかの出力
②は、!の出力
③は、改行の出力
となっています。
従って
①は、数値の条件により出力するので、提示された通りの条件に従い記述する。
②は、偶数の場合のみ、出力するので、そのように記述する。
③は無条件に出力するので、条件なしで改行のみ出力する。
とすればOKです。
    • good
    • 2
この回答へのお礼

個々に分けて出力していたのですね!
どうもありがとうございます。

お礼日時:2019/08/27 06:39

>問題の原文はどうなっていますか。


>それをそのまま、提示していただけませんでしょうか。

え~っと…
>自分の力でできたのであれば、次の問題も解けるはずです。
>
>条件に追加して、2 の倍数であるときにはさらに「!」を付ける。
>例えば 2 の場合は 2!
>30 の場合は FizzBuzz!
ですかね?
teratailで回答者の一人から出された課題です。
あちらではこの質問のURL貼られていますけど。

知恵袋で回答付きましたから、問題ありませんね。
ID非公開に代わってしまいましたけど。

質問系の掲示板など、複数のところを見ている人も結構多いので…
質問者さんの雄姿を目にしている方もそれなりに居ますよ。
# というわけで、『誰かが回答するだろうから回答しない』という常連さんも…まぁ、居るでしょうね。
# teratailとかでそのような判断をする人が増えたかもしれませんが…そんな雑魚は相手にしなくていいんですよ~。
# みけCATさんも根気よく付き合ってくださるようですし。
    • good
    • 4
この回答へのお礼

ありがとうございます。
励まされました。
雄姿とは、どんな部分が雄姿なのでしょうか。
恥ずかしいところしか見せていないような気はしますが、、。
みけCATさんには、本当に感謝しています。
あの方のような親切で優しい方のいるおかげで勉強になり、助かります。

お礼日時:2019/08/25 08:18

書式文字列を配列でそろえてしまう.



あるいは switch でがんばる.
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2019/08/25 08:12

問題の原文はどうなっていますか。


それをそのまま、提示していただけませんでしょうか。
ソースを見ただけでは、どのような結果になるのが正解なのかが推定できません。
(例えば、値が30の倍数の場合、FizzBuzz!(改行)と記述されていないような気がします。)
    • good
    • 0

>6の倍数ではFizz!としたいのですが、やり方がわかりません。



else if (i % 3 == 0) {
の後のelse をやめたら?
つまり、
else if (i % 5 == 0) {

if (i % 5 == 0) {
にしたらいかが?

else の意味わかってますか?
 3の倍数の場合は、else以降は実行しないという意味ですよ
    • good
    • 2
この回答へのお礼

あれ、elseは実行しないという意味よりは真偽の全体の偽を表すために使っていました。

お礼日時:2019/08/25 16:43

2の倍数の時は必ず"!"が末尾につくのであれば、2の倍数の処理だけ分けてしまえばよい。



15の倍数の処理と5の倍数の時の処理と3の倍数の処理を一連のif~else if~else if~else~で処理、そのあとで2の倍数であるかの判定をして"!"を書き込み、最後に改行を追加する。

if(i%15) ;
else if(i%3) ;
else if(i%5) ;
else ;

if(i%2) ;

print("\n");

てな感じ。(;の前に必要な処理を書く)
30の倍数の判定は不要。
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング