みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
質問お願いします。(環境 FM18)
金額によりお金の必要枚数を知りたいのですが
例えば28,728円だった場合は
1万円札=2枚
5千円札=1枚
千円札=3枚
5百円玉=1枚
百円玉=2枚
10円玉=2枚
5円玉=1枚
1円玉=3枚
と出るようにしたいです。計算式はどのようになるでしょうか?
ご教授お願いします。
1万円札は Int ( 金額 / 10000 )
5千円札は Int ( ( 金額 - 1万円札の枚数 * 10000 ) / 5000 )
このような方法でいいのでは。
以後どんどん式が長くなりますね。
Offline
5×n円と1×n円の必要枚数は、
Div ( Mod ( Div ( 金額 ; n ) ; 10 ) ; 5 )
Mod ( Mod ( Div ( 金額 ; n ) ; 10 ) ; 5 )
です。それぞれ、すべての数字の桁を増減すれば、各金額向けが求められます。
Offline
金種表というやつですね。
以下のスレッドも参考になるのでは。
https://fm-aid.com/bbs2/viewtopic.php?id=667
1)「元金額」(数字フィールド)を作ります。
2)計算フィールド(繰り返し数9)を作り、以下のような式を定義します。
Let (
[
gaku = List ( 10000 ; 5000 ; 1000 ; 500 ; 100 ; 50 ; 10 ; 5 ; 1 ) ;
n = Get ( 計算式繰り返し位置番号 ) ;
p = GetValue ( gaku ; n ) ;
Pu = GetValue ( gaku ; n - 1 )
] ;
Case (
n = 1 ; Div ( 元金額[1] ; p ) ;
Div ( Mod ( 元金額[1] ; Pu ) ; p )
)
)
これを元に集計したり、表示用テキストに加工したりは容易かと思います。
Last edited by koeda (2019-12-26 17:55:27)
Offline
結果を変数で受け取るバージョン。
$ret[1]~[9]に1万円~1円の枚数が入ります。
While (
[
~n = 金額 ;
$m[1] = 10000 ;
$m[2] = 5000 ;
$m[3] = 1000 ;
$m[4] = 500 ;
$m[5] = 100 ;
$m[6] = 50 ;
$m[7] = 10 ;
$m[8] = 5 ;
$m[9] = 1 ;
~i = 1 ;
$ret = 0
] ;
not IsEmpty ( $m[~i] ) ;
[
$ret[~i] = Truncate ( ~n / $m[~i] ; 0 ) ;
~n = Mod ( ~n ; $m[~i] ) ;
~i = ~i + 1
] ;
$ret
)
Offline
例えば、金額が 28,728円 だった場合に
-------------------
1万円札=2枚
5千円札=1枚
千円札=3枚
5百円玉=1枚
百円玉=2枚
10円玉=2枚
5円玉=1枚
1円玉=3枚
-------------------
のような書式の「金種一覧表」を計算する式
(※最新v18「While関数」を利用しなくてもできる疑似ループ式)
Let(
[
$amnt=金額;
$unt=List(10000;5000;1000;500;100;50;10;5;1);
$_unt=List("1万円札";"5千円札";"千円札";"5百円玉";"百円玉";"5百円玉";"10円玉";"5円玉";"1円玉");
$i=0;
$res="";
$LOOP=
"Case(
$amnt=0 or $i=9; $res;
Let([
$i=$i+1;
#unt=GetValue($unt; $i);
#_unt=GetValue($_unt; $i);
#div=Div($amnt; #unt);
#res=Case(#div; #_unt &""=""& #div &""枚"");
$res=List($res; #res);
$amnt=Mod($amnt; #unt)
]; Evaluate($LOOP))
)"
];
Evaluate($LOOP)
)
Offline
皆様、大変様々な方法でご回答いただき、ありがとうございます!
思ったように出るようになりました。
助かりました。重ねてお礼申し上げます。
ありがとうございました!
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 513.75 KiB (Peak: 518.66 KiB) ]