質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

10回答

10599閲覧

1から100の値を出力する。 ただし、値が3の倍数ならFizz、5の倍数ならBuzz、 3と5の公倍数ならFizzBuzzを出力する。

carnage0216

総合スコア194

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

2グッド

3クリップ

投稿2019/08/23 18:02

編集2019/08/23 19:31

ある方を通して基礎力を付けるために基礎勉強を行っています。

問題は以下の通りです。
1から100の値を出力する。
ただし、値が3の倍数ならFizz、5の倍数ならBuzz、
3と5の公倍数ならFizzBuzzを出力する。

以下は今現在での私のプログラムです。

#include <stdio.h> int main(void) { for (int i = 0; i <= 100; i++) { if (i % 3 == 0) { // 条件はi % 3 == 0 を満たしたときに行う処理を書く printf("FIZZ"); } else if (i % 5 == 0) { // 条件はi % 3 == 0 を満たさずにi % 5 == 0 を満たすときに行う処理を書く printf("BIZZ"); } if (i % 3 == 0 && i % 5 == 0) { //条件はi % 3 == 0 かつi % 5 == 0 を満たすときに行う処理を書く printf("FIZZBIZZ"); } printf("\n");//それ以外の条件に当てはまらない数字はそのまま書く } return 0; }

答えを教えて頂きたいのですはなく、アドバイスを頂きたいです。
構文が間違っているなどでもいいので何が間違っているのか詳しく教えてほしいです。

このプログラムの出力です。

FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ FIZZ FIZZFIZZBIZZ FIZZ BIZZ FIZZ FIZZ BIZZ

プログラムを編集させて頂きました。

以下のように編集しましたが、うまく結果がでません。

#include <stdio.h> int main(void) { for (int i = 0; i <= 100; i++) { if (i % 3 == 0 && i % 5 == 0) { //条件はi % 3 == 0 かつi % 5 == 0 を満たすときに行う処理を書く printf("FIZZBIZZ\n"); } else if (i % 3 == 0) { // 条件はi % 3 == 0 を満たしたときに行う処理を書く printf("FIZZ\n"); } else if (i % 5 == 0) { // 条件はi % 3 == 0 を満たさずにi % 5 == 0 を満たすときに行う処理を書く printf("BIZZ\n"); } printf("%d\n");//それ以外の条件に当てはまらない数字はそのまま書く } return 0; }
bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/24 03:17

アドバイスを求めてもそのアドバイスを理解しない認識しないやらないといったこと、やるなといったことを何度もやる そんな人にあなただったらアドバイスをしたいと思いますか? 絶対的な向き不向きがハッキリしているので別の道を目指すべきです。 やりたいこと が 本当にやれる人ってそう多くないです。これまでの流れを見ていても自分でも感じるところはないですか?
carnage0216

2019/08/24 04:02

不向きってのは一番自分がわかっています。 ただ、アドバイスをうまく理解できないことは確かに私に問題があり、おっしゃることはまっとうです。 ですが、あなたにとやかく言われたくはないです。 そんな親切に言ってもらわなくてもぼろ雑巾になってもう無理だと思ったらとっとと消えます。
m.ts10806

2019/08/24 04:10 編集

(今もなお続いている大量のマルチポストを除いて)teratailだけで120も質問しておいてこの状態ではもはやどんなアドバイスも無意味と思います。根拠なくって今までの質問が全部根拠です。自身が不向きと言うのは口だけで一切向き合っている様子はないですよ。 別人ですか?と聞きたくなるくらい。既にボロ雑巾の状態はとうの昔に過ぎています。自身で認めていないだけです。不向きって言っているのに諦めてないのがその証拠ですね。
carnage0216

2019/08/24 04:19 編集

あなたの仰ることは正しいです。ですが、どうか放っておいて下さい。 あなたが何も言わなくても私が頑固で不向きで誰からも相手にされない事は明白です。 これ以上は本当にやめて下さい。 お願いします。
m.ts10806

2019/08/24 04:22

誰からも相手されないの分かってたら投稿しないでください。 容量の無駄なので。マルチポストもしないでください。そのサイトの容量も見る人の時間も奪うので。勝手に消えるつもりなら一人で勝手に悩んでください。自身で宣言して自身で破るって最低です。 ちゃんとアドバイスを得たいならルールやマナーは遵守してください。
carnage0216

2019/08/24 04:24

すいません。 消えたいにも、自分に甘えてしまうのです。 出来れば、みなさんに通報されて力づくで消えたいです。 本当にすいません。
m.ts10806

2019/08/24 04:26

退会は自分の手でできるので、そんなに消えたいなら自ら退会してください。 他人の手を煩わせて何がしたいんでしょう。
carnage0216

2019/08/24 04:30

あ、退会できたのか! お手数お掛けしました。 ではでは。
m.ts10806

2019/08/24 04:32

願わくば他のサイトにも残らないように。こちらにも戻らないように。 名前を変えたところですぐに誰かにバレます。
can110

2019/08/24 04:33

https://teratail.com/help#posted-otherservice やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
carnage0216

2019/08/24 04:39

m.ts10806さんはルールを守っているとはいえ言い方がきついですよ。もはや無礼にすら思えてくる。 死体蹴りも程々に。 まぁ、今更何を言っても仕方ないですが。
m.ts10806

2019/08/24 04:41

これくらいできついではやっていける世界ではないので(2回目)
m.ts10806

2019/08/24 04:46 編集

問題は優しく言っても厳しく言っても口だけの反応しかしないところなので。マルチポストして”しまった”ときの対応を教えても「わかりましたやります」だけなのは目に見えてる。今回ですら対応される気配もない(解決済みにしてしまってるし自己満足でしかない) プログラミング以前、コミュニケーション以前の問題です。それで私に無礼と言うのは間違ってませんかね。 なら、言いたいようにポイントだけ言うまで。 言いたいところは言ったし、別に通じようとどうなろうと私の人生には何の影響もないので、これ以上は何も言いません。自身で察してください。
can110

2019/08/24 04:45

https://teratail.com/help#posted-otherservice やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。(2回目)
m.ts10806

2019/08/24 04:47

can110さん 3回目ですね。通知切ってるか来てもスルー決め込んでるんでしょう。
carnage0216

2019/08/24 04:52 編集

ちゃんと見ています。 ですが、あなたは言葉の重さを知るべきだ。 こんな炎上ごっこして何が楽しんだか。相手をしてもいいですが、皆様のご迷惑になるのでスルーしますね。ごめんなさい。
can110

2019/08/24 04:55

https://teratail.com/help#posted-otherservice やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。 上記、繰り返しになりますが、対応するまで依頼する予定です。 いつまでに実行できるのかを回答ください(できる限り速やかに)。
carnage0216

2019/08/24 05:00

あの、申し訳ないのですが、この質問はマルチポストしていません。 なので何度送られてきても何も出来ません。 本当です。
carnage0216

2019/08/24 05:02

もし、わたしが嘘を言っているならば、そのサイトを持ってきてください。本当にマルチポストはしていません。
can110

2019/08/24 05:02

マルチポストしている質問にて対応ください。 ちなみにどの質問でしょうか?
carnage0216

2019/08/24 05:07

以前にこちらのサイトでhttps://dixq.net/forum/viewtopic.php?f=3&t=20734&p=154128#p154128とhttps://teratail.com/questions/207686でマルチポストしました。 それ以外はありません。
m.ts10806

2019/08/24 05:11 編集

スルーされると決めたようですが聞き捨てなりませんね。 >carnage0216 2019/08/24 13:22 仰る通りです。 私が間違っていました。 マルチポストも本当にすいません。 つい30分ほど前の発言は何でしょうか? 私が指摘した「マルチポストをしないと自身でいったのにやっている」の「自身でいった」のは1つ前の質問です。 https://teratail.com/questions/207686#reply-306682 それとも「マルチポストをしないと言ったのではない」とでも言い始めるのでしょうか。 いずれにしても整合性がとれませんね。 ・マルチポストをしないと言った → 私は「以後も続けているようで」と言っているので今回の質問しか該当がない。それで謝っておいてなぜ「この質問はしていない」と言うのか ・単に反応が遅れたことを「今後二度と遅れません」と言った → 今回の質問でマルチポストを指摘されて謝っておいてなぜ「この質問はしていない」と言うのか
can110

2019/08/24 05:09

では当該質問にて 質問内容にマルチポストをする(した)理由を書いてください。 また、解決した際には必ずteratail及びすべての投稿に解決した旨と、「どのように解決したか」を記載してください。
carnage0216

2019/08/24 05:49

ゲームの9マスの座標のマルチポストは書きました。 これ以外にはございません。
can110

2019/08/24 05:50

「すべての投稿に」 解決した旨と 「どのように解決したか」を記載してください。
carnage0216

2019/08/24 05:52

え、マルチポストをしていない、全ての回答に答えて頂いた回答者様の回答の意図を書くのですか?
can110

2019/08/24 05:55

マルチポストをした質問の。
carnage0216

2019/08/24 05:56

あ、ごめんなさい。 では、書きます。
carnage0216

2019/08/24 07:28

m.ts10806さん、少し感情的になってしまいすいません。 質問の仕方と基礎をもう一度勉強し直します。 その時はどうかよろしくお願いいたします。 どうしても完成させたいものがあるので、それまでは諦めきれません。 では、失礼します。
carnage0216

2019/08/24 11:02

こちらについては、解決後に個人で質問したものですのでマルチポストではないと考えています。 なぜそのように実装できても動くのかを自分なりに作った後で疑問に感じ、質問しました。
guest

回答10

0

ベストアンサー

欲しいのは答えではなくてアドバイスだということなので…

なんというか,コードを用意することに急ぎすぎているような印象を受けます.

問題を達成するコードを書くには,

【どうすればそれを達成できるか?という手続きを最初から最後まで細部まで具体的に決める必要がある】

わけですが,コーディングに入る前にそれがしっかりとできていますか?
頭の中だけでできない場合には,紙上でもPC上でも何でも良いので,全部書き(描き)出すとよいです.
(よほど簡単な問題でもない限り,頭の中で完結するのは難しいです.
問題がちょっと複雑だったりすると,頭で考えてるだけだとすぐに漏れが生じたり間違ったり等するので.)

書き(描き)出す形態は,**何度読んでも(忘れたころに見ても)全く同じ意味に解釈できるものであれば,**フローチャートでも日本語文章でも何でも構わないです.
とにかくその書いた(描いた)ものをしっかりと何度もチェックして,その手続きに従えば全てのパターンを網羅して妥当に処理できるのかどうかを確認します.
(自分がコンピュータになったつもりで,何の忖度もせずに,そこに書かれている手続きを忠実に最初から最後まで紙とペンを使ってやってみると良いです.
「入力が3だったら…→ここの分岐でこっちにいくから…→お,ちゃんとFizzと表示することになってるな,じゃあ入力が4の場合はどうかな?→…」 とか.)

そうして**「これでいける」と確信が持てる手続き**を生み出すことができたら,コーディングです.
用意した手続きを忠実に再現するコードを書きましょう.

プログラムとして動作させるために必要な物はコードですが,重要なのはそれが実現する手続き側です.

投稿2019/08/25 03:03

fana

総合スコア11632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/25 04:31

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

2019/08/25 05:06

あえて苦言を申し上げるとすれば,今回のあなたの質問の良くないところは, うまく結果が出ない原因が,「手続きのコード化に失敗している」なのか,それとも,「そもそも妥当な手続きが見えていないから」なのか? が読み手からは全く判断が付かないことです. 漠然としていて話の範囲が絞れていない.すると,当然ながら応答(回答やコメント)の内容も広い範囲に散らばりやすい. そうなれば,(このような)いらない話への対応もいちいち必要になりますし,わずらわしいでしょう. あなたが本当にしたい話の範囲だけに議論を集中させたいならば,最初から話の範囲が明確に限定された質問文を投下する必要がある. そうするためには,質問するよりも前に,ある程度まで問題点の絞込みを自身で行わねばならない. そのステップにもうすこし労力を割いてみてはどうでしょう.
carnage0216

2019/08/25 07:19

本当にありがとうございます。 おっしゃる通り、もっと私自身が理解をしてから問題に対して質問すべきでした。 本当にありがとうございます。 fana様のような方がいて下さり、質問の仕方についても勉強になります。
guest

0

(散々回答がついているので、今更感がありますが…)

基礎力を付けるために基礎勉強を行っています

基礎力をつけるためには「コピペをしない」とか「人のソースから作らない」とか、そういう話よりももっと大切なポイントがあります。

まずは書いたコードが**"どのように動いているか"説明すること**です。
コピペしたのであればコピペ先の(他人の)コードを読んで、説明してください。

説明ができるのであれば、そのプログラムに多少の機能追加・変更を求められても即座に対応できるはずです。自力で作ったと仰るのであれば、まずはこのレベルを目指してください。
(ただ、それでも「自分で作った」は表現が良くないと思います。仕組みや構造については結局人から教わっている訳ですから)

今のcarnage0216さんは**人からもらった部品だけを組み合わせて動いているロボットを「自分が作った」**と言っているような状況です。ですが、自分で作ったのにその部品の構造や仕組みを知らないのは、本当に自分で作ったと言えるのでしょうか?

その部品の構造や仕組みを知っている、自分が作った、と言うのであれば、応用問題を提示しますからご自身で解いてみてください。この問題はifforwhileなどを使いこなせれば必ず解くことができます。

問題

1から100の値を出力する。 ただし、値が3の倍数なら余りが出るまで3で割り続け、余りが出ずに割れた回数だけ「Fizz」を、5の倍数なら余りが出るまで5で割り続け、余りが出ずに割れた回数だけ「Buzz」を値の代わりに出力する。
また、値が3の倍数かつ5の倍数なら上記ルールに従い「Fizz」を出力した後に「Buzz」を出力する。

output:

1 2 Fizz 4 Buzz Fizz 7 8 FizzFizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 FizzFizz 19 Buzz Fizz 22 23 Fizz BuzzBuzz 26 FizzFizzFizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz FizzFizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzFizzBuzz 46 47 Fizz 49 BuzzBuzz Fizz 52 53 FizzFizzFizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 FizzFizz 64 Buzz Fizz 67 68 Fizz Buzz 71 FizzFizz 73 74 FizzBuzzBuzz 76 77 Fizz 79 Buzz FizzFizzFizzFizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzFizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 FizzFizz BuzzBuzz

投稿2019/08/25 07:58

編集2019/08/26 09:59
BluOxy

総合スコア2663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/25 08:01

わかりました。 問題を解かせて頂きます。 ですが、今外出中でして、手元にpcは無いですが、今日中には解かせて頂きます。 どうかお待ちください。 もし間違いがある場合はどうかこの私に正しいやり方を教えて頂けるとありがたいです。
can110

2019/08/25 09:00

横レス失礼します。解く前にいくつかアドバイスを。 まずは手作業で以下のように入力、理屈(ホニャララ部分)、出力結果を書き出してみましょう。 - 1はホニャララだから「1」と出力。 : 9はホニャララだから「FizzFizz」と出力。 : 100はホニャララだから「BuzzBuzz」と出力。 - これができないと問題を解くことはできません。 これができてから実際にコードを書くことができるわけですが、 提出する前に必ず答えとあっているか確認し、間違った結果を出す解答は提出しないようにしましょう。無意味なので。 あと最後に。この問題は他人聞かずに「自力」で解きましょう。
carnage0216

2019/08/25 12:05 編集

#include <stdio.h> int main() { int counter = 0; for (int i = 1; i <= 100; i++) { if (i % 3 == 0) { //条件はi % 3== 0より3で割る。 int n = i / 3;//%を/に変えることで割った回数を求めた。以下に関しても同じ for (int n = 0; n < i / 3; n++) { printf("Fizz"); } } else if (i % 5 == 0) { int t = i / 5; for (int t = 0; t < i / 5; t++) { printf("Buzz"); } } else { printf("%d\n",i); } } return 0; } という部分まで行けました。 説明しますと、私は3で割った際の商をFizzを表す分の回数として使っています。Buzzに関しても同じ発想で行きました。改行が若干わからなくて見にくくなっていますが、他に色々ありこの辺でということにしました。 少しズレてしまいましたが、少しでも私が書いたことを信じて頂けると嬉しいです。 では失礼します。
hayataka2049

2019/08/25 15:10

この質問のやり取りを昨日くらいまで見てて、コメントする気はなかったんですが上のコメント見てキレました。 ・can110さんの親切なアドバイスを無視するのはどういう神経してるの ・「動かなくても笑顔で納品」みたいな真似やめよう。できないならできないと言おう (それか時間かければなんとかなるなら時間かけてやるというオプションもある)
BluOxy

2019/08/27 02:34 編集

色々言いたいことはありますが… > 少しズレてしまいましたが、少しでも私が書いたことを信じて頂けると嬉しいです。 主旨が変わっています。あなたは「基礎力を付ける」ためにコードを書いているのでしょう。 この際、あなたが自分で書こうが人のコーディングからアイデアを得ようがあまり関係ありません。 あなた自身の基礎力が身についたことをあなたが確認するために私が応用問題を出しているのです。 ですから、正しく結果が出せていないコードを掲示するのは、例え自分で書いていようとも基礎力がついていないということになります。 can110さんのアドバイスを元に「必ず答えとあっているか確認し、間違った結果を出す解答は提出しないよう」、また私の提示したoutputと同一であることを確認して解いてください。
episteme

2019/08/26 01:08

3で割り切れる回数 って何? テキトーな問題に正しく答えるのは無理ちゃう?
BluOxy

2019/08/26 01:11

値が3の倍数なら3で割り切れる回数だけ「Fizz」を値の代わりに出力する、です。 9なら3で2回割れます。その場合はFizzFizzです。 分かりにくいでしょうか。その場合は文章を訂正いたします。
BluOxy

2019/08/26 01:16 編集

商が小数点になりうる3/2=1.5のような循環小数や無理数にならないものも「割り切れる」と解釈される可能性があるので、その部分は考慮していませんでした。
Zuishin

2019/08/26 01:27

出力例があるので、あいまいさは無いように思います。ループの中でループを使ういい問題ですね。
BluOxy

2019/09/17 02:26 編集

私が考えた問題ではありません。ただ、問題文が載せられていないのでそれは自分で書きました。 詳しくは検索されてしまうので、これ以上は控えます。
fana

2019/08/26 01:49

> 9なら3で2回割れます。その場合はFizzFizzです。 なるほど,馬鹿なので話がわからん…… 3の倍数を3で割ったら余りは常に0なんだから,どうやっても1回しか割れない……のではないのか…? 余りが出ない場合は商をまた3で割るという話?(→でもそれだと30のときにFizzが1回しか出ないのと合わないな)
Zuishin

2019/08/26 01:57 編集

商を割るという話ですね。 要するに素因数分解して 3 と 5 を Fizz と Buzz に変換し、他の因数は無視、ただし 3 でも 5 でも割り切れない場合は元の数を書くという問題です。 30 = 2 × 3 × 5 なので、3 と 5 が一回ずつ出ており、FizzBuzz です。
fana

2019/08/26 02:29

解説感謝です. なるほど,そういう話ですか… 「余りが出るまで(商を)割り続けろ」と言われたら,12をFizzFizzとか捉えてしまうなぁ… (12を3で割ると商4余り0 → 余りが0なので商の4をさらに3で割る → 商1余り1 → 余りが出たので終了,割った回数は2回)
BluOxy

2019/08/26 02:45 編集

> Zuishinさん 解説させてしまってすみません。ありがとうございます。 > fanaさん 「余りが出るまで3で割り続けて、"余りが出ずに"割れた回数だけ「Fizz」を出力する」ということを伝えたかったのですが、現状の文章では確かにそう解釈できますね。 "余りが出ずに"という文言も追加しますが、他にも誤解を招く表現があれば訂正します。
fana

2019/08/26 02:54

他のコメントに書いた「曖昧さを取り除いてから取り組もう」を図らずも実践w (取り組むのは私じゃないけど)
BluOxy

2019/08/26 02:58

問題に曖昧さがあったのをあまり自覚していなかったので、頂いたご指摘はかなり助かりました。 ありがとうございます。
carnage0216

2019/08/26 05:54 編集

出来ませんでした。 精進します。
fana

2019/08/26 06:07

んー…まぁ,ノーマルFizzBuzzの次がこの問題というのは,階段1段飛ばしみたいな感はある…かも? そういう場合には,自分で中間地点みたいなのを設けるといいですね. 一旦Buzzの話は忘れてFizz側だけの問題にしてやってみるとか.
BluOxy

2019/08/26 06:25 編集

出力される結果のどの部分がノーマルFizzBuzzと違うのか差異を見つけることも有効だと思います。 その差異を埋めるようコードを修正していけば良いので。 また、必ずしもこの問題を解く必要はありません。 大切なのは、carnage0216さんが解けないと気付いたときに「なぜ解けなかったか」を考えることです。 C++の構文が分からなければC++のリファレンスを読むこと、論理が組み立てられなければその方法を学ぶことを次に実践すれば良いですから。
think49

2019/08/26 09:45

出力順序の定義がないので、順不同で正解になりますね…。 45 ->"FizzBuzzFizz" or "FizzFizzBuzz" or "BuzzFizzFizz" 75->"BuzzFizzBuzz" or "FizzBuzzBuzz" or "BuzzBuzzFizz"
BluOxy

2019/08/26 09:59

確かに私の文章を見る限りではそう捉えられますね。 正直順不同でも良いとは思いますが、ここで直さないのも統一感がないので1文追加いたします。
fana

2019/08/27 02:22

値valに対して必要な個数だけFizzを出力してbool型戻り値で1つ以上のFizzを出力したか否かをを返す関数(と同Buzz側の関数)があるとき,呼ぶ側を1行でまとめて書こうとしたら if( !(OutputFizzs(val) | OutputBuzzs(val)) ){ valを出力; } みたくなってbitwise orがバグっぽい見た目でキモイ…
kazuma-s

2019/08/27 05:29

for (int i = 1; i <= 100; i++) {     int n = i, k = 0;     while (n % 3 == 0) n /= 3, k = printf("Fizz");     while (n % 5 == 0) n /= 5, k = printf("Buzz");     printf(k ? "\n" : "%d\n", i);   } ---- この書き方はキモイかなあ?
episteme

2019/08/27 05:39

7割方 頭の体操 になってるかとwww
BluOxy

2019/08/27 05:45

この際書いてしまいますが、出題元はとあるサイトのコードゴルフですね。どうせ答えが書いてある訳でもないので貼ります。今も提出できるので遊んでみると良いかもしれません。 http://golf.shinh.org/p.rb?FizzFizz
m.ts10806

2019/08/29 05:18

>http://golf.shinh.org/p.rb?FizzFizz これ面白いですね。より最小により最速に 各言語のパフォーマンスも見れて参考になります。0.0001ってどういう世界なんだろ。
guest

0

ぱっと思いつくままに。コードの動きは見ていません。

  • インデントを直しましょう。

もし「私の環境では正しくインデントされているのですが~」というのであれば、投稿する前にプレビューしましょう。

  • どんな意図で// Aは満たさないがBを満たしたときに行う処理を書くというコメントを書いたのか自問してみましょう。答えが見つからなければコメント自体を消しましょう。
  • 動作とコメントが合っているかを確認しましょう。合っていないコメントは消しましょう。
  • 実行結果が正しいかをテストしましょう。意図通りの結果が出ているかはご自身で判断しましょう。
  • この質問をあなた以外の他人が投稿したと仮定して、それに対する回答(アドバイス)を考えてみましょう。

投稿2019/08/23 18:18

編集2019/08/23 18:54
can110

総合スコア38234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

else if (i % 5 == 0) {
else が必要か考えてみては?
else があると、3の倍数の時は5の倍数のチェックは省略されてしまいますよ。

日本語の問題文を読み直して、素直にプログラミングしましょう!

値が3の倍数ならFizz、5の倍数ならBuzz、 3と5の公倍数ならFizzBuzzを出力する。

値が3の倍数ならFizz、5の倍数ならBuzz、 3と5の公倍数なら
3の倍数のFizz と 5の倍数のBuzz を続けて FizzBuzz を出力する

投稿2019/08/24 22:50

usa3usa

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/25 02:11

わざわざ回答してくださりありがとうございます。
guest

0

答えを教えて頂きたいのですはなく、アドバイスを頂きたいです。

構文が間違っているなどでもいいので何が間違っているのか詳しく教えてほしいです。

アドバイスですが、問題文に、
Fizz や Buzz を出力するように書いてあるのに
FIZZ や BIZZ を出力していて、それをおかしいと思わないようでは、
プログラムを作ることはできません。

ここからは私の趣味のプログラムです。
割り算を使わないやり方で書いてみました。

C

1#include <stdio.h> 2 3int main(void) 4{ 5 for (int i = 1, f = 1, b = 1; i <= 100; i++, f++, b++) 6 if (f == 3 && b == 5) puts("FizzBuzz"), f = b = 0; 7 else if (f == 3) puts("Fizz"), f = 0; 8 else if (b == 5) puts("Buzz"), b = 0; 9 else printf("%d\n", i); 10}

投稿2019/08/24 03:57

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/24 04:03

アドバイスありがとうございます。 また、プログラムもありがとうございます
carnage0216

2019/08/24 05:08

あの、どのように考えて載せましたプログラムを作り上げたのですか? 基礎能力を得るのにどのような本やサイトで勉強なさったのでしょうか。
guest

0

参考情報

  • FizzBuzzのcodegolfを世界一分かりやすく解説!#c言語

https://qiita.com/smicle/items/cf48853177e5ffdc574b

投稿2019/08/23 22:10

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/24 01:58

いつもどうもありがとうございます! わざわざわかりやすいサイトを下さりありがとうございます。 あの、できれば同じくらいわかりやすく素数を求めるプログラムの載ったサイトがあれば是非教えて下さい。
guest

0

アドバイス

1から100の値を出力する。 ただし、値が3の倍数ならFizz、5の倍数ならBuzz、 3と5の公倍数ならFizzBuzzを出力する。

BIZZ FIZZ FIZZFIZZBIZZ

要件を一つも満たしてませんよ^^;
出力のサンプルとしては以下が想定されます。

1 2 Fizz 4 Buzz Fizz 7 …

投稿2019/08/23 21:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/23 21:43

すいません、ありがとうございます。
fana

2019/08/25 03:43

この問題文, 3 Fizz のように出力すべきようにも読めてしまうのは私だけでしょうか.
yominet

2019/08/25 10:24

「***を『代わりに』出力する」と書かれてないですね。 仕様書やら技術文書の場合は、「よくあるアレだろう」みたいな 思い込みをしないよう注意してないと、やらかしそうで怖いです。
退会済みユーザー

退会済みユーザー

2019/08/25 10:36

ごく一般的に考えれば、サンプルの出力が出題者の意図でしょうけど、要件が曖昧なので、わざわざ回りくどい言い回しを使用しています。 ゆるさで言うと、「区切りは改行なの?」ってのも出力の形式としては問題視されてよいかと。 まぁ、出題者しかわからない要件ですし、本論から外れるので、あまり指摘しても意味ないです。
fana

2019/08/26 01:31

今さら「出力仕様を明確にしろー!」とか言い出すつもりはないです. 何となーくですが, ・質問文のコードが「常に値を表示する」側を目指している物の様にも見えなくもなかった ・自己解決側コードでは「代わりに」出力側になっている という揺らぎ(?)のようなものを感じたので……もしその辺が本当に不明瞭なのだとしたら,本件においては,「曖昧さを取り除いてから取り組もう」みたいな姿勢的な(?)話も意味があるかなぁ,とか.
guest

0

#include <stdio.h> int main(void) { for (int i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 5 == 0) { //条件はi % 3 == 0 を満たさずにi % 5 == 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{ printf("%d\n", i); } } return 0; }

説明が下手ですが解説して頂きます。まず全体の真を作るためにif (i % 3 == 0 && i % 5 == 0) {
//条件はi % 3 == 0 を満たさずにi % 5 == 0 を満たすときに行う処理を書く
printf("FizzBuzz\n");
}を作り、その中の15の倍数ではないが3の倍数の真を作ります。そのあとで15の倍数と3の倍数でない5の倍数のみの真を作り、最後に全体の真以外の数字を表示させることで以上のプログラムが作れました。
それにより解決しました。頭が良くないので説明が下手で本当にすいません、ですが、説明した通り、この手順でサイトを見たりしながら自力で作りました。こんな頭なもので何時間もかかりましたが。

投稿2019/08/23 20:47

編集2019/08/24 01:57
carnage0216

総合スコア194

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/23 21:26

回答書きましたが、要件を満たしていません。
carnage0216

2019/08/23 21:43

教えて頂きありがとうございます。
Zuishin

2019/08/24 00:11

> 答えを教えて頂きたいのですはなく、アドバイスを頂きたいです。 この回答は質問の答えになっていません。else の意味がわかっていないので、質問のコードがなぜうまくいかないのか、それはどのようなロジックを表しているのか、この回答のコードはなぜうまくいくのか、それを理解して説明する必要があります。 条件分岐の理解にとぼしく、恐らく人に作ってもらったであろうと思われるコードを載せたのでは、解決しているとは言えません。
Zuishin

2019/08/24 00:14

自分の力でできたのであれば、次の問題も解けるはずです。 条件に追加して、2 の倍数であるときにはさらに「!」を付ける。 例えば 2 の場合は 2! 30 の場合は FizzBuzz!
Zuishin

2019/08/24 00:16

答えをもらっただけだからできないでしょう?
carnage0216

2019/08/24 03:33 編集

本当に考えました。サイトを経由していろんな方のプログラムを見ながらできる限り自分で書いたつもりです。それすらも書いていないに等しいならば僕は一人でコードは書けませんでした。 以下のコードは2の倍数に!を付けるのはわかったのですが、3の倍数のFizzに!が付けられず、一人では置けずエピスさんに助けて貰っています。 仰る通り、一人ではなんにもできない人間です。 答えというかヒントや頼れる人がいないとコードはろくに書けないので、あなたの言っていることは正しいです。 #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; } と書きました。今現在の間違っている部分はありますが、期待にこたえたいと思い できている部分だけでも書かせて頂きます。 ただ、あの昔からそのように攻撃的に絡むのはやめて頂きたいです。僕は出来も悪いし頭も悪いし、無礼なことをしてご迷惑をかけていることは事実ですが、純粋にここで学びたいと思っています。 あんまり絡んでこられると私も何をしていいかわからなくなりパニックになります。 根拠のないことで相手の不快になることは言わない方がいいですよ。私に関してはあなたの根拠のない言葉のせいで過去の嫌なことを思い出すのでほんとやめてください。 どうかご理解して頂ければと思います。お願いいたします。
carnage0216

2019/08/24 02:55 編集

後 気も小さいので、あんまり言わないでください。凹んでしまいます。 後、自己解決に書いたプログラムはサイトを参考に作りましたが、誰かに作ってもらって書いてもらったわけではないので、勘違いで低評価を付けるのはやめてください。 単純に私が気に入らないなら低評価を押すよりも正々堂々ここで話せると私は嬉しいです。
fana

2019/08/24 02:06

回答の文章や,コード内の注釈がいちいち独特の言い回し(?)になっているので,ある要素を正しく理解している(けどもそれを表現する文章が怪しい)のかそれとも勘違いしているのか?を量りかねる. もっと普通に表現できませんか?
carnage0216

2019/08/24 02:09

わかりました。もっと普通に書きます。色々ありがとうございます。
fana

2019/08/24 02:12

例えば,問題の中で「3の倍数なら」とか「5の倍数なら」という表現があるなら, > i % 3 == 0 を満たさずにi % 5 == 0 を満たすとき というのは,「3の倍数でなくて,5の倍数であるとき」と書いたら,より問題との対応がわかりやすい自然な表現になるでしょう. (それはそれとして,このコメントと,(i % 3 == 0 && i % 5 == 0)という条件がかみ合っていないのも問題である.)
m.ts10806

2019/08/24 03:19

>後 気も小さいので、あんまり言わないでください。凹んでしまいます。 これくらいで凹んでてやっていける世界ではないので、早々に諦めてください。お願いします。
fana

2019/08/24 03:48

何というひどい言い方!
carnage0216

2019/08/24 03:58 編集

いえ、あながち間違っていません。言い方は確かにひどいですが、実際本当のことです。 諦めが付いたら勝手に消えます。どうもすいませんでした。でも言い方は不快なので、通報だけさせて頂きます。 また、ああいった根拠もなしに言ってくる人はほんとに不快なのでほんとにやめてほしいです。 そういった方が人を不快にして楽しんでる方がいなければ私もいちいち詰まんないことを言ったりしませんよ。
m.ts10806

2019/08/24 04:17 編集

通報はご勝手にしてもらったらいいのですけど 非推奨行為(主にマルチポスト)を注意されて(ざっと見た感じ自身で「もうしない」と宣言されているようで?)以後も続けているようなので そちらについて「誰にも注意されてないからやっていい」と思っているところは大問題かと。 それに主題、「何が間違っているか教えて」=「答え」ですし。 アドバイス欲しいなら考え方を聞くべきでは?
m.ts10806

2019/08/24 04:23 編集

「自力で作りました」はこれだけ回答もらっておきながら信じる人はいません。「アドバイスをしっかりと受け取りそのまま組みました(ただ完全に理解はできていないため稚拙なコードになっています。今後精進します)」のように表現を変えた方が良いでしょう。
carnage0216

2019/08/24 04:22

仰る通りです。 私が間違っていました。 マルチポストも本当にすいません。 私のことも通報して下さい。 このままご迷惑をおかけできません。 本当に申し訳ありませんでした。 プログラミングがこんなに苦痛で苦しいのは初めてです。 一生物のトラウマになりそうでほんと消えたいです。
can110

2019/08/24 04:32

https://teratail.com/help#posted-otherservice やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
can110

2019/08/24 05:03

> マルチポストも本当にすいません。 この質問にてマルチポストしていると受け取りましたが、間違っていますか?
Zuishin

2019/08/24 05:32 編集

本当はもっと書いたけど削除して一言だけ。そのコメント欄のコード、仕様を満たしていません。FizzBuzz を理解できた人のコードではありません。
can110

2019/08/24 05:32

> マルチポストも本当にすいません。 この質問にてマルチポストしていると受け取りましたが、間違っていますか? 返答ください。
carnage0216

2019/08/24 07:26 編集

この質問にマルチポストはありません。 Zuishinさんへ そうかもしれません。深く理解できていないかもしれません。ただもう少し言い方を変えて頂けると嬉しいです。Zuishinさんには過去にお世話になっているので、是非、いい関係に成れればと思っています。 もう一回基礎を勉強して恥ずかしくないよう、質問の仕方と、基礎を学んできます。 その時はどうかよろしくお願いいたします。
Zuishin

2019/08/24 07:32

FizzBuzz は基礎でなく応用です。ここで使われているループ、条件分岐、論理演算が基礎です。 応用問題の答えを教えてもらっても、できるのはその問題だけで、少し条件が変わっただけでこのようにできなくなります。 逆に基礎を物にしていれば、私の出した問題は数秒で答えられることでしょう。 基礎を学べと何度も言われているのに、頑なに身の程を遥かに超えた質問を量産しているのはなぜでしょう? とりあえず入門書から始めてください。
Zuishin

2019/08/24 07:34

あと、この質問がマルチポストではないというのは説得力が無さ過ぎます。私の出した問題が解けないあなたが自力でこの回答にたどり着けるわけがありません。
Zuishin

2019/08/24 07:36 編集

それと、マルチポストをしてはならないとは誰も言っていないはずです。 マルチポストするなら、ちゃんとルールを守ってマルチポストしてください。
thkana

2019/08/24 09:20

> Zuishinさん 2019/08/24 09:14 > 条件に追加して、2 の倍数であるときにはさらに「!」を付ける。 そのお話はこちらで。 https://oshiete.goo.ne.jp/qa/11263743.html まぁ、マルチポストではないですが。
Zuishin

2019/08/24 09:29

thkana さん、これはもうどうしようもありませんね。あきれました。
thkana

2019/08/24 10:05 編集

それが自力で速攻で出来ないようなら君はわかってないよ、それを自覚すべきでしょ、という話なのに、とにかく回答欄を埋めると自分の問題が解決した気になれるんでしょうか。 で、回答欄は埋まったけどなにか変わったかな? https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12212529672 50以下のときだけ7の倍数に#をつける、とかいくらでもバリエーションは出来るけど。 #完全オフトピですが、マルチポストじゃなくてクロスポストなら...なんてネタ通じる人はどれだけいるのかしら。あ、usage送り?
carnage0216

2019/08/24 11:06 編集

本当に自分で書いたと証明したく、手を貸していただいたことは認めます。 ですが、それ以外は何かを望んで行ったことはございません。 まあ、呆れられても仕方ないですが。
Zuishin

2019/08/24 11:10

自分で書いてないことが証明されただけですね。自分で書けるくらいの力を持っていたら、こんな質問をこっそりしなくていいはずです。
carnage0216

2019/08/24 13:02

最近 やっと力がほんの少しついたんです、ほんの少しだけ。
Zuishin

2019/08/24 13:22

いいえ。自分で書いたはずのコードの意味を質問しているのが自分で書いてない証拠であり、それを書けるだけの実力がない証拠です。
bochan2

2019/08/24 15:29

carnageさんはきちんと自分でコードを書いていると思いますよ
Zuishin

2019/08/24 21:37

その理由は?
carnage0216

2019/08/24 22:54

Zuishinさん、いい加減にして下さい。 わたしに言いたい事を言うのは結構ですが、わたし以外の方に食いかかるのはやめて下さい。わたしのような馬鹿相手にこんなに炎上みたいな事をして恥ずかしくないんですか? 流石に低評価を押された方やあなたには呆れます。 いい加減にしてください。 もうあなたの相手は面倒なのでしません。これ以上無駄な事をやるなら通報します。 話が変わり、bochan2さん、どうもありがとうございます。 こういうつまらない事で炎上させたがる人がいるんです。 bochan2さんの言葉うれしいです。 どうもありがとうございます。
Zuishin

2019/08/24 22:56

理由を聞いているだけなので、「食いかかる」という攻撃的な表現で食いかかるのはやめてください。 で、理由は?
Zuishin

2019/08/24 22:57

それと、carnage2016 さんに言いたいことを言うのはかまわないということは了承しました。bochan2 さんもそれをわきまえ、余計なことを書いて炎上させようとするのは控えてください。
Zuishin

2019/08/24 23:08

先ほどの攻撃的なコメントに対する謝罪は?
Zuishin

2019/08/24 23:25 編集

私はね、他人の作ったプログラムを自分で作ったと言い張るのは、プログラミングをする人が決して行ってはならない、最低限のタブーを侵していると思いますよ。 私も「自由に使ってください」というつもりで自分のコードを少し公開していますが、それを一部に使うのはもちろん構わないけど、「これは自分の作ったものだ」とそのコード自体の著作権を主張する人が現れたら戦います。 あなたはいろんなサイトで別名で聞いているのを寄せ集めてプログラミングと称しているだけじゃないですか。なぜ自分で作ったつもりになってるんですか? 条件が一つ増えただけで FizzBuzz が作れないじゃないですか。別名で他のサイトでこっそり聞いて、複数の回答を得ているにもかかわらず、それでも作れないじゃないですか。どうしてこのレベルで FizzBuzz が組めると主張できるんですか? あなたはその稚拙な嘘で人をだませているつもりでいるんでしょう。そう思われていること自体、人を馬鹿にしています。 あなたは自分が馬鹿だから人から攻撃されていると思っていますか? 冗談じゃない。たいがいにしてください。
carnage0216

2019/08/24 23:29 編集

今回のプログラムは本当に一から作ったんです。 それを信じないで、勝手に思い込みで攻撃してくる貴方に嫌気がさしているんです。 人を騙したというか、過去に情報不足で食い違いはあることは認めます。 ですが、今回は私一人で書きました。もういい加減にしてください。 謝罪はないです。
Zuishin

2019/08/24 23:29

作れるわけがないでしょう。これが作れる力があるなら私のテストに一発合格できるはずです。
Zuishin

2019/08/24 23:30

他人に聞きまくって、ヒントたくさんもらって、それでもできてないので、実力が足りてないことは明らかです。
Zuishin

2019/08/24 23:33

それに、自分で作ったなら、「どうして小さい数から確かめなくていいのか」という質問が出るわけがないじゃないですか。自分で作ったなら、どうしてそのように組んだのか、自分で説明できるはずです。
Zuishin

2019/08/24 23:49

試しにもう一問やってみますか? 2 の倍数または 3 の倍数の時に Fizz 2 の倍数かつ 3 の倍数の時に Buzz 0 で割り切れる時に FizzBuzz その他の時にはその数字 自分の力だけでできますか?
carnage0216

2019/08/25 01:10

作れるというか、サイトを見て、それを参考にして、作っただけです。そういった意味では完全に一からではないです。かつ または の部分はあんまりまだ自信はないですね。 勉強してから取り掛かってみようかな。 じゃあ、あなたは私が今回のプログラムを一人では書けなかったと思っていればいいじゃないですか、一人で書いていても疑問などは生まれるんです。 貴方になんて思われようと別に構いませんよ。 それでは。
Zuishin

2019/08/25 01:16 編集

ほら、他人の作ったコードを意味も分からずコピペしてるだけだから、ほぼ数字を変えただけのこの程度のアレンジもできないでしょう? 最初に言ったように、この質問の回答としては不適切です。
carnage0216

2019/08/25 01:18

はいはい。そうですね。
Zuishin

2019/08/25 01:57

逆切れですか? 自分が悪いことが理解できたなら、普通はそのような反応はできませんが。
thkana

2019/08/25 02:54

話はかわりますが、 質問にある、あなたを指導している「ある方」は、あなたに「誰に聞いてもいいから(代わりの誰かに考えさせてでも)プログラムを完成させる」ことを要求しているのですか? それとも、「自力で(すでにある情報を使って)出来るところまでやって、わからないところがあったら(ある人に)それを報告する」ことを要求しているのですか? 私が(というか多分多くの人が)誰かにソフトウェア開発を教えるとしたら、基本的には後者ですすめると思うのですが。だって、教える相手がどこを理解出来ていないのか、把握しなきゃいけないでしょ。 そこのところ、確認しておいた方がいいように思います。
m.ts10806

2019/08/25 03:12

えーと? >m.ts10806さん、少し感情的になってしまいすいません。 質問の仕方と基礎をもう一度勉強し直します。 その時はどうかよろしくお願いいたします。 どうしても完成させたいものがあるので、それまでは諦めきれません。 では、失礼します。 2019/08/24 16:28 聞きあきた(見ている人みんなの声) 1日も経たずに自ら言ったことを破っていてはそりゃ信用されないわけです。マルチポストの件もそうですね。連日、全てリセットされたかのように息をするように口からでまかせの嘘をつき続けています。 「どうしても完成させたいものがあって諦めきれない」ならZuishinさんの言っていることくらい理解して、これくらいの課題くらいクリアすべきでは? 基礎もないもちろん応用もできないアドバイスを理解できない これで何を作れるんですか? 仕様だけまとめてあとはお金払うから作ってくれって投げるならまだ分かりますけど。 本当にやる気があるなら他人に頼らず自分でなんとかやるものです。 もし頼るようなことが出てきても(他人から見て)9割くらい出来ていて残り1割をなんとか埋めるべく頼ります。そういう人は成長もします。 今回のようにポッと課題を出されてもそれを自らの成長の糧とすべく必死に取り組みます。 頑張ってる頑張ってないのは関係ありません。頑張るのは当たり前。結果がついてこないことも誰でもあるでしょう。 でも言っていることとやっていること、姿勢が異なれば別の話。 「頑張ってる」が全く見えなくなるような反応をし続けているのにまだ気づきませんか? 口だけは誰でも言えるので、口だけじゃないところを見せてください。 私はCもC++も大して知ってるわけではないですけど、ロジック的には読めるので「なぜ理解できてないことを堂々と自分の書いたコードのように載せられるのだろう」と疑問で仕方ありません。 きちんと理解できているのであれば具体的に説明し、できていないのであれば参考先を出典として載せて理解できるまできちんと話し合う(教えをこう)のが通常のやり方です。 それとも自分は通常のやり方は肌が合わない、俺なりのやり方を極めるってことなら1人で勝手にやってください。 自分の現在地を正しく見れない人は何をやっても半人前にすらなれません。 本気でやりたいならZuishinさんに向き合うところからですね。他にはないです。 逆にここまで突っ込んでくれてるのに失礼です。
m.ts10806

2019/08/25 03:21 編集

補足 >これくらい 「完成させたいもの」からすると今回の課題がどれくらいの難易度か 考えてみて。そして今の自分のやり方でを続けて本当に届くものかどうか。
m.ts10806

2019/08/25 03:34

完成させたいものがあって諦めきれないのも嘘と。
m.ts10806

2019/08/25 03:41

それっぽいことを言っておけば構ってくれるからやってると。 舐めてますね。バカにしてますね。 プログラミング関係ないことに執心するのであればteratail使わないでください。 もちろん知恵袋も他の掲示板の「プログラミング」に関するカテゴリ全て。他人の時間を奪っています。使うじゃなく、奪う。 返せる保証もないのに奪う権利はありません。
carnage0216

2019/08/25 04:01

どうぞ、好きに言えばいいです。 嘘かどうかは私が決めます。 あなたはただ炎上させて不幸を楽しみたいだけでしょ? 相手すんのめんどいので消えてください。皆様と私の迷惑です。
m.ts10806

2019/08/25 04:08

はて?あなたは「皆様」を代表できるような内容の対応をしてるんでしょうか? こんな回答で自己解決した時点で自ら炎上を作っていってることすら気づかない? 嘘かどうかは自分がってそりゃ自分で決めてりゃ嘘なんてなかったことにできますよ。 何を言ってるんでしょうか。評価は他人のが決めるものです。自分で決めれるくらいの経験や知識、実績が伴ってから言ってください。 アドバイスを欲しているのに本気のアドバイスをしたら迷惑とか何様ですかね。 そんなそら言考えてる暇があったら基礎でもなんでも勉強しては?人に十割頼ってる人に言われる筋合いはありません。
carnage0216

2019/08/25 04:13

ホントめんどくせーですね。消えてって言ってんのに。 言われたくねーなら消えろでございます。 ホントに迷惑。あなたくらいだよ。こんな些細なことでがめついのは。
m.ts10806

2019/08/25 04:26

退会すると聞いてたもので。 それに些細なことで(1字間違うだけで)動かないのがプログラムなので些細なことをきちんとできない人には無理です。 世界中のひとに迷惑かける前に引いてください。
carnage0216

2019/08/25 04:31

あなたも私やみなさんや宇宙に迷惑をかける前に引いた方が良いでしょう。
m.ts10806

2019/08/25 05:13 編集

まともに言い返したいなら技術力で返してください。 ここはあくまで技術に関するトピックを扱う場です。 私の技術で宇宙に迷惑をかけることはないですよ。私が「世界中のひとに迷惑をかける」というのはあなたが今後作るかもしれないアプリケーションを使うことで、です。 なぜそこで宇宙が?反論になってません。 むしろ私は業務でプログラミングしていてきちんと会社からも顧客からも評価を得ていますし、 teratailでも一応それなりに回答してきてその回答で多少なり問題解決してもらっているので、あなたに比べれば迷惑よりも感謝されることの方が多いのは間違いないと思いますが。 技術的な話をしないのでしたら早々に引かれた方が良いかと。運営に迷惑ですね。技術的な話をしないので。
Zuishin

2019/08/25 06:31

ほら、お客様神様と祭り上げられて、調子に乗って神気取りになってる。
carnage0216

2019/08/25 07:21

なっていません。 ですが、質問者として私に問題があった事は確かです。 ですが、それによりあなたから神気取りとか煽られるのはお門違いに思います。 正直、不快です。
Zuishin

2019/08/25 07:23

自分はいくら暴言を言ってもいいし、ルールも好きなだけ破っていいけど、他の人が自分を不快にさせるのはいけないということでしょう? 神気取りじゃないですか。
carnage0216

2019/08/25 07:29

神様気取りなんてしていません。 最近はこのような煽りや悪意のある低評価が多くてほんと困りますが、相手にしないように心がけます。 最後に 解答、アドバイスをして頂いた方々、本当にありがとうございました。 どうしようもない馬鹿ですが、少しでもプログラミングが上達し、質問の仕方も上達するよう心がけます。 どうかよろしくお願い致します。
m.ts10806

2019/08/25 07:46

この回答への評価は妥当ですよ。 技術的に説明も反論もできないから炎上だ煽りだと身近な文句を使って逃げてるだけ(そして他の質問サイトで変わらない質問をマルチポストしまくっている)。 向き合えてればとっくにプログラミングも質問の仕方も初心者卒業できてます。頑として向き合わないスタンスを貫いているので皆様呆れています。 「自分が悪い」と口ばかりで「俺ができないのはお前らが悪い」と心で思ってる人のやり方です。 学問に王道なし。
Zuishin

2019/08/25 08:24

ルール違反を注意されて「煽りや悪意は相手にしない」というのが神気取りでないと? 自分はあれだけの暴言を吐いたのに? どんだけ偉いんだって話ですが。
episteme

2019/08/25 08:47

えーと...このくらいにしておきません?
Zuishin

2019/08/25 09:09

やめようとするたびに煽り言葉が返ってくるので、続けたいのかと思っていました。 では、あとのおもりはお任せします。
episteme

2019/08/25 09:11

ありがとです。荒れるの望んでるヒトは誰もおらんでしょうし。
guest

0

kazuma-s さんの回答は、割り算を使わない方法でした。

ここでは、割り算をつかない だけでなく、for ループの中身をなるべく短くするようにしてみました。

c

1#include <stdio.h> 2 3#define FIZZ "Fizz\n" 4#define BUZZ "Buzz\n" 5#define FIZZBUZZ "FizzBuzz\n" 6#define NUM_FMT "%d\n" 7 8char * STRS[] = 9 { 10 FIZZBUZZ, // 0 11 NUM_FMT, // 1 12 NUM_FMT, // 2 13 FIZZ, // 3 14 NUM_FMT, // 4 15 BUZZ, // 5 16 FIZZ, // 6 17 NUM_FMT, // 7 18 NUM_FMT, // 8 19 FIZZ, // 9 20 BUZZ, // 10 21 NUM_FMT, // 11 22 FIZZ, // 12 23 NUM_FMT, // 13 24 NUM_FMT, // 14 25 NULL 26 }; 27 28int main(void) { 29 int i; 30 char ** sp; 31 for (i = 1, sp = &STRS[1]; i <= 21; i++, sp++) { 32 if (*sp == NULL) { 33 sp = STRS; 34 } 35 printf(*sp, i); 36 } 37}

投稿2019/08/24 12:53

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/25 10:36

勉強に使わせて頂きます。 どうもありがとうございます。
guest

0

質問者さんの自己解決回答では 1 つの数の処理で % での計算を 2回か 3回 おこなっています。
常に2回の % の計算で済むようにしてみました。
また、コード中に "Fizz" や "Buza" が一回だけ現れるようにもしています。

c

1#include <stdio.h> 2#include <stdbool.h> 3 4int main(void) { 5 for (int i = 1; i <= 100; i++) 6 { 7 bool is_3ed = (i % 3 == 0); 8 bool is_5ed = (i % 5 == 0); 9 10 if(!is_3ed && !is_5ed) { 11 printf("%d", i); 12 } else { 13 if (is_3ed) { 14 printf("Fizz"); 15 } 16 if (is_5ed) { 17 printf("Buzz"); 18 } 19 } 20 printf("\n"); 21 } 22 return 0; 23}

投稿2019/08/24 03:03

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carnage0216

2019/08/24 03:50

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問