• 締切済み

最大値に依存した処理の選択について

実数型の変数がa,b,c,d,e,fの6つがあり、その6つの内で例えば、bが一番大きいならば、こうする、というような処理を考えています(たいした問題ではないように見えます)。一番大きいものを選びだすことは簡単です。それをxとします。しかし、a,b,c,d,e,fのどれなのかわかりません。そこで、xとa,b,c,d,e,fを比べていき一致したら”それ”と決定できるのですが、2つの実数間で一致を照合するというのにまずさを感じています。なお、同じものがあったらどうするかという問題はあまり気にしません。先に見つかった方でいいのです。それは見つける順番で工夫できます。2つの実数の一致を検出するのは問題ないのでしょうか。みつからないというのが問題なのですが。当方は科学計算なのでフォートランなのですが、考え方が分かれば別言語の方法でも参考になるので考え方についてよろしくお願いします。そういう意味で処理系に依存した方法でないことを所望しますが。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.5

単純に if( b >=a && b >= c && b >= d && b >=e && b >= f ){ ここに処理 } という書き方もあります。言語はCです。変数の数が数個で固定で、判定しなくてはならないケースも数種類であるなら、これでもいいと思います。 セオリー通りなら、皆さんおっしゃるように、配列を使って、インデックスを保存する。 また、実数の比較に関しては、計算されたものに誤差が生じるということであって、代入されたものの比較には問題がないというのは先の方のおっしゃる通りです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

何らかの計算を行った結果と、別の値を比較する場合、誤差の影響で一致しない可能性があります。 例) double a, b; a = 0.1; b = 0.01; if (a*a==b) { printf("OK"); } ↑これは"OK"と表示されるとは限らない。 ただし、単なる代入の場合であれば、誤差の影響はないので、比較しても問題ありません。元々の数値に誤差が含まれる場合(例えば、ソース上で"0.01"と記述しても、実際には0.01ぴったりの値が表現できない、など)であっても、それは代入元の変数も代入先の変数も同じなので、内部データは一致しています。 例) double a,b; a = 0.01; b = a; if (a==b) { printf("OK"); } ↑"OK"と表示される どうしても心配なのであれば、各変数と最大値との差の絶対値を計算し、最小のものを採用すれば間違いないです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

もう一つの案というかアルゴリズム data[0]={0,a}; data[1]={1,b}; data[2]={2,c}; data[3]={3,d}; と、2重配列にしてしまい、 それ事ソートしてしまう! 例えば"d"が一番大きかった場合にソートした結果は data[0]={3,d}; となっていれば、「3」番だったのね!とすぐわかります!。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

abcdef の配列があるなら、それのINDEX用の配列を 012345 を作成して、シャッフルするのはこっち! どの言語でも同じですが。 data[0]=a;data[1]=b;data[2]=c;以下略 それと index[0]=0;index[1]=1;index[2]=2;以下略 を用意 その場合のxは x=data [ index [ y ] ]; で読み取るようにして、 バブルソートを、indexで行えば、あなたが欲しい最大値の 場所は、あくまで変わらないので、 index [ y ] が一番大きい数/またはソートにより一番小さい数 として求められます。 OKOK?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

a~f じゃなく、配列 v[0]~v[5] にデータを持っておけばいい。 こいつから最大値を持つ添え字:indexを求める。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 多変数関数の最大値

    7変数の多変数関数をf(a,b,c,d,e,f,g)=19a+18b+17c+16d+15e+13f+11gとする。次の3つ条件をすべて満たす時のfの最大値を求めよ (1)a,b,c,d,e,f,gは0≦a,b,c,d,e,f,g≦98を満たす整数 (2)a+b+c+d+e+f+g=98 (3)3a+4b+5c+7d+8e+10f+12g=544 この問題はどっかの問題集にあったものではなくあるものを求めるために自分で作った問題です。しかしいくらがんばっても自分ではどうすることもできません。この問題はどうすれば解くことができるのでしょうか?この問題を解けるようなフリーソフトを探しましたが見つかりませんでした。もし問題を解けるフリーソフトがあるならそれも教えて欲しいです。

  • 判別式の問題です。

    a>0, b>0, c>0, d, e, fは実数とする。任意の実数x, y, zに対して ax^2+by^2+cz^2+2dxy+2exz+2fyz>0ならば、行列式 | a d e | | d b f | >0 |e f c | が成り立つことを示してください。

  • 関数について。

    実数の定数a,b,c,d,eを係数にもつ2つの関数 f(x)=ax^4+bx^3+cx^2+dx+e g(x)=4ax^2+3bx-2(a-c) を考える。-2≦x≦2を満たす全ての実数xで f(x)≧g(x) であるならば、 max{|a|,|b|,|c|,|d|}≦|e| が成り立つことの証明を教えて下さい。

  • エクセル 複数の条件での比較 一致 。困ってます。

    こんにちは。 エクセルでデータの比較、照合の方法で困っています。 A~Cのデータにあわせて  D~Fのデータを照合したいのですが A列の番号とD列の番号が順不同になっており上手く照合ができません。 下記のようなデータが100件以上ありA,B,Cの三つの条件が全て一致するD,E,FのデータにあればOK,ひとつでも違っていればNGと表記させたいのですが、なかなかいい関数が思いつきません。 出来ればVBAではなく関数で表記をさせたいのですが、宜しくお願いいたします。 A  B     C       D E     F 1 りんご  青森 1 りんご  長野 3 みかん 和歌山    2   スイカ  千葉

  • 最大値最小値

    実数a,b,c,dについて、 a^2+b^2+c^2+d^2=1・・・(1) a+b+c+d=1・・・・(2) が成り立つとき、abの値の最大値最小値を求めよ。 次のように考えましたが、自信がありません。 よろしくお願いします。 a+b=s, ab=t とおく。 a,bを解とする方程式、x^2-sx+b=0 が実数解を持つから 判別式から、t=<s^2/4 ・・・(3) また(1)と(2)から、c+d=1-s、cd=s^2-s-t/2 c,dを解とする方程式、x^2-(1-s)x+(s^2-s-t/2)=0 が実数解を持つから 判別式から、t>=s^2-2s-1・・・(4) (3)(4)を満たすtの範囲から、最小値はs=1のときで、-2,最大値は(3)と(4)の交点から s=(4+2√7)/3のときで、(16+4√7)/9 何か条件を落としているような気がします。よろしくお願いします。

  • 微分の問題がわかりません

    f(x)=x^3+ax^2+bx+c (a,b,c,dは実数) が (ⅰ)f(-x+d)+f(x+d)=2f(d) (ⅱ)f(d)=-11 (ⅲ)f(x)は x=-1 で 極値5 をとる を満たすとき、 (1)a,b,c,dの値 (2)区間 p≦x≦q におけるf(x)の値域が 5p≦f(x)≦5q となるように実数p,qの値を定めよ。ただし p<-1, p<q とする。 という問題なんですが、 abcdの値は似たような問題は解けるんですが この問題はdの三次関数が発生してうまく解けません。 あと(2)の解法もなかなか思いつきません。 解法わかる方いましたらお願いします。

  • 最大値 最小値がわかりません。

    sin、cos、がわかりません。教えててください。 0°≦x≦180°において f(x)=1-2acosx-2sin^xとするとき (1)a=1のときf(x)の最大値はx=A度のときB            最小値はx=C度のときD (2)f(x)の最大値をM(a)としたときのM(a)の最小値は  a=EのときでFである。 以上のA~Fがわかりません。 教えてください。

  • 数学(数的処理) 整数

    毎度毎度ですが・・・ ヨロシクお願いします。 【問題】 次の(1)~(5)の関係式があるとき,gの最大値はいくつか。 (1)a,b,c,d,e,f,gはすべて自然数である。 (2)a,b,c,d,e,f,gはすべて異なるとは限らない。 (3)a,b,cはこの順に連続である。 (4)d+e+f+g=10 (5)a+d+e=b+e+f=c+d+f 【私の考え】 (3)よりa=b-1,c=b+1に置き換えたほうがいいということまでは分かるのですが・・・ どこを目標にして式を立てていけばいいのかが分かりません。 アドバイス・解法をよろしくお願いします。 ちなみに正解は「4」となります。

  • 3次関数が極値をもつ必要十分条件

    3次関数f(x)が極値をもつ⇔f'(x)=0が異なる2つの実数解をもつ なんですよね? これは、f'(x)=0が実数解α、β(α≠β)をもつとき、f(α)、f(β)は極値となる、ということにはならないんでしょうか? 例えば、 3次関数f(x)=ax^3+bx^2+cx+dがx=0で極大値2をとり、x=2で極小値-6をとるとき、定数a,b,c,dの値を求めよ。 という問題で、 x=0で極大値2をとり、x=2で極小値-6をとる⇒f'(0)=0、f'(2)=0 つまりf'(x)=0が異なる2つの実数解をもつのだから、しかもf(0)=2、f(2)=-6という条件も代入しているのだから、a,b,c,dを求めた後に確認をする必要があるというのが理解できません…

  • 高校数学の整数の問題です

    a,b,c,d,e,fを整数とする a+d=-60 b+e=-100 c+f=-120 これを満たすとき、a~fのうち最大のものをxとする。(たとえばb>a>c>d>e>fのときx=b,a=b>c>d>e>fのときx=a=b) xの値のうち最少の値はいくつか? 答えはx=-30なのですが やり方がわかりません教えてください

このQ&Aのポイント
  • HL-L3230CDWの廃トナーボックスを交換してもエラーメッセージが消えません。お使いの環境はWindows11で無線LAN接続。関連するソフト・アプリはありません。電話回線はなしです。
  • HL-L3230CDWの廃トナーボックスを交換してもエラーメッセージが解消されない問題が発生しています。お使いの環境はWindows11で無線LAN接続しており、関連するソフト・アプリは特にありません。電話回線は使用していません。
  • HL-L3230CDWの廃トナーボックスを交換した際にエラーメッセージが消えません。お使いの環境はWindows11で無線LAN接続しており、関連するソフト・アプリは使用していません。電話回線はありません。
回答を見る

専門家に質問してみよう