• 締切済み

緊急!アルゴリズムについて困っています!!

学校の授業でこのような問題が出たのですが全くわからずに大変困っています… (1)図(画像)のフローチャートに示すアルゴリズムをJava言語で作成しなさい。ループの繰り返し回数は個人で判断すること。また、BigDecimalなどの多倍長精度の演算を用いること。 (2)このアルゴリズムは何を算出するものか答えてください。 (3)このアルゴリズムの名称を答えてください。 本当に何もわからなくて困っています… 助けてください!!

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

まず、中学~高校くらいの数学はわかってる前提で作られている問題だと思いますので、ユーチューブとかで中学の数学を解説してる動画とかをみてその辺の復習をする必要があるかもです。 それから、今の問題が出る授業の教科書をみて「フローチャート」のそれぞれの枠の形が何を表しているか確認してみる。 教科書とかに「変数」と「ループ処理」の簡単な説明があると思うので、そこも確認してみる。 すると、何の問題なのか少しわかるようになるんじゃないでしょうか。

関連するQ&A

  • フローチャートのループ

    フローチャートのループ記号の中に書く条件って ループを抜ける処理を書くのでしょうか? それともループを続ける処理を書くのでしょうか? どちらかで符号が変わってきてしまうので… プログラミング言語を書くときは、続ける条件を 書く事が多いように思えますが、アルゴリズム等の 文献では抜ける処理とか終了条件と書いてあるので 混乱してしまいました。より一般的にはどちら なのでしょうか?フローチャートを書くときの約束事 などありますでしょうか?

  •  Javaでのある数の小数点乗について

     Javaでのある数の小数点乗について  数学での計算をJavaを使って計算している所です。Javaの中でもDoubleを使うのではなく、BIgDecimalクラスを使って計算をしています。しかし、BigDecimalの値をBigDecimal乗するという事は出来ないですよね? Math.powを使えばDouble型のDouble乗は出来ますが…  そこで、任意の精度で小数点の小数点乗を求める方法は無いでしょうか? 必要ないかもしれませんが参考までに 言語:Java OS:MacOS 10.5

    • ベストアンサー
    • Java
  • 探索アルゴリズムの名称について

    以下の探索もしくは組み合わせのアルゴリズムに名称があるのかを教えていただければ幸いです. ある変数a1,a2,a3・・・,b1,b2,b3・・・があり(それぞれ小さい順にソートされている), このaとbにより影響する評価関数が最小となる最適な組を探索するアルゴリズムです. (1)まずa1・b1のペアを用いた時の値を算出する. (2)次にa2・b1のペアとa1・b2のペアでの値をそれぞれ算出し,小さい方を見つける. (今回はa1・b2のペアの方が小さかったとします.) (3)次にa2・b2のペアとa1・b3のペアでの値をそれぞれ算出し,小さい方を見つける. (2),(3)の様な処理を繰り返し行い,最小となるa・bの組を探索する. 以上の様なアルゴリズムなのですが,名称があるのかをお聞きしたいと思います. 言葉で書くとイメージしづらいですが,小学・中学ぐらいで勉強した最短経路問題のように 格子状の図を書くと分かりやすいと思います. 二方向のみをみて探索していきます. 個人的には,二分木探索に近いと思うのですがどうでしょうか? ただ,進み方によっては,同じ組み合わせを探索する事も出来るので, 完全な二分木探索ではないような気がします. 皆様のお力をお貸しいただければありがたいです. お願いいたします.

  • 偏りのある乱数のアルゴリズム

    偏りのある乱数のアルゴリズム(コード)を教えてください。 ただし、中心極限定理などに見られるような「中心にのみ偏る」乱数ではなく、「任意の位置を中心に偏る」乱数です。例えば、範囲を0.0<1.0、任意の位置を0.75とした場合の分布グラフを見ると、0.75がカーブの頂点となります。 また一方で、複数の偏りが見られる乱数のアルゴリズムも知りたいです。カーブが心電図のように複数見られる乱数です。ビットマップ上にプロットすると、部分的に点の集合が形成されるようなものが理想的です。 ※プログラミング言語・精度・速度は不問。本人数学に関しては素人です。

  • フローチャートの解き方?について

    学校で人工言語学という授業を取っているのですが、フローチャートの回の授業を休んでしまい、三日後にテストなのに全く理解できません。 ネットで色々と調べたところ、フローチャートとはプログラムを図で表したものという風に理解しているのですが、授業で渡されたプリントの図を見ても何を問いたいのかが分かりません。 以下に図を記述します。 開始 ↓ 10⇒B(処理1) ↓ 0⇒A(処理2) ↓ A+B⇒A(処理3) ↓ B-1⇒B(処理4) ↓ B=0(判断) (YESなら終了、NOなら処理3へ戻る) どうやらこの図を参考にしてAとBの下に数字を並べていき答えを出していくらしいのですが、何を意味する図なのかすら分かりません。 すごく初歩的なことなのでお恥ずかしいですが、どのように解いていくのかを初心者にも分かるように説明していただけないでしょうか。 宜しくお願いします。

  • うるう年判定のアルゴリズム

    javaでうるう年判定のプログラムを作成しています。 プログラム自体はサーバにアップするときに実行結果が正しいかどうかテストされます。 仕様としては、 1.時間に関するAPIなどは一切使わずに完全に自作 2.入力される値はLong型の"秒"数(APIで提供されているのはミリ秒ですが) 3.60537895631062456L などの入力値に対して、年/月/日 (曜日) 時:分:秒 yday=元旦からの経過日数 を出力 最初は以下の関数を使用してループをかけていたのですが、仕様3の入力値に対して50秒近くかかってしまい、上手くいきませんでした。 public static int isLeap(int year){ if(year%4==0 && (year%100!=0 || year%400==0)) return 1; return 0; } 問題点はループ回数が多いことで、作る時点で分かってはいたのですが、ここまで遅くなるとは思っても見ませんでした。 これを使わない方法としては、一回だけうるう年(=n)を見つけ、その後は「(n+4)との比較+100で割り切れず400で割り切れる場合は別」という処理を行うことによって、処理時間を30秒付近にまで短縮することができたのですが、どうも10~15秒以内で終わらせなければテストにパスすることができないようです。 なんとか色々考えてはみたものの、上手いアルゴリズムは思いつきませんでした。 うるう年を処理するための"高速な"アルゴリズムはないのでしょうか。 お知恵を貸してください。よろしくお願いします。

    • ベストアンサー
    • Java
  • うるう年判定のアルゴリズム

    javaでうるう年判定のプログラムを作成しています。 プログラム自体はサーバにアップするときに実行結果が正しいかどうかテストされます。 仕様としては、 1.時間に関するAPIなどは一切使わずに完全に自作 2.入力される値はLong型の"秒"数(APIで提供されているのはミリ秒ですが) 3.60537895631062456(Long値) などの入力値に対して、年/月/日 (曜日) 時:分:秒 yday=元旦からの経過日数 を出力 最初は以下の関数を使用してループをかけていたのですが、仕様3の入力値に対して50秒近くかかってしまい、上手くいきませんでした。 public static int isLeap(int year){ if(year%4==0 && (year%100!=0 || year%400==0)) return 1; return 0; } 問題点はループ回数が多いことで、作る時点で分かってはいたのですが、ここまで遅くなるとは思っても見ませんでした。 これを使わない方法としては、一回だけうるう年(=n)を見つけ、その後は「(n+4)との比較+100で割り切れず400で割り切れる場合は別」という処理を行うことによって、処理時間を30秒付近にまで短縮することができたのですが、どうも10~15秒以内で終わらせなければテストにパスすることができないようです。 なんとか色々考えてはみたものの、上手いアルゴリズムは思いつきませんでした。 うるう年を処理するための"高速な"アルゴリズムはないのでしょうか。 お知恵を貸してください。よろしくお願いします。

  • 平方根 ニュートン法について

    こんにちは。趣味でプログラミングをしているものです。 さっそくですが、質問させていただきます。 Javaで文具店などで1000円くらいで市販されている 電卓を再現しようとしているのですが、 質問させていただきたいのは、 平方根の計算についてです。 -------------------------------------------- まずは以下のメソッドのコードを見ていただきたいのですが・・・ このメソッドを用いて3の平方根を求めてみました。 private static BigDecimal sqrt( BigDecimal value ) { BigDecimal two = new BigDecimal( "2" ); BigDecimal x = value.divide( two ); BigDecimal last_x = BigDecimal.ZERO; BigDecimal gap = x.subtract( last_x ); BigDecimal range = BigDecimal.ONE.movePointLeft( 11 );//(a) //int cnt = 0;//(b) BigDecimal t; while( gap.compareTo(range) > 0 )//(c) //while( cnt < 20 )//(d) { last_x = new BigDecimal( x.toString() ); t = value.divide( x, 64, BigDecimal.ROUND_DOWN ); x = x.add( t ).divide( two ); gap = x.subtract( last_x );//(e) //cnt ++; //(f) } return x; } (a)(c)(e) を用いて実行すると 1.732142857142857142857・・・ と小数部分の142857 が循環する値になりました。 (a)(c)(e) をコメントアウトして (b)(d)(f) を用いて実行すると 1.732050807568877293527446341505872366942805253 810380628055806979425806427001953125 とwikipedia の「3の平方根」の記事の値と 記述されている範囲では同じ値が得られました。 -------------------------------------------- そこで質問なのですが、 (1) (a) (c) (e) を用いた場合には、正しい値を得られないのでしょうか? 条件に設定する値などを変えてもだめなのでしょうか? (2) 自分が作っている電卓では12桁の表示を予定しているのですが その場合、メソッド sqrt ないの cnt は while ループ内で いくつまで、インクリメントすればよいのでしょうか? (3) インターネットで調べたこのアルゴリズムは 「ニュートン法」だそうですが、 y = x^2 - C の グラフ、接線などを書いてみて ある程度理解できたのですが、 http://cpplover.blogspot.jp/2010/11/blog-post_20.html 上記サイトではこのアルゴリズムは バビロニア人の方法(Babylonian method) というものだそうですが、 バビロニア人は二次関数の微分はわかっていた、 ということでしょうか? -------------------------------------------- ご存知のかた、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • C言語の書き方

    倍精度の浮動小数点で与えられる4点の座標(x1,y1),(x2,y2),(x3,y3),(x4,y4)を入力して、その4点が頂点になる四角形の面積を算出して表示するプログラムのC言語での書き方を教えて下さいm(__)m

  • Java言語でノベルゲームを作りたいと思います。お勧めの参考書を教えて

    Java言語でノベルゲームを作りたいと思います。お勧めの参考書を教えてください。 学校の課題でJava言語を用いて一からノベルゲームを作ることになりました。 アルゴリズムを考える際の参考になる本を紹介いただけたらと思います。 また、ゲーム画面の作成でGUIについてもすこし学習したいと思っていますので、そちらについてもお勧めのものがありましたら紹介いただけたらと思います。 Javaプログラミングの知識については初心者に近くif文やループ、メソッドの分割程度しかやったことがありません。 注文が多くてて申し訳ありませんが、丁寧で難しすぎない内容のものを教えていただけると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう