ID非公開
ID非公開さん
2021/3/4 12:32
1回答
C++プログラミング 写真のフローチャートが正しいかどうか教えて下さい。
C++プログラミング 写真のフローチャートが正しいかどうか教えて下さい。 課題で、 読み込んだファイルに書かれた三角形の3つの辺の長さを計算によって直角三角形かどうかを判別するプログラムのフローチャート を作成しました。 これで提出しても問題なく満点の採点がもらえるでしょうか? 不安な点としてはひし形内の条件文が複数になってしまう事です。 問題には、ファイルから読み込まれる辺の長さはどの順番でも良いとあるので、3通り記述しないとかなと思って以下のように作ったのですが、これで提出しても減点はないでしょうか?
ベストアンサー
はじめのところは、この直角三角形とは別の質問に回答した件へ、追加で聞かれたことへの返答。 >つまりこちらだと満点でしょうか? 絶対に満点かどうかは、この問題の背景も関係するので、確約できません。 採点者が求めている答えが、既に回答した中の「まとめ:」に書いた 『データ入出力の、さらなる強調として、どのような入出力機器かも明示したい』 なら、print処理に該当する「個別データ記号」(添付図の左側)を使っていない分だけ減点されるでしょう。 そこまで求めていないなら、満点かもしれません。 この問題が学校で出題されたもので、添付図の記号についての説明が授業の中であったなら、または、学校の方針が「参考資料などを自発的に読んで知識を習得しなさい」であったなら、減点されるかも。 この問題が何らかの試験に出題されたものなら、どこまで詳細に書けば満点かは、過去問で判断してください。 ================================ ここからは、この直角三角形に対する回答。 >ファイルに書かれた三角形の3つの辺の長さを計算・・・ >・・・辺の長さはどの順番でも良いとあるので、3通り記述しないと・・・ 最初の問題で扱う数値は、「入力された整数が偶数か奇数か」とあるので整数でしたが、この問題には「三角形の3つの辺の長さ」としか書かれていません。 文章通りに解釈すると実数値も扱うことになるので、その方が「3通り記述」の件よりも重大です。 なお、「三角形の3つの辺」とあるので、三角形を構成できないa,b,c(5,5,8や、0,0,0など)は入力されないものとします。 ●「double/float型の正しい比較方法」の件 一般的な数値の扱いでは、コンピュータ内での実数は浮動小数点数になるので、実数どうしの数値比較では「a*a==b*b+c*c」を使いません。 じぶんで定めた微小数や、C言語ならfloat.hで定義されている微小数DBL_EPSILONを使い、浮動小数点数の誤差を考慮した、下記の比較を行います。 fabs(a*a-(b*b+c*c))<DBL_EPSILON または fabs(a*a-(b*b+c*c))<=DBL_EPSILON オリジナルの問題が、このことの考慮も求めているなら、大幅な減点でしょう。 浮動小数点数の誤差は、考慮しなくてもよいなら、満点かもしれません。 下記の「3通り記述の件」については、回答者の好みで、どの記述スタイルを選んでもよく、減点にはならないでしょう。 ●3通り記述の件 思いつくところでは、次のような書き方がありますが、どれを選んでも問題ない(減点されない)と思います。 ア.大きさ判定を3つ書く イ.最大長の辺を求める処理を行ってから、大きさ判定は1つにする。 まず最大長を求めて、変数MAX_Edgeにセットし、それ以外はEdge1とEdge2にセットしてから、大きさ判定する。 ウ.最大長の辺を求める処理は関数化し、その出力を使った大きさ判定は1つにする。 内容はイ.と同じだが、MAX_Edge、Edge1、Edge2を求める処理を関数化し、フローチャートはメイン用(添付図の右側)と、関数用の2つを書く。こうするとで、メインが行う処理の表現が簡素化される。 添付図
「●3通り記述の件」への追加。 最大値を求める方法は、a,b,cを2つずつ判定する処理を繰り返したり、 C言語のfmax関数を使って「fmax(a,b)>cならfmax(a,b)が最大、 そうでなければ cが最大」をそのままコーディングしたり、 上の処理を3項演算子による記述で (fmax(a,b)>c)?:(Egde_Max=fmax(a,b)):(Edge_Max=c); と書くこともできます。 なお、フローチャートは、必ずしもプログラム言語で書かねばならないというわけではありません。 一般的には、日本語で処理内容を書くことも許されます。
質問者からのお礼コメント
とても詳しいご回答本当にありがとうございました! もっともっと勉強が必要だと感じました... しかし詳しく教えてくださったおかげでかなり理解が進みました!! 本当にありがとうございました!!
お礼日時:3/5 6:14