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