c言語初心者です。わからないことがあってこまってます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
カヌー
記事: 45
登録日時: 10年前

c言語初心者です。わからないことがあってこまってます。

#1

投稿記事 by カヌー » 10年前

scanfを使って数字を入力した時について質問があります。

例えば、150500 と入力したら、この数字をprintfで、150500円と表示させることはできるのですが
15万500円のように表示させるにはどのようにすればよいのでしょうか?

c言語超初心者なので文とかわかりにくいかと思いますがどなたかおねがいします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#2

投稿記事 by softya(ソフト屋) » 10年前

これは課題でしょうか? それとも独学ですか?
scanfとは直接関係無さそうですが、書ける部分だけでもコードをお願いします。
※ 今のままだと課題の丸投げに該当しております。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 13年前

Re: c言語初心者です。わからないことがあってこまってます。

#3

投稿記事 by box » 10年前

カヌー さんが書きました: 例えば、150500 と入力したら、この数字をprintfで、150500円と表示させることはできるのですが
15万500円のように表示させるにはどのようにすればよいのでしょうか?
C言語やコンピューターからいったん離れて、
「手で実行するとしたらどうするか」を
「日本語で」書いてみてはどうでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#4

投稿記事 by カヌー » 10年前

コード:

#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;
}
このようなプログラムで貯金額の表示形式を〇〇万〇〇円のように表示させたいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#5

投稿記事 by softya(ソフト屋) » 10年前

すでに最初の質問と内容が変化しています。
1.最初の説明は500円単位を許してましたが、提示されたコードは1000円単位です。どちらなのでしょうか?
2.いきなり貯金という概念が導入されました。必要なのですか?
3.課題なのでしょうか?

boxさんの提案にも返答をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#6

投稿記事 by カヌー » 10年前

1 すみません。千円単位です
2 数字の表示形式の変え方がわからないので貯金という概念はいりまん
3 課題です

boxさん
手で実行するというのはどういうことでしょう。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#7

投稿記事 by softya(ソフト屋) » 10年前

> 数字の表示形式の変え方がわからない → ありませんので自分で作ります。
> boxさん 手で実行するというのはどういうことでしょう。

一万円と言う概念がない人に一万円より下の桁の数値と一万円より上の桁の数値だけの取り出し方をマニュアル説明してくださいって事ですね。
中学生程度の数学は出来るものとします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#8

投稿記事 by カヌー » 10年前

では printf("%d万%d円")のようにしてこの%dの計算方法を考えるということでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#9

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:では printf("%d万%d円")のようにしてこの%dの計算方法を考えるということでしょうか?
そうです。C言語に一万円単位のような都合の良い書式は無いので自分でやる必要があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#10

投稿記事 by カヌー » 10年前

この%dは両方scanfに入力した数字と同じですよね?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#11

投稿記事 by softya(ソフト屋) » 10年前

%dは変数を表示するだけですので 例えばprintf("%d万%d円",a,b);のa,bが必要です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: c言語初心者です。わからないことがあってこまってます。

#12

投稿記事 by ただの屍のようだ » 10年前

(´・ω・`)つ stdlib.hのatoi(), / % 演算子
(´・ω・`)つ できたらatoi()を自作するとよりスキルが上達します。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#13

投稿記事 by カヌー » 10年前

scanfに入力した数字を計算するための新しい変数をつくらなければならないということでしょうか?

ただの屍さん
まだ初心者なのでこれからがんばります

box
記事: 2002
登録日時: 13年前

Re: c言語初心者です。わからないことがあってこまってます。

#14

投稿記事 by box » 10年前

カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
手元に151000円があるとします。
これを
15万1000円
と出力するには、
151000
という数値を
15

1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#15

投稿記事 by カヌー » 10年前

box さんが書きました:
カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
手元に151000円があるとします。
これを
15万1000円
と出力するには、
151000
という数値を
15

1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
計算でこのように分割する方法を考えるということでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#16

投稿記事 by みけCAT » 10年前

ただの屍のようだ さんが書きました:(´・ω・`)つ stdlib.hのatoi(), / % 演算子
(´・ω・`)つ できたらatoi()を自作するとよりスキルが上達します。
今回の場合atoi()は必要ないと思います。
No:4 のコードの9行目を書き換えるだけでできるはずです。これは嘘です。No: 4のコードには致命的な間違いがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#17

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:
box さんが書きました:
カヌー さんが書きました: 手で実行するというのはどういうことでしょう。
手元に151000円があるとします。
これを
15万1000円
と出力するには、
151000
という数値を
15

1000
に分割する必要があります。
この手順を日本語で説明するとしたらどうしますか?という話です。
ここができなければ、それをC言語のコードに落とし込むことはできないはずですね。
計算でこのように分割する方法を考えるということでしょうか?
それを考えるのがプログラムを作る前に設計すると言うことです。
プログラムを作る前に処理方法を考えないと行けません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#18

投稿記事 by カヌー » 10年前

それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#19

投稿記事 by みけCAT » 10年前

カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
もちろんそうですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#20

投稿記事 by カヌー » 10年前

みけCAT さんが書きました:
カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
もちろんそうですね。
思いつかないんですが、ヒントなどはもらえませんか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#21

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:
みけCAT さんが書きました:
カヌー さんが書きました:それは151000の時だけでなく、例えば1501000の時にも対応できる分割方法を考えるのでしょうか?
もちろんそうですね。
思いつかないんですが、ヒントなどはもらえませんか?
十分なヒントは既に出ていますね。
数学的にやる方法と、文字=イメージ的にやる方法の2種類があります。
数学的な方が処理がシンプルで初心者向きですね。
ヒントは割り算の余りです。

【補足】
「文字=イメージ的にやる方法」は日本語で説明しやすいのでプログラムを組まないにしてもぜひ日本語での処理方法を書いてみて欲しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#22

投稿記事 by カヌー » 10年前

〇〇円と表示するほうの計算に余りが必要なんでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#23

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:〇〇円と表示するほうの計算に余りが必要なんでしょうか?
根掘り葉掘り聞かずに処理案を書いてみませんか? 誰も笑ったり怒りませんよ。
プログラミングに必要なのはチャレンジです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#24

投稿記事 by カヌー » 10年前

〇〇円の部分の計算は%d % (〇〇万の部分の計算)だとおもうのですが、どうでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#25

投稿記事 by softya(ソフト屋) » 10年前

日本語で書くか、数式で書いてみてください。
※ もう寝るので答えられませんが、他の人が答えてくれかも

あとプログラムとしては、"%d % xx"は文法的にありませんので説明としても不適切です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#26

投稿記事 by カヌー » 10年前

例をあげると15万4000円を15万で割ると4000あまるのでこの余った部分が〇〇円の部分に表示されるとおもうのですが

Poco
記事: 161
登録日時: 13年前

Re: c言語初心者です。わからないことがあってこまってます。

#27

投稿記事 by Poco » 10年前

具体例は最低2つ挙げないと、その例だけに通じる解法になる可能性があります。
15万4000円はユーザが入力する値ですが、割る数である15万はどうやって算出するのでしょうか?

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#28

投稿記事 by カヌー » 10年前

入力した数字を1万で割って、1万かけるという方法じゃだめでしょうか

1万で割ったら少数点以下は切り捨てられるという考えなのですが

Poco
記事: 161
登録日時: 13年前

Re: c言語初心者です。わからないことがあってこまってます。

#29

投稿記事 by Poco » 10年前

では、その計算式を使って、目的である○○円(1万円未満の端数)を算出する計算式を作るにはどうすれば良いでしょうか?

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#30

投稿記事 by カヌー » 10年前

Poco さんが書きました:では、その計算式を使って、目的である○○円(1万円未満の端数)を算出する計算式を作るにはどうすれば良いでしょうか?
x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?

rascal
記事: 27
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#31

投稿記事 by rascal » 10年前

おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
xに実際に代入してみましょう たとえば24000
24000%(24000/10000*10000)=24000%24000=0
たとえば 32000
32000%(32000/10000*10000)=32000%32000=0
常に0になりますね
変数を2つ用意して考えてみてください

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#32

投稿記事 by みけCAT » 10年前

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
従って、このやり方で間違ってはいないと思います。
ただし、少し冗長ですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#33

投稿記事 by みけCAT » 10年前

rascal さんが書きました:おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
%はあまりを求める演算子です。
%だけで式にはなりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#34

投稿記事 by カヌー » 10年前

つまり自分のやり方間違っているのでしょうか

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#35

投稿記事 by usao » 10年前

とりあえず No4のコードの後ろの方にでも

コード:

...
printf( "%d", amount%(amount/10000*10000) );  //自分の方法の結果を見てみる
とか書いて,実際に確認してみればどうでしょうか.

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#36

投稿記事 by カヌー » 10年前

わかりました。今日学校で確認します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#37

投稿記事 by softya(ソフト屋) » 10年前

自分のPCに開発環境をインストールするとか、WEBサイトで確認するとか手は色々ありますよ。
http://ideone.com/
 ↑ Cを選んでソースコードを入力してRUN。

あとC言語の演算子なら教科書とか、検索してみるとかの方が早いですね。
なんでも聞くのではなくて、自分で調べてわからない部分を聞くのが掲示板の有効な使い方です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#38

投稿記事 by softya(ソフト屋) » 10年前

みけCAT さんが書きました:
rascal さんが書きました:おはようございます
>x%(x/10000*10000)だと思うのですが。%ってあまりを求める記号ですよね?
%はあまりを求める式です
%はあまりを求める演算子です。
%だけで式にはなりません。
みけCATさん、このコメントがカヌー さんを混乱させてますので、誰宛か明確に書いてくださいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#39

投稿記事 by カヌー » 10年前

softya(ソフト屋) さんが書きました:自分のPCに開発環境をインストールするとか、WEBサイトで確認するとか手は色々ありますよ。
http://ideone.com/
 ↑ Cを選んでソースコードを入力してRUN。

あとC言語の演算子なら教科書とか、検索してみるとかの方が早いですね。
なんでも聞くのではなくて、自分で調べてわからない部分を聞くのが掲示板の有効な使い方です。
このサイトでNo.35のコードのamountを154000で確認してみたところ、結果は4000となったので○○円の部分を求める計算式としてあっているのではないのでしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#40

投稿記事 by softya(ソフト屋) » 10年前

確認は1つだけだとマズイと指摘されていましたよね。
もう幾つか確認してみましょう。こういうのがテストの基本と成ります。
私は問題となるパターンがあると思っています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#41

投稿記事 by カヌー » 10年前

桁数を増やしたり、数字変えてもうまくいっているように思えるのですが。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#42

投稿記事 by softya(ソフト屋) » 10年前

じゃあ、0や1000は大丈夫ですか? これも仕様では許容する値ですよね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#43

投稿記事 by カヌー » 10年前

万単位で表すので1万以上が前提ではないのでしょうか

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#44

投稿記事 by usao » 10年前

>万単位で表すので1万以上が前提ではないのでしょうか

それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#45

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:万単位で表すので1万以上が前提ではないのでしょうか
課題に値の範囲として、そう書いてあるならそれで良いと思います。仕様外なので対応しませんでしたって事です。
ただ、イレギュラーな値に耐えられないプログラムは業務用のプログラムとしては落第ですし、ゲームでも入力した値で異常終了したらっそのゲームは遊んでもらえないと思います。
つまり、仕様に通りでも都合の良い解釈をしすぎると仕事としてはダメだと言うことです。仕様に書いてないなら、なおのこと可能な範囲で対応すべきです。
それが気に食わないなら課題を出した人に文句を言いましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#46

投稿記事 by カヌー » 10年前

usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか

それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
そうですね。すみません。
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#47

投稿記事 by みけCAT » 10年前

貯金が負の場合にも対応できるといいですね。
(ゆうちょ銀行では実際に有り得るらしいです)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#48

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:
usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか

それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
そうですね。すみません。
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか
if文は、こういう時のためにあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#49

投稿記事 by カヌー » 10年前

softya(ソフト屋) さんが書きました:
カヌー さんが書きました:
usao さんが書きました:>万単位で表すので1万以上が前提ではないのでしょうか

それは 課題を出した人とあなたとの間の取り決め なので,ここで回答されることでは無いですよね.
ただ,「1000円単位で」と言われたら,「OK,じゃあ1000円だけ」っていうのは普通の感覚では有りだと思います.
(No.4のコードでは1円貯金もできそうですし)
そうですね。すみません。
では1万未満の数字と以上の数字の両方に対応する計算方法があるのでしょうか
if文は、こういう時のためにあります。
すみません。まだif文ならってません。次回習うと思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#50

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました: すみません。まだif文ならってません。次回習うと思います。
それは予想外でした。
であるならば、実は余り計算の除数の側に変数が来ない計算方法があります。
すごく単純ですので考えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Tatu
記事: 445
登録日時: 13年前
住所: 北海道

Re: c言語初心者です。わからないことがあってこまってます。

#51

投稿記事 by Tatu » 10年前

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はどうやって求めればいいでしょうか。

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#52

投稿記事 by usao » 10年前

>x%(x/10000*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言語初心者です。わからないことがあってこまってます。

#53

投稿記事 by softya(ソフト屋) » 10年前

このままだと混乱しそうなので補足しておきます。
計算方法としては2つあって、%を使う方法と使わない方法です。
私のは%を使う方法で、usaoさんのは除算を使って%を使わない方法だと思います。どちらも正解です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#54

投稿記事 by カヌー » 10年前

1万以下の数字の場合、◯万の部分には0と表示されればよいのでしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#55

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:1万以下の数字の場合、◯万の部分には0と表示されればよいのでしょうか
出題者ではないので「大丈夫ですよ」とまでは断言できません。
ただ、if文やそれに類するものが使えない縛りだと◯万があり・なしの2通りの表示は出来ません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#56

投稿記事 by カヌー » 10年前

コード:

#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言語初心者です。わからないことがあってこまってます。

#57

投稿記事 by softya(ソフト屋) » 10年前

> このようなプログラムを作成したのですが、一万未満だとうまくいきません。

それは既にNo: 42で問題だと書いたので検討しませんか?って話になっていたと思いましたが。
No: 42 から No: 53 までその話ですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#58

投稿記事 by カヌー » 10年前

はい。このプログラムで1万未満もうまくいく計算方法おもいつかないんですが

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#59

投稿記事 by usao » 10年前

私の方の続き:

>b = ( a*10000 + b ) % ( a*10000 )
>
>ということを書いてるわけですよ.
>この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.

もっとわかりやすく書けば,
「↓の等式を成立させるためには,□の箇所にどんな演算子を入れればよいでしょう?」ってことですね.
b = ( a*10000 + b ) □ ( a*10000 )

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#60

投稿記事 by softya(ソフト屋) » 10年前

もう、ここら辺はプログラムと言うよりも数学的な発想の問題ですかね。
因数分解とかも、同じように頭をひねると思うのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#61

投稿記事 by カヌー » 10年前

usao さんが書きました:私の方の続き:

>b = ( a*10000 + b ) % ( a*10000 )
>
>ということを書いてるわけですよ.
>この形で見ると「別にそこ,わざわざ % とかいう扱いにくそうなのを持ってこなくてもよくね?」って思いますよね.

もっとわかりやすく書けば,
「↓の等式を成立させるためには,□の箇所にどんな演算子を入れればよいでしょう?」ってことですね.
b = ( a*10000 + b ) □ ( a*10000 )
−ですよね?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#62

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:]
−ですよね?
じゃあ、その視点でプログラムを書きなおしてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#63

投稿記事 by カヌー » 10年前

a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#64

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが
そのダメなプログラムを書いてダメなことを実証してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#65

投稿記事 by カヌー » 10年前

softya(ソフト屋) さんが書きました:
カヌー さんが書きました:a万の aを求める時、1万未満を0と表示させ、1万以上を正しく表示させるのできないと思うんですが
そのダメなプログラムを書いてダメなことを実証してみてください。
どういうことでしょう

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#66

投稿記事 by softya(ソフト屋) » 10年前

> どういうことでしょう

私はダメだと思っていないので、「1万以上を正しく表示させるのできないと思うんですが」を説明 or 証明してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#67

投稿記事 by カヌー » 10年前

自分が思いつかないのでできないと思うだけです。-、+、×、÷、%だけの記号で可能ならば、教えてほしいです。

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#68

投稿記事 by usao » 10年前

なんというか,毎回の書き込みが端的すぎて情報不足というか.
もうすこし具体的な状況を示されるとよいのではないでしょうか.

あなたが示したコード:

コード:

//一部抜粋
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言語がどうの」という状態ではなく,単なる「算数」の話なんですよね.「数学」というよりも……

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#69

投稿記事 by カヌー » 10年前

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万以上の数字は同じ結果になりました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#70

投稿記事 by softya(ソフト屋) » 10年前

> -に変えても1万以上の数字は同じ結果になりました。

カヌー さんにとっては問題でも、、こちらにはどういう問題なのか分からないのですが?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#71

投稿記事 by カヌー » 10年前

もう課題締め切りなんで1万未満の表示はあきらめます。
答えてくれたみなさんありがとうございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#72

投稿記事 by softya(ソフト屋) » 10年前

万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#73

投稿記事 by カヌー » 10年前

softya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000なら
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#74

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:
softya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000なら
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
え? それが出来ていないのですか?
問題の有るソースコードを見せて頂かないと問題点が分かりません。
カヌーさんの頭のなかに有るコードは、こちらからは想像できませんので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1889
登録日時: 11年前

Re: c言語初心者です。わからないことがあってこまってます。

#75

投稿記事 by usao » 10年前

>printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000なら
>0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?

あれ? その計算方法を書いてたつもりだったのですが……

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#76

投稿記事 by カヌー » 10年前

softya(ソフト屋) さんが書きました:
カヌー さんが書きました:
softya(ソフト屋) さんが書きました:万円の問題は、No.55で出来ないと回答したつもりですが。
http://dixq.net/forum/viewtopic.php?f=3 ... 30#p120549
printf("%d万%d円", a, b)の時に、例えば151000なら、15万1000円と表示され、9000なら
0万9000円と表示されるようなa、bの計算方法があるという話ではないのでしょうか?
え? それが出来ていないのですか?
問題の有るソースコードを見せて頂かないと問題点が分かりません。
カヌーさんの頭のなかに有るコードは、こちらからは想像できませんので。
No.56にはったコードなんですが。それだと0万9000円のような表示はできません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#77

投稿記事 by softya(ソフト屋) » 10年前

> No.56にはったコードなんですが。それだと0万9000円のような表示はできません。

それにusaoさんの提案を適用すれば何の問題もないはずですが?
やはり、カヌーさんの頭のなかに有るコードと私達の考えていたコードは食い違うようです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#78

投稿記事 by カヌー » 10年前

あれ?サイトでためしてみたら%を-に変えてうまくできました。
学校だとエラーでたきがしたんですが...

usaoさん、ソフト屋さん、すみませんでした。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#79

投稿記事 by softya(ソフト屋) » 10年前

カヌー さんが書きました:あれ?サイトでためしてみたら%を-に変えてうまくできました。
学校だとエラーでたきがしたんですが...

usaoさん、ソフト屋さん、すみませんでした。
人間はミスをするので、基本的に信用してはいけません。
信用出来ない自分のプログラムのバグが無いか確認する事がテストの基本原則です。

こんな有名な格言があります「プログラムは思った通りに動かない。書いた通りに動く。」
つまり、思ったように動かないなら書いたプログラムをまず疑えって事です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#80

投稿記事 by みけCAT » 10年前

課題締切ということなのでぶっちゃけて書かせていただきますが、amountが非負なら素直に

コード:

man = amount / 10000;
enn = amount % 10000;
でいいと思いますが、何かダメな理由がありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ただの屍のようだ

Re: c言語初心者です。わからないことがあってこまってます。

#81

投稿記事 by ただの屍のようだ » 10年前

IT技術者になるのでしたら、口よりもコードに語らせたほうがいろんな意味で手っ取り早いです。

『 ただひたすら歩み続け、知識を吸収し、スキルを上達させ、それでも世界が思い通りにならないのなら、
 思う存分に蓄えた、その”力”をもって、世界を潰してしまえばいいですよ。
 学者にも政治家にもできないことを、”ハッカー”ならいとも容易く実行できてしまいます。
 同じ道を進む”卵”をみるのは、とても愉快なことです。』
最初に私に道を示したものからの言葉です、ぜひがんばってハッカーを目指してみてください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: c言語初心者です。わからないことがあってこまってます。

#82

投稿記事 by softya(ソフト屋) » 10年前

みけCAT さんが書きました:課題締切ということなのでぶっちゃけて書かせていただきますが、amountが非負なら素直に

コード:

man = amount / 10000;
enn = amount % 10000;
でいいと思いますが、何かダメな理由がありますか?
私は、どっちでも良いと思います。
もう片方を否定する理由は無いと思いますので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

カヌー
記事: 45
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#83

投稿記事 by カヌー » 10年前

なんか心に残る言葉なども残していただきみなさんありがとうございます!
ほんとみなさんありがとうございました!

rascal
記事: 27
登録日時: 10年前

Re: c言語初心者です。わからないことがあってこまってます。

#84

投稿記事 by rascal » 10年前

おはようございます

失礼しました
カヌーさんを混乱させたみたいで申しわけなかったです

閉鎖

“C言語何でも質問掲示板” へ戻る