• ベストアンサー

複数の数字を吐き出す関数(FileMaker)

ファイルメーカーを使っていて、複数の数字を吐き出す関数が作りたいのです。 数字AとBという入力欄があり、AからBまでの整数値を吐いてくれる関数はどう作ったらよいでしょうか。 ・具体的には、4月~6月と入力して4,5,6と出したいのです。 ・12月~3月と入力して、12,1,2,3(または1,2,3,12)と出したいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★お詫び >これを実行してしまうと、 >10月~2月まで咲く花が、10・11・12・1・2と吐かずに >2・3・4・5・6・7・8・9・10と吐いてしまいませんか??  ↑  そうでしたね。 ・では考え方を改めてます。  10月~2月の場合は2月に12ヶ月を加えて14月として処理します。  すると簡単に10月~14月をループして  (変数) (表示部)  10⇒10月  11⇒11月  12⇒12月  13⇒13月-12月⇒1月  14⇒14月-12月⇒2月  と表示部で13以上の数は12月分を引いてから表示するようにします。   ・下に擬似言語でまた記述します。  A=10月 ←最初の数字  B=2月  ←最後の数字    if ( A > B ){   B = B + 12; ←12月分を加算  }  while ( A <= B ){   if ( A > 12 ){    /* A-12 の数字を表示 */   }   else{    /* A の数字を表示 */   }   A = A + 1;  }  ↑  C言語風で記述してみました。  『ファイルメーカー』に while 文ってありますかね。  なかったら Loop~Loop End と If~EndIf と組み合わせて下さい。 ・以上。

raryrary
質問者

お礼

whileが無いのです…。 でもわざわざお答えくださってありがとうございました。

その他の回答 (2)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・『ファイルメーカー』ってデータベースの管理ソフトなんですね。  検索して今さっき知りました。 ・それでスクリプトの編集画面で制御関数?を使って出来ると思います。  スクリプトステップ欄に If、Else、End If、Loop、End Loop が用意されているので  繰り返し文を構成して数字 A から数字 B までの整数値を吐く関数を作ります。  ただし、数字 A と数字 B を比較して必ず小さい数から大きい数の順に整数値を吐き出す  ように If 関数を使って分岐処理させます。分かりますかね If とか? ・演算子も用意されているので If と組み合わせて使います。  文法がよく分からないので擬似言語としてサンプルを載せます。 サンプル: A ←数字 A が入っているとする B ←数字 B が入っているとする C ←新しい変数(変数って使えるのかな?) If A > B  C = A ←数字 A を一時変数 C に代入  A = B ←数字 A に数字 B を代入  B = C ←数字 B に一時変数 C を代入  ↑  この3行で数字 A と数字 B を交換する仕組みです。 End If ここから下が小さい数から大きい数を吐き出す処理 Loop  If A <= B   A の整数値を吐き出す   A に +1 加算する  Else   現在のスクリプト終了  End If Loop End 最後に: ・上記のサンプルを元にスクリプトの画面を編集して下さい。  考え方は小さい数(A)から順番に整数値を吐き出して、大きい数(B)までを繰り返すように  スクリプトを記述すればよい。繰り返しは Loop~Loop End で構成すると思いますが、  念のためマニュアルなどで確認して下さい。また、処理の分岐も If~Else~End If で  構成すると思いますが、こちらも確認して下さい。  私は『ファイルメーカー』を今日のさっき知ったので記述の仕方は分かりませんが、  プログラミング経験者としてアドバイスしてみました。参考にどうぞ。 ・以上。

参考URL:
http://www.ken.ne.jp/fm/l24/l24-2.html
raryrary
質問者

補足

遅くなりまして申し訳ありません。 If A > B  C = A ←数字 A を一時変数 C に代入  A = B ←数字 A に数字 B を代入  B = C ←数字 B に一時変数 C を代入 これを実行してしまうと、 10月~2月まで咲く花が、10・11・12・1・2と吐かずに 2・3・4・5・6・7・8・9・10と吐いてしまいませんか??

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★補足要求します。 ・最初にお聞きしますが、プログラミング言語は何ですか?  これが分からないとアルゴリズムのみのアドバイスになります。 ・以上。待っています。

raryrary
質問者

補足

申し訳ありません。遅くなってしまいました。 言語までの詳細は分かりかねます…ごめんなさい。 エクセルレベルの関数を使い分ければ出来ると思っていたもので。 もし出来そうにないなら諦めます。 今は、case関数を使って、 ( x=y ; x ; abs(x-y)=1 ; x¶x+1 ; abs(x-y)=2 ; x¶x+1¶x+2 …) と書いています。

関連するQ&A