- ベストアンサー
このような配列の場合の計算法はどうすればいいのですか?
プログラミング言語(C言語、JavaScript、PHP)を勉強し始めたのですが、以下のような場合の計算法がわかりません。 もう2日悩んでいます…。 ■配列の中身が、3つあるとします。たとえば、array(10,20,30)とします。 このとき printf((10*20) + (20*30) + (30*10)); という計算式の結果を求めたいです。 ■配列の中身が、4つあるとします。たとえば、array(10,20,30,40)とします。 このとき printf((10*20*30) + (10*20*40) + (10*30*40) + (20*30*40)); という計算式の結果を求めたいです。 ■配列の中身が、5つあるとします。たとえば、array(10,20,30,40,50)とします。 このとき printf((10*20*30*40) + (10*20*40*50) + (10*20*30*50) + (10*30*40*50) + (20*30*40*50)); という計算式の結果を求めたいです…(何度もすみません)。 上記のように配列の中身の個数と値が未確定の場合はどのようなコードで計算させればよいのでしょうか?配列の個数は1~10個を想定しております。 C言語、JavaScript、PHPのどの方法でもアプローチ法は同じだと思うので、いずれかの言語でかまいませんのでアドバイス頂ければと思います。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
arrayの中に0がない場合は簡単にこんな感じで・・・ <?PHP $array=Array(10,20,30,40,50); $multi=1; foreach($array as $val) $multi*=$val; //すべての要素を掛け算する $sum=0; foreach($array as $val) $sum+=$multi/$val;//全てを掛けた数値からそれぞれを割ったものを合計する print $sum; ?>
その他の回答 (3)
- koko_u_
- ベストアンサー率18% (459/2509)
>上記のように配列の中身の個数と値が未確定の場合は これは実行時まで配列の個数が未定、実行する毎に配列の個数が 5個であったり 7個であったりするということですかね? javascript や PHP は知らんのでパスして、例えば C 言語なら int main(int argc, char* argv[]) {...} の argc に コマンドライン引数の個数が格納されるので C:\> calculate.exe 10 20 30 40 50 のようなユーザーインターフェイスで作るのが最も簡単です。 もちょっと「どんな使い方を想定しているか」を補足すると適切なアドバイスが得られますよ。
お礼
ありがとうございます! そのような個数の出し方もあるのですね。 現在格闘中ですが、なんとなくできてまいりました。
- k-pix
- ベストアンサー率51% (50/98)
読みにくいので注釈。 コードの5行目の条件式は、 j != i です。
お礼
わざわざありがとうございます。
- k-pix
- ベストアンサー率51% (50/98)
配列の要素数を n として、 sum = 0; for (i=0; i<n; i++) { product = 1; for (j=0; j<n; j++) { if (j!=i) product *= array[j]; } sum += product; } のようなカンジでいかがでしょう? 結果は、sum です。
お礼
ありがとうございます! うまくいきました。非常に短いコードで可能なのですね。 とても勉強になります。
お礼
ありがとうございます! バッチリ動作しました!なかなかうまい方法がわからず、悩んでおりましたが たいへん助かりました。これで今日はかなり勉強が進みそうです。 みなさまどうもありがとうございましたm(_ _)m