###前提・実現したいこと
整数の組(a,b,c)(1<=a<=100,1<=b<=100,1<=c<=100)において
a^2+b^2=c^2を満たす整数の式を見つけてその組と個数を求める
さらにその中でもa<b<cを満たす組と個数をみつけるプログラムを作りたいです。
###発生している問題・エラーメッセージ
ループを使うということは分かったのですが、C言語を扱ったのが
3日目なのもあり、基本的事項もわからぬままで
そのあとのイメージがまったくつきません。
ヒントだけでもいただけたら幸いなのですが、ドドド初心者にもわかるよう説明してほしいです。よろしくお願いします。
もう一つ、質問したプログラムの類題がありますので
そちらも今回の回答を参考にして作りたいと思います。
可能であれば応用できるように、考え方まで教えていただけるととてもうれしいです
###ソースコード
C言語
1ここにご自身が実行したソースコードを書いてください
###補足情報(言語/FW/ツール等のバージョンなど)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ドドド初心者レベルなら、まずはループのネストですね。
http://www9.plala.or.jp/sgwr-t/c/sec06-6.html
fot (a = 1; a <= 100; a++) { // この中ではaの値が+1されながら100回ループします。 for (b = 1; b <= 100; b++) { // この中ではbの値が+1されながら100回ループします。 // この辺にcのループを作ってみましょう。 } }
投稿2015/12/25 01:59
総合スコア21158
0
ドドド初心者にもいろいろなレベルがあるので実際どういうレベルなのかお聞きしながらになるかと思います。
変数aで1から100までなめるコードは書けますか?
投稿2015/12/25 01:24
総合スコア5568
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/25 02:00
2015/12/25 02:05
2015/12/25 02:14
2015/12/25 02:20
2015/12/25 02:22
2015/12/25 02:40
2015/12/25 03:51
2015/12/25 04:36
2015/12/25 08:41
2015/12/27 09:50
0
簡単のために1<=A<=5,1<=B<=5,1<=C<=5のバリエーションで説明します
全部のパターンを挙げると
A<B<Cなので
A=1
B=2(1,2,3),(1,2,4),(1,2,5)
B=3(1,3,4),(1,3,5)
B=4(1,4,5)
A=2
B=3(2,3,4),(2,3,5)
B=4(2,4,5)
A=3
B=4(3,4,5)
となります
ここで注目したいのは
- Aは1から1つずつ5-2までカウントアップしている
- BはA+1から1つずつ5-1までカウントアップしている
- CはB+1から1つずつ5までカウントアップしている
ループの中にループを書くとこれらのパターンを作ることができます。
全てのパターンを作れたら
あとは条件判定(if文)を使ってA,B,CがA^2+B^2=C^2になるか判定します
A^2+B^2=C^2の場合だけこの時のA,B,Cを表示して個数を数えるカウンターに1を足します
全てのループが終わった後にカウンターで数えた結果を表示すれば出来上がりです。
投稿2015/12/25 02:21
総合スコア985
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんにちは。
力で解くなら問題をそのままC言語へ翻訳できれば解けますね。
まずは言語の文法の勉強と思いますので、力で解いてみましょう。
整数の組(a,b,c)(1<=a<=100,1<=b<=100,1<=c<=100)において
ここがまずループですね。a, b, cについて1~100の各値を発生させるとよいです。
for (aについて1~100) { for (bについて1~100) { for (cについて1~100) { // ここはa, b, cそれぞれについて1~100まで変化させた時の // 全ての組み合わせで実行されます。 } } }
a^2+b^2=c^2を満たす整数の式を見つけてその組と個数を求める
ここはif文と表示文ですね。
if (その条件を満たせばtrueとなる式) { その組の表示 個数Aを+1 }
そして、ループを全部回った後、個数Aを表示。
なお、個数Aはループを回り始める前に用意する必要が有ります。(定義と0で初期化)
さらにその中でもa<b<cを満たす組と個数をみつけるプログラムを作りたいです。
上記if文のthen節の中に更に下記を入れるイメージです。
if (a<b<cとなればtrueとなる式) { その組の表示 個数Bを+1 }
最後にループを全部回った後、個数Bを表示。
なお、個数Bもループを回り始める前に用意する必要が有ります。(定義と0で初期化)
このヒントにてある程度コードを書けるのではないかと期待します。
書けるところまで書いて見て下さい。
そして、コンバイルするとエラーが出ると思います。そのエラーをなくすよう頑張ってみて下さい。
エラーがなくなれば実行できますので、実行してみて下さい。
結果が正しければ問題ないですが、一発で正しい結果がでることは99%ないです。
出た結果と正しい結果を見比べてデバッグしてみて下さい。
どうしても分からないことが出てくるかも知れません。
その時、書かれたコードとどこでどんなエラーが出ているかを示し、何がどのように分からないのか再度質問されれば、回答してくれる人がきっといると思います。
投稿2015/12/25 02:09
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/25 02:57
2015/12/25 03:11
2015/12/25 04:25
2015/12/25 07:23
2015/12/25 08:12
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/25 02:08
2015/12/25 02:13
2015/12/25 02:21