c言語初心者です。わからないことがあってこまってます。
c言語初心者です。わからないことがあってこまってます。
scanfを使って数字を入力した時について質問があります。
例えば、150500 と入力したら、この数字をprintfで、150500円と表示させることはできるのですが
15万500円のように表示させるにはどのようにすればよいのでしょうか?
c言語超初心者なので文とかわかりにくいかと思いますがどなたかおねがいします。
例えば、150500 と入力したら、この数字をprintfで、150500円と表示させることはできるのですが
15万500円のように表示させるにはどのようにすればよいのでしょうか?
c言語超初心者なので文とかわかりにくいかと思いますがどなたかおねがいします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
これは課題でしょうか? それとも独学ですか?
scanfとは直接関係無さそうですが、書ける部分だけでもコードをお願いします。
※ 今のままだと課題の丸投げに該当しております。
http://dixq.net/board/board.html
scanfとは直接関係無さそうですが、書ける部分だけでもコードをお願いします。
※ 今のままだと課題の丸投げに該当しております。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
C言語やコンピューターからいったん離れて、カヌー さんが書きました: 例えば、150500 と入力したら、この数字をprintfで、150500円と表示させることはできるのですが
15万500円のように表示させるにはどのようにすればよいのでしょうか?
「手で実行するとしたらどうするか」を
「日本語で」書いてみてはどうでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
すでに最初の質問と内容が変化しています。
1.最初の説明は500円単位を許してましたが、提示されたコードは1000円単位です。どちらなのでしょうか?
2.いきなり貯金という概念が導入されました。必要なのですか?
3.課題なのでしょうか?
boxさんの提案にも返答をお願いします。
1.最初の説明は500円単位を許してましたが、提示されたコードは1000円単位です。どちらなのでしょうか?
2.いきなり貯金という概念が導入されました。必要なのですか?
3.課題なのでしょうか?
boxさんの提案にも返答をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
1 すみません。千円単位です
2 数字の表示形式の変え方がわからないので貯金という概念はいりまん
3 課題です
boxさん
手で実行するというのはどういうことでしょう。
2 数字の表示形式の変え方がわからないので貯金という概念はいりまん
3 課題です
boxさん
手で実行するというのはどういうことでしょう。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
> 数字の表示形式の変え方がわからない → ありませんので自分で作ります。
> boxさん 手で実行するというのはどういうことでしょう。
一万円と言う概念がない人に一万円より下の桁の数値と一万円より上の桁の数値だけの取り出し方をマニュアル説明してくださいって事ですね。
中学生程度の数学は出来るものとします。
> boxさん 手で実行するというのはどういうことでしょう。
一万円と言う概念がない人に一万円より下の桁の数値と一万円より上の桁の数値だけの取り出し方をマニュアル説明してくださいって事ですね。
中学生程度の数学は出来るものとします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
では printf("%d万%d円")のようにしてこの%dの計算方法を考えるということでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
そうです。C言語に一万円単位のような都合の良い書式は無いので自分でやる必要があります。カヌー さんが書きました:では printf("%d万%d円")のようにしてこの%dの計算方法を考えるということでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
%dは変数を表示するだけですので 例えばprintf("%d万%d円",a,b);のa,bが必要です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
(´・ω・`)つ stdlib.hのatoi(), / % 演算子
(´・ω・`)つ できたらatoi()を自作するとよりスキルが上達します。
(´・ω・`)つ できたらatoi()を自作するとよりスキルが上達します。
Re: c言語初心者です。わからないことがあってこまってます。
scanfに入力した数字を計算するための新しい変数をつくらなければならないということでしょうか?
ただの屍さん
まだ初心者なのでこれからがんばります
ただの屍さん
まだ初心者なのでこれからがんばります
Re: c言語初心者です。わからないことがあってこまってます。
手元に151000円があるとします。カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
これを
15万1000円
と出力するには、
151000
という数値を
15
と
1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: c言語初心者です。わからないことがあってこまってます。
計算でこのように分割する方法を考えるということでしょうか?box さんが書きました:手元に151000円があるとします。カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
これを
15万1000円
と出力するには、
151000
という数値を
15
と
1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
Re: c言語初心者です。わからないことがあってこまってます。
今回の場合atoi()は必要ないと思います。ただの屍のようだ さんが書きました:(´・ω・`)つ stdlib.hのatoi(), / % 演算子
(´・ω・`)つ できたらatoi()を自作するとよりスキルが上達します。
No:4 のコードの9行目を書き換えるだけでできるはずです。これは嘘です。No: 4のコードには致命的な間違いがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
それを考えるのがプログラムを作る前に設計すると言うことです。カヌー さんが書きました:計算でこのように分割する方法を考えるということでしょうか?box さんが書きました:手元に151000円があるとします。カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
これを
15万1000円
と出力するには、
151000
という数値を
15
と
1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
プログラムを作る前に処理方法を考えないと行けません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
Re: c言語初心者です。わからないことがあってこまってます。
もちろんそうですね。カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: c言語初心者です。わからないことがあってこまってます。
思いつかないんですが、ヒントなどはもらえませんか?みけCAT さんが書きました:もちろんそうですね。カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
十分なヒントは既に出ていますね。カヌー さんが書きました:思いつかないんですが、ヒントなどはもらえませんか?みけCAT さんが書きました:もちろんそうですね。カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
数学的にやる方法と、文字=イメージ的にやる方法の2種類があります。
数学的な方が処理がシンプルで初心者向きですね。
ヒントは割り算の余りです。
【補足】
「文字=イメージ的にやる方法」は日本語で説明しやすいのでプログラムを組まないにしてもぜひ日本語での処理方法を書いてみて欲しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
根掘り葉掘り聞かずに処理案を書いてみませんか? 誰も笑ったり怒りませんよ。カヌー さんが書きました:〇〇円と表示するほうの計算に余りが必要なんでしょうか?
プログラミングに必要なのはチャレンジです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
〇〇円の部分の計算は%d % (〇〇万の部分の計算)だとおもうのですが、どうでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
日本語で書くか、数式で書いてみてください。
※ もう寝るので答えられませんが、他の人が答えてくれかも
あとプログラムとしては、"%d % xx"は文法的にありませんので説明としても不適切です。
※ もう寝るので答えられませんが、他の人が答えてくれかも
あとプログラムとしては、"%d % xx"は文法的にありませんので説明としても不適切です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
例をあげると15万4000円を15万で割ると4000あまるのでこの余った部分が〇〇円の部分に表示されるとおもうのですが
Re: c言語初心者です。わからないことがあってこまってます。
具体例は最低2つ挙げないと、その例だけに通じる解法になる可能性があります。
15万4000円はユーザが入力する値ですが、割る数である15万はどうやって算出するのでしょうか?
15万4000円はユーザが入力する値ですが、割る数である15万はどうやって算出するのでしょうか?
Re: c言語初心者です。わからないことがあってこまってます。
入力した数字を1万で割って、1万かけるという方法じゃだめでしょうか
1万で割ったら少数点以下は切り捨てられるという考えなのですが
1万で割ったら少数点以下は切り捨てられるという考えなのですが
Re: c言語初心者です。わからないことがあってこまってます。
では、その計算式を使って、目的である○○円(1万円未満の端数)を算出する計算式を作るにはどうすれば良いでしょうか?
Re: c言語初心者です。わからないことがあってこまってます。
x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?Poco さんが書きました:では、その計算式を使って、目的である○○円(1万円未満の端数)を算出する計算式を作るにはどうすれば良いでしょうか?
Re: c言語初心者です。わからないことがあってこまってます。
おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
xに実際に代入してみましょう たとえば24000
24000%(24000/10000*10000)=24000%24000=0
たとえば 32000
32000%(32000/10000*10000)=32000%32000=0
常に0になりますね
変数を2つ用意して考えてみてください
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
xに実際に代入してみましょう たとえば24000
24000%(24000/10000*10000)=24000%24000=0
たとえば 32000
32000%(32000/10000*10000)=32000%32000=0
常に0になりますね
変数を2つ用意して考えてみてください
Re: c言語初心者です。わからないことがあってこまってます。
C言語の整数演算では、小数点以下は切り捨てられます。rascal さんが書きました:おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
xに実際に代入してみましょう たとえば24000
24000%(24000/10000*10000)=24000%24000=0
たとえば 32000
32000%(32000/10000*10000)=32000%32000=0
常に0になりますね
変数を2つ用意して考えてみてください
24000%(24000/10000*10000) = 24000%(2*10000) = 24000%20000 = 4000
32000%(32000/10000*10000) = 32000%(3*10000) = 32000%30000 = 2000
従って、このやり方で間違ってはいないと思います。
ただし、少し冗長ですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: c言語初心者です。わからないことがあってこまってます。
%はあまりを求める演算子です。rascal さんが書きました:おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
%だけで式にはなりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
自分のPCに開発環境をインストールするとか、WEBサイトで確認するとか手は色々ありますよ。
http://ideone.com/
↑ Cを選んでソースコードを入力してRUN。
あとC言語の演算子なら教科書とか、検索してみるとかの方が早いですね。
なんでも聞くのではなくて、自分で調べてわからない部分を聞くのが掲示板の有効な使い方です。
http://ideone.com/
↑ Cを選んでソースコードを入力してRUN。
あとC言語の演算子なら教科書とか、検索してみるとかの方が早いですね。
なんでも聞くのではなくて、自分で調べてわからない部分を聞くのが掲示板の有効な使い方です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
みけCATさん、このコメントがカヌー さんを混乱させてますので、誰宛か明確に書いてくださいね。みけCAT さんが書きました:%はあまりを求める演算子です。rascal さんが書きました:おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
%だけで式にはなりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
このサイトでNo.35のコードのamountを154000で確認してみたところ、結果は4000となったので○○円の部分を求める計算式としてあっているのではないのでしょうかsoftya(ソフト屋) さんが書きました:自分のPCに開発環境をインストールするとか、WEBサイトで確認するとか手は色々ありますよ。
http://ideone.com/
↑ Cを選んでソースコードを入力してRUN。
あとC言語の演算子なら教科書とか、検索してみるとかの方が早いですね。
なんでも聞くのではなくて、自分で調べてわからない部分を聞くのが掲示板の有効な使い方です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
確認は1つだけだとマズイと指摘されていましたよね。
もう幾つか確認してみましょう。こういうのがテストの基本と成ります。
私は問題となるパターンがあると思っています。
もう幾つか確認してみましょう。こういうのがテストの基本と成ります。
私は問題となるパターンがあると思っています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
じゃあ、0や1000は大丈夫ですか? これも仕様では許容する値ですよね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
>万単位で表すので1万以上が前提ではないのでしょうか
それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
課題に値の範囲として、そう書いてあるならそれで良いと思います。仕様外なので対応しませんでしたって事です。カヌー さんが書きました:万単位で表すので1万以上が前提ではないのでしょうか
ただ、イレギュラーな値に耐えられないプログラムは業務用のプログラムとしては落第ですし、ゲームでも入力した値で異常終了したらっそのゲームは遊んでもらえないと思います。
つまり、仕様に通りでも都合の良い解釈をしすぎると仕事としてはダメだと言うことです。仕様に書いてないなら、なおのこと可能な範囲で対応すべきです。
それが気に食わないなら課題を出した人に文句を言いましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
そうですね。すみません。usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか
それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか
Re: c言語初心者です。わからないことがあってこまってます。
貯金が負の場合にも対応できるといいですね。
(ゆうちょ銀行では実際に有り得るらしいです)
(ゆうちょ銀行では実際に有り得るらしいです)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
if文は、こういう時のためにあります。カヌー さんが書きました:そうですね。すみません。usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか
それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
すみません。まだif文ならってません。次回習うと思います。softya(ソフト屋) さんが書きました:if文は、こういう時のためにあります。カヌー さんが書きました:そうですね。すみません。usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか
それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
それは予想外でした。カヌー さんが書きました: すみません。まだif文ならってません。次回習うと思います。
であるならば、実は余り計算の除数の側に変数が来ない計算方法があります。
すごく単純ですので考えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
a/bと書くとaをbで割った商を計算します
a%bと書くとaをbで割った余りを計算します。
たとえば
23/10ならば2と計算され、
23%10ならば3と計算されます。
23=10×2+3に対して
2と3を分離できています。
では、151000を15万1000円と表示するとき、
15と1000はどうやって求めればいいでしょうか。
a%bと書くとaをbで割った余りを計算します。
たとえば
23/10ならば2と計算され、
23%10ならば3と計算されます。
23=10×2+3に対して
2と3を分離できています。
では、151000を15万1000円と表示するとき、
15と1000はどうやって求めればいいでしょうか。
Re: c言語初心者です。わからないことがあってこまってます。
>x%(x/10000*10000)
うーん… なんと言えばいいのか……
x円のうち,○○万円 の部分をa,残りの1万円未満の部分がb円 だとすれば,
x = a * 10000 + b
ってことですよね.
b = x % (x/10000*10000)
としてbを求めようとしている↑の%を使ってる式というのは,つまるところ
b = ( a*10000 + b ) % ( a*10000 )
ということを書いてるわけですよ.
この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.
うーん… なんと言えばいいのか……
x円のうち,○○万円 の部分をa,残りの1万円未満の部分がb円 だとすれば,
x = a * 10000 + b
ってことですよね.
b = x % (x/10000*10000)
としてbを求めようとしている↑の%を使ってる式というのは,つまるところ
b = ( a*10000 + b ) % ( a*10000 )
ということを書いてるわけですよ.
この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
このままだと混乱しそうなので補足しておきます。
計算方法としては2つあって、%を使う方法と使わない方法です。
私のは%を使う方法で、usaoさんのは除算を使って%を使わない方法だと思います。どちらも正解です。
計算方法としては2つあって、%を使う方法と使わない方法です。
私のは%を使う方法で、usaoさんのは除算を使って%を使わない方法だと思います。どちらも正解です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
出題者ではないので「大丈夫ですよ」とまでは断言できません。カヌー さんが書きました:1万以下の数字の場合、◯万の部分には0と表示されればよいのでしょうか
ただ、if文やそれに類するものが使えない縛りだと◯万があり・なしの2通りの表示は出来ません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
#include <stdio.h>
int main(void)
{
int amount=0, man, enn;
double tyokin;
printf("現在の貯金額は, %d円です.\n今回はいくら貯金しますか? (単位:千円):", amount);
scanf("%lf", &tyokin);
amount=amount+(tyokin*1000);
man=amount/10000;
enn=amount%(amount/10000*10000);
printf("\n現在の貯金額は, %d万%d円です.\n今回はいくら貯金しますか? (単位:千円):", man, enn);
scanf("%lf", &tyokin);
amount=amount+(tyokin*1000);
man=amount/10000;
enn=amount%(amount/10000*10000);
printf("\n現在の貯金額は, %d万%d円です.\n今回はいくら貯金しますか? (単位:千円):",man, enn);
scanf("%lf", &tyokin);
amount=amount+(tyokin*1000);
man=amount/10000;
enn=amount%(amount/10000*10000);
printf("\n全部で%d万%d円貯まりました.\nよくがんばりました.\n", man, enn);
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
> このようなプログラムを作成したのですが、一万未満だとうまくいきません。
それは既にNo: 42で問題だと書いたので検討しませんか?って話になっていたと思いましたが。
No: 42 から No: 53 までその話ですよ。
それは既にNo: 42で問題だと書いたので検討しませんか?って話になっていたと思いましたが。
No: 42 から No: 53 までその話ですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
私の方の続き:
>b = ( a*10000 + b ) % ( a*10000 )
>
>ということを書いてるわけですよ.
>この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.
もっとわかりやすく書けば,
「↓の等式を成立させるためには,□の箇所にどんな演算子を入れればよいでしょう?」ってことですね.
b = ( a*10000 + b ) □ ( a*10000 )
>b = ( a*10000 + b ) % ( a*10000 )
>
>ということを書いてるわけですよ.
>この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.
もっとわかりやすく書けば,
「↓の等式を成立させるためには,□の箇所にどんな演算子を入れればよいでしょう?」ってことですね.
b = ( a*10000 + b ) □ ( a*10000 )
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
もう、ここら辺はプログラムと言うよりも数学的な発想の問題ですかね。
因数分解とかも、同じように頭をひねると思うのですが。
因数分解とかも、同じように頭をひねると思うのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
−ですよね?usao さんが書きました:私の方の続き:
>b = ( a*10000 + b ) % ( a*10000 )
>
>ということを書いてるわけですよ.
>この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.
もっとわかりやすく書けば,
「↓の等式を成立させるためには,□の箇所にどんな演算子を入れればよいでしょう?」ってことですね.
b = ( a*10000 + b ) □ ( a*10000 )
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
じゃあ、その視点でプログラムを書きなおしてみてください。カヌー さんが書きました:]
−ですよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
そのダメなプログラムを書いてダメなことを実証してみてください。カヌー さんが書きました:a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
どういうことでしょうsoftya(ソフト屋) さんが書きました:そのダメなプログラムを書いてダメなことを実証してみてください。カヌー さんが書きました:a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
> どういうことでしょう
私はダメだと思っていないので、「1万以上を正しく表示させるのできないと思うんですが」を説明 or 証明してください。
私はダメだと思っていないので、「1万以上を正しく表示させるのできないと思うんですが」を説明 or 証明してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
自分が思いつかないのでできないと思うだけです。-、+、×、÷、%だけの記号で可能ならば、教えてほしいです。
Re: c言語初心者です。わからないことがあってこまってます。
なんというか,毎回の書き込みが端的すぎて情報不足というか.
もうすこし具体的な状況を示されるとよいのではないでしょうか.
あなたが示したコード:
では,一万未満の値のとき,「何が/どんなことが 起こるから」うまくいかない(具体的にどうなった?)のか?
で,
>−ですよね?
というところまでわかっているのだから, を という式に変えてみたら,状況はどう変わる/変わった のか?
とか.
もうすこし具体的な状況を示されるとよいのではないでしょうか.
あなたが示したコード:
//一部抜粋
printf("現在の貯金額は, %d円です.\n今回はいくら貯金しますか? (単位:千円):", amount);
scanf("%lf", &tyokin);
amount=amount+(tyokin*1000);
man=amount/10000;
enn=amount%(amount/10000*10000);
で,
>−ですよね?
というところまでわかっているのだから, を という式に変えてみたら,状況はどう変わる/変わった のか?
とか.
オフトピック
こんなことを書くと 大変失礼かとは思うのですが,
現状,「C言語がどうの」という状態ではなく,単なる「算数」の話なんですよね.「数学」というよりも……
現状,「C言語がどうの」という状態ではなく,単なる「算数」の話なんですよね.「数学」というよりも……
Re: c言語初心者です。わからないことがあってこまってます。
1万未満の数字を入力するとエラーがおきます。-に変えても1万以上の数字は同じ結果になりました。usao さんが書きました:なんというか,毎回の書き込みが端的すぎて情報不足というか.
もうすこし具体的な状況を示されるとよいのではないでしょうか.
あなたが示したコード:では,一万未満の値のとき,「何が/どんなことが 起こるから」うまくいかない(具体的にどうなった?)のか?//一部抜粋 printf("現在の貯金額は, %d円です.\n今回はいくら貯金しますか? (単位:千円):", amount); scanf("%lf", &tyokin); amount=amount+(tyokin*1000); man=amount/10000; enn=amount%(amount/10000*10000);
で,
>−ですよね?
というところまでわかっているのだから, を という式に変えてみたら,状況はどう変わる/変わった のか?
とか.オフトピックこんなことを書くと 大変失礼かとは思うのですが,
現状,「C言語がどうの」という状態ではなく,単なる「算数」の話なんですよね.「数学」というよりも……
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
> -に変えても1万以上の数字は同じ結果になりました。
カヌー さんにとっては問題でも、、こちらにはどういう問題なのか分からないのですが?
カヌー さんにとっては問題でも、、こちらにはどういう問題なのか分からないのですが?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
もう課題締め切りなんで1万未満の表示はあきらめます。
答えてくれたみなさんありがとうございました。
答えてくれたみなさんありがとうございました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000ならsoftya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
え? それが出来ていないのですか?カヌー さんが書きました:printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000ならsoftya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
問題の有るソースコードを見せて頂かないと問題点が分かりません。
カヌーさんの頭のなかに有るコードは、こちらからは想像できませんので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
>printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000なら
>0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
あれ? その計算方法を書いてたつもりだったのですが……
>0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
あれ? その計算方法を書いてたつもりだったのですが……
Re: c言語初心者です。わからないことがあってこまってます。
No.56にはったコードなんですが。それだと0万9000円のような表示はできません。softya(ソフト屋) さんが書きました:え? それが出来ていないのですか?カヌー さんが書きました:printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000ならsoftya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
問題の有るソースコードを見せて頂かないと問題点が分かりません。
カヌーさんの頭のなかに有るコードは、こちらからは想像できませんので。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
> No.56にはったコードなんですが。それだと0万9000円のような表示はできません。
それにusaoさんの提案を適用すれば何の問題もないはずですが?
やはり、カヌーさんの頭のなかに有るコードと私達の考えていたコードは食い違うようです。
それにusaoさんの提案を適用すれば何の問題もないはずですが?
やはり、カヌーさんの頭のなかに有るコードと私達の考えていたコードは食い違うようです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
あれ?サイトでためしてみたら%を-に変えてうまくできました。
学校だとエラーでたきがしたんですが...
usaoさん、ソフト屋さん、すみませんでした。
学校だとエラーでたきがしたんですが...
usaoさん、ソフト屋さん、すみませんでした。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
人間はミスをするので、基本的に信用してはいけません。カヌー さんが書きました:あれ?サイトでためしてみたら%を-に変えてうまくできました。
学校だとエラーでたきがしたんですが...
usaoさん、ソフト屋さん、すみませんでした。
信用出来ない自分のプログラムのバグが無いか確認する事がテストの基本原則です。
こんな有名な格言があります「プログラムは思った通りに動かない。書いた通りに動く。」
つまり、思ったように動かないなら書いたプログラムをまず疑えって事です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
課題締切ということなのでぶっちゃけて書かせていただきますが、amountが非負なら素直に
でいいと思いますが、何かダメな理由がありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: c言語初心者です。わからないことがあってこまってます。
IT技術者になるのでしたら、口よりもコードに語らせたほうがいろんな意味で手っ取り早いです。
『 ただひたすら歩み続け、知識を吸収し、スキルを上達させ、それでも世界が思い通りにならないのなら、
思う存分に蓄えた、その”力”をもって、世界を潰してしまえばいいですよ。
学者にも政治家にもできないことを、”ハッカー”ならいとも容易く実行できてしまいます。
同じ道を進む”卵”をみるのは、とても愉快なことです。』
最初に私に道を示したものからの言葉です、ぜひがんばってハッカーを目指してみてください。
『 ただひたすら歩み続け、知識を吸収し、スキルを上達させ、それでも世界が思い通りにならないのなら、
思う存分に蓄えた、その”力”をもって、世界を潰してしまえばいいですよ。
学者にも政治家にもできないことを、”ハッカー”ならいとも容易く実行できてしまいます。
同じ道を進む”卵”をみるのは、とても愉快なことです。』
最初に私に道を示したものからの言葉です、ぜひがんばってハッカーを目指してみてください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語初心者です。わからないことがあってこまってます。
私は、どっちでも良いと思います。
もう片方を否定する理由は無いと思いますので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語初心者です。わからないことがあってこまってます。
なんか心に残る言葉なども残していただきみなさんありがとうございます!
ほんとみなさんありがとうございました!
ほんとみなさんありがとうございました!
Re: c言語初心者です。わからないことがあってこまってます。
おはようございます
失礼しました
カヌーさんを混乱させたみたいで申しわけなかったです
失礼しました
カヌーさんを混乱させたみたいで申しわけなかったです