dポイントプレゼントキャンペーン実施中!

C言語初心者の質問失礼します。
学校で、
「つると亀が合わせてn 匹います。足の数は合わせてm です。n とm を入力して、つると亀がそれぞれ何匹いるかを求めるプログラムを作りなさい。もし解がない場合は、その旨を出力するようにプログラムしなさい」
という課題が出たのですが、どうプログラムすればいいかわからずに困っています。
どのようにプログラムすればいいか、どうか一言でもかまいませんのでご意見ください!><
こんな質問してごめんなさい。もしよければプログラミングをわかりやすく学べるHPのURLも教えていただければ嬉しいです…。

A 回答 (5件)

考え方だけコメントしてみます。



つるがi匹いるものとします。
iが0のとき、亀はn匹なので、足の数はi*2+n*4となりますよね。
これがmと一致したら、つる0匹が答えです。

一致しなかった場合。
iが1のとき、亀はn-i匹なので、足の数はi*2+(n-i)*4となりますよね。
これがmと一致したら、つる1匹が答えです。

といったように、iを0~nまで一つづつ大きくしていって
比較を繰り返せばいいのです。

これにはforループを使います。
あとはご自身でできるでしょうか?
    • good
    • 1

鶴亀算の解き方は知っていますか?


解き方を知らなければコンピュータに解き方を教えることができません。
もし解き方がわからなければ数学の連立方程式の解き方を思いだしてみてください。

・鶴をx、亀をyとしてn=5、m=16とした場合
x+y=5
2x+4y=16

2x+2y=10
2y=6
y=3
x+3=5
x=2


ちなみに解がない場合は頭数が少数になったりマイナスになったりします。
    • good
    • 1

問題になる部分は次の三カ所です。



1. 鶴亀算そのもの。
これは、鶴と亀の数をmとnで表せるように、代数的な計算は紙の上でやってしまいます。

2. mとnをどのように入力し、結果をどのように出力するか?
環境不明なので、標準入力と標準出力を使うのが普通の考え方です。入力に関しては、コマンドライン引数を使うのもアリでしょう。

3. 数値の表現範囲をどうするか?
unsigned long long型で表現できる範囲でよいのか、そうでないならどこまで必要なのか?

これらについて解決することが先決かと思います。
    • good
    • 0

fgets なら当然「指定したバイト数」しか読めませんが, scanf なら「int に入る限り」大丈夫だと思いますよ>#1. 少なくとも規格には「バイト数の上限」はないはずです.


手元では scanf で 3921桁の数値 (000.....0001, つまりただの 1 ですが) を読み込めてます. gcc の方が VC より速いんだけど.... なんでだろう.
    • good
    • 0

こんな感じかなあ?



http://ideone.com/UWupV

#標準入力の内容に、250桁の数値とか入力されたらどうなるんだろう?先頭128バイトで切られて不正確な値になっちゃうんだろうか
    • good
    • 0

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