10/02/24 02:31:33
Write a program to sum the following series:
(これらを合計するプログラムを書きなさい)
1/3 + 3/5 + 7/9 + 9/11 + 11/13+..........+95/97 + 97/99
途中までこんな感じでやったのですがもう何がなんだかさっぱり・・・
public class Quiz2 {
public static void main(String[] args) {
int sum = 0;
int num = 1;
int den = 3;
for(int x = 0; x < 100; x++ ) {
if(x % 2 == 0) {
x = num / den;
sum = sum + x;
}
}
System.out.println("Sum is " + sum);
}
}
よろしくお願いいたします。
906:デフォルトの名無しさん
10/02/24 02:45:10
double sum = 0.0;
for(int i=0; (i * 2 + 3)<100; i++){
int 分子 = i * 2 + 1;
int 分母 = i * 2 + 3;
sum += (double)分子 / 分母;
}
System.out.println("合計: " + sum);
こねくり回せばもっと効率の良い書き方はあるが。
907:デフォルトの名無しさん
10/02/24 03:03:54
>>906
ありがとうございます。
そのやり方で試してみます。
908:905
10/02/24 03:18:03
>>906
public class Quiz2 {
public static void main(String[] args){
double sum = 0;
for(int x = 0; (x*2+3)<100; x++) {
int numerator = x*2+1;
int denominator = x*2+3;
sum = sum + (double) numerator / denominator;
}
System.out.println("Sum is " +sum);
}
}
合計は1683となりました。
ありがとうございました。
909:デフォルトの名無しさん
10/02/24 08:59:08
>>908
ちょっと待て。その結論はおかしい。
910:デフォルトの名無しさん
10/02/24 10:48:16
>>908のコードをコピペして実行しても
1683なんて答えは得られないじゃねーか
sum = sum + (double) numerator / denominator;
↓
sum = sum + (double) numerator / (double)denominator;
にしろ
911:デフォルトの名無しさん
10/02/24 17:48:49
>>910
w
912:デフォルトの名無しさん
10/02/24 22:24:29
【 課題 】アプレットで作品をつくる
【 形態 】2. Applet/
【 期限 】2月26日
【 補足 】初心者です。お手柔らかにお願いします。
javaアプレットで
画像を12枚取り込んで、
そのうちの5枚を並べて表示、
1秒ごと10%の確率で
各画像を変更したいのですが
どうしたらいいのでしょうか・・・。
画像を取り込むところまでできています。。。
913:デフォルトの名無しさん
10/02/25 00:30:12
>>912
その画像を取り込むところまで見せてもらおうか
それとテンプレ必須項目くらいは埋めようぜ
> 1秒ごと10%の確率で
表示されている5枚それぞれについてサイコロを振って換えるかどうか決めるってことでいいの?
914:デフォルトの名無しさん
10/02/25 03:59:34
>>912
画像ファイルはクラスファイルと同じ場所にあるimage00.jpg~image11.jpgの12枚
1秒毎に各画像ごとに10%の確率で画像を変えているのでどの画像も変わらない確率が秒毎にC(5,0)*(0.1^0)*(0.9^5)=約60%ある
import javax.swing.*;
public class Hoge extends JApplet implements java.awt.event.ActionListener {
private java.util.List<ImageIcon> pool = new java.util.LinkedList<ImageIcon>();
private Timer timer = new Timer(1000, this);
private JLabel[] label = new JLabel[5];
@Override public void init() {
setLayout(new java.awt.FlowLayout());
for (int i = 0; i < 12; i++) pool.add(new ImageIcon(getImage(getCodeBase(), String.format("image%02d.jpg", i))));
java.util.Collections.shuffle(pool);
for (int i = 0; i < 5; i++) add(label[i] = new JLabel(pool.remove(0)));
}
@Override public void destroy() {
getContentPane().removeAll();
pool.clear();
}
@Override public void start() { timer.start(); }
@Override public void stop() { timer.stop(); }
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 5; i++) {
if (Math.random() >= 0.1) continue;
pool.add((ImageIcon)label[i].getIcon());
label[i].setIcon(pool.remove(0));
}
}
}
915:デフォルトの名無しさん
10/02/25 06:52:19
>>905
最後に5/7を引かないといけないそうです。
スレリンク(tech板:757番)
916:デフォルトの名無しさん
10/02/25 20:09:35
>>905
通分しないと誤差が出るんじゃないかと
URLリンク(rg550.hp.infoseek.co.jp)
917:デフォルトの名無しさん
10/02/26 02:51:14
>>916
多分そういうのも考慮しろっていう問題だよねえ。
918:916
10/02/26 18:00:26
せっかくなんでFraction.javaをまともに実装してみた
正直まともにテストしてない
URLリンク(rg550.hp.infoseek.co.jp)
919:デフォルトの名無しさん
10/02/27 00:27:14
>>918
普通にやった場合と、どの位の差がでるの?
920:デフォルトの名無しさん
10/02/27 03:47:49
>>919
916ではないけれど3通りほどの方法で
URLリンク(rg550.hp.infoseek.co.jp)
このくらいの違い
921:920
10/02/27 03:56:31
間違った
小さいもの順の足し算なので
while (x.size() > 1) x.add(x.pollFirst() + x.pollFirst());
System.out.println(n - x.first() * 2);
に修正^^;
922:デフォルトの名無しさん
10/02/27 04:24:17
一番目の方法はうちの環境では
44.410164588764474
と表示されるけど小数点以下の部分だけ出すなら
System.out.println(4 - x.first() * 2);
にすると
.41016458876447004
なので
.410164588764470250...
にさらに近づくかな
923:デフォルトの名無しさん
10/02/27 12:40:50
キーボードから5人分の点数を入力して、合計、平均、最高点、最低点を
表示するプログラムを作成してくださいというものです。
今は途中で終わっています
URLリンク(rg550.hp.infoseek.co.jp)
お願いしますm(_ _)m
924:デフォルトの名無しさん
10/02/27 13:26:53
>>923
>>1くらいよめ
925:デフォルトの名無しさん
10/02/27 16:38:11
>>923
URLリンク(rg550.hp.infoseek.co.jp)