過去の桐井戸端BBS (桐ver.8)
2715 分数表示 kss30 1999/9/18-10:05
桐ver.8を使っています。

 ラジアンを「度」に変換する方法は”悲しげさん”より習って解決したのです
が、こんどは、傾斜率を分数表示しなければならなくなりました。

2/3+1/5=13/15 <・・・・分数表示のつもりです。

こんな計算できるでしょうか? 
2716 こっ、これはちょっと・・・ 悲しげ 1999/9/18-11:52
記事番号2715へのコメント
どもっ、kss30さん、
ふつう、桐などではこういうことはしないと思いますが(^^;)、
とりあえずふたつの分数の通分足し算だけの例を書いてみます。
ただし約分はできません、文字列の表示だけです。(^^;)(^^;)

#str([分子1]*[分母2]+[分子2]*[分母1])+"/"+#str([分母1]*[分母2])
2722 Re:分数演算を行うソフト/桐での分数演算の考え方 佐田 守弘 1999/9/18-23:39
記事番号2716へのコメント
kss30さん
桐を始め、ほとんどの計算ソフトは、分数演算を行う機能がありません。
私が知る限りで分数演算ができるのは、カルキング(シンプレックス梶jのみです。
桐の話でなくて恐縮ですが、カルキングについて触れておきます。
カルキングは、数式処理機能を持った文書作成機能のソフトです。数式通りに記述すると
、分数を始め、代数演算、連立方程式の解などをこなします。
数式を含む文書を作成するソフトですから、土木設計書の様な書類をまとめる時には役に
立ちます。しかしながら多少の表計算機能は持っておりますが、桐で扱うような多量のデ
ータを処理する用途向きではありません。

●桐で分数を扱う
 一般的な分数式を書いてすぐに答を求めることは不可能としても、2つの分数の和、な
いし差だけを計算するアルゴリズムを作ることはできない事はないでしょうね。
通分して和や差をを求めるまでは、悲しげさんが書かれたとおりです。
 次に約分ですが、約分は素数のデータを予め持っておき、小さい方から順に分子分母と
も素数で割り切れれば割り切る、割り切れなければ次の素数を試すといった事を、分子と
分母の小さい方の平方根まで繰り返えします。一括処理が必要になると思いますが、それ
程面倒ではないでしょう。

 あるいは2つの分数の四則演算だけなら、フォームとイベントの組み合わせで作れそう
ですね。フォーム上に4つのマス目を作って数字を入れ、四則演算の演算子を選ぶように
します。演算子の入力でイベントを発生させ、答となる部分の分子分母を求めます。この
部分は、悲しげさんが書かれた事を応用すればできると思います。
 答の分子分母の数値を計算した後、約分の演算を行えば、見掛け上ですが、分数演算が
できた形になります。

佐田守弘(KS-00119)
2751 Re: 茗荷 1999/9/22-21:45
記事番号2715へのコメント
> ラジアンを「度」に変換する方法は”悲しげさん”より習って解決したのです
>が、こんどは、傾斜率を分数表示しなければならなくなりました。
>
>2/3+1/5=13/15 <・・・・分数表示のつもりです。
>
>こんな計算できるでしょうか? 

茗荷(みょうが)です。
9月19日に桐Ver.8をインストールしました。
動作テストをかねて一括処理を作成してみました。
(分数の”/”表示は表示しません。)
(もし必要であれば項目計算で可能です。)

概要として
「Syuuke.tbl」にデータを複数行入力します。
「分子1」「分母1」「分子2」「分母2」にデータを入力
分数の加算を項目計算で「分子」「分母」に表示
一括処理で約分を実行、結果を「結果分子」「結果分母」に表示

うまく動作しなかったらごめんなさい。

* 条件選択([分母1]≠[分母2],[分子1]*[分母2]+[分子2]*[分母1],
* 1,[分子1]+[分子2])を[分子]とします。
*
* 条件選択([分母1]≠[分母2],[分母1]*[分母2],1,[分母1])
* [分母]とします。
*
* 結果を[分子]、[分母]へ結果を代入します。
* [最大公約数]は動作確認用です。
* [分子数]が大きい場合、集計に時間が掛かると思います。(遅くてすんません)

変数宣言 固有,数値{&計算行,&最小,&最大,&調査値,&フラグ,&終了結果}
変数宣言 固有,文字列{&集計表}

代入 &集計表="Syuukei.tbl"
表 &集計表
繰り返し &計算行=1,#総件数,1
ジャンプ 行番号=&計算行
代入 &フラグ=0 /* 最大公約数の有無を判定 */
代入 &最小 = 2 /* 最大公約数の最小、1以外は2とする */
代入 &最大 = [分子] /* 最大公約数の最大、[分子]の場合有り */
/* 分子数から2まで繰り返し(増分:マイナス1) */
繰り返し &調査値=&最大,&最小,-1
/* 分子、分母を同じ数字で除算チェック */
if(#MOD([分子],&調査値)=0 .AND #MOD([分母],&調査値)=0 )
代入 &フラグ=1
手続き実行 約分可能
繰り返し中止
end
繰り返し終了
/* 約分不可のチェック */
手続き実行(&フラグ=0),約分不可
繰り返し終了
終了

/* 約分可能な場合の処理 */
名札 約分可能
行訂正 終了状態=&終了結果,[結果分子] = [分子] / &調査値
行訂正 終了状態=&終了結果,[結果分母] = [分母] / &調査値
行訂正 終了状態=&終了結果,[最大公約数] = &調査値
代入 &フラグ=1
手続き終了

/* 約分不可能な場合の処理 */
名札 約分不可
行訂正 終了状態=&終了結果,[結果分子] = [分子]
行訂正 終了状態=&終了結果,[結果分母] = [分母]
行訂正 終了状態=&終了結果,[最大公約数] = 1
手続き終了

戻る