952 :
949:2007/11/05(月) 14:55:41
同業者がいたようですね。
指摘ありがとうございます。
>>946 D
#include<stdio.h>
#include<math.h>
int main(void){
double x;
for(x=0;pow(3,x)<7;x+=0.00001);
printf("%.5lf < x <= %.5lf\n",x-0.00001,x);
return 0;
}
[1] 授業単元:
[2] 問題文:
正四面体があるとする。底面(ある一つの面)に平行な(n-1)枚の面で高さをn等分することを考える。この作業を他の面に平行な面でも行う(他の方向にもn等分する)場合、正四面体は全部で何個に分けられるか。
nの入力に対してその個数を求めるプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: どちらでも可
[4] 期限:11月7日AM10:00
[5] その他の制限: 基本的なことは大体習いました。
よろしくお願いします。
nの三乗じゃないの?
957 :
デフォルトの名無しさん:2007/11/05(月) 16:58:00
配列の入力の時に,EOFだと-1入力で終了になりますよね?
改行で入力終了にしたいのですが,どうすればいいですか?
1 1 0 0 1 0 1 1 改行
で入力を終了したいです。
教えてください。よろしくお願いします。
//---- 配列入力
num = 0;
do {
scanf("%d", &arr[num]);
} while ( arr[num++] != EOF ); // 改行は入力の終了
num--; // 有効な入力数
>>957 scanf()は改行で入力を終了するのに適しない。
fgets()とsscanf()を組み合わせろ。
961 :
デフォルトの名無しさん:2007/11/05(月) 17:59:43
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):Q-learningを用いて電力の需要家と供給家が最適な入札を選択するプログラムを作りなさい。
[3] 環境
[3.1] os: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:11月7日 12時
[5] その他の制限:
>>955 >>956の言うとおり、
まず、一辺がaの正三角形四枚からなる正四面体の体積は V0 = (sqrt(2) * a^3) / 12 。
ここでn = 2 とすると、分割後の一つの小正四面体の体積は V2 = (sqrt(2) * a^3) / 96 。
V0 : V1 = 8 : 1
他の場合も同様にしてnの三乗
[1]授業単元:経路選択アルゴリズム
[2]問題文:任意の2ノード間の最短路と最短最大路を求めるアルゴリズムを実行するプログラムをC,C++いずれかの言語で作成せよ
[3]環境:
[3.1]os:windows
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C,C++
[4]期限:11月8日 午前9時
[5]その他の制限:
最短路:各リンクeに非負の重み L(e)が与えられている時、あるノードsからノードdへの経路に含まれるリンクについてこの重みの総和ととったものを経路の距離と言う
ノードsからノードdへの最短路とは、ノードsからdへの経路のうちで最小のものを言う。
最大路:各リンクeに非負の重みB(e)が与えられている時、あるノードsからノードdへの経路に含まれるリンクのうち、この重みが最小であるものをボトルネックと言う。
最大路とはこのノードsからノードdへの経路のうちでボトルネックの持つ重みが最大のもののことである
>>955 main(){
int n;
printf("n=");
scanf("%d",&n);
printf("%d\n",n*n*n);
}
965 :
デフォルトの名無しさん:2007/11/05(月) 19:14:08
>>963 頂点(a,b)ごとにL(a,b) bpsが与えられているとして
もと、頂点0からN+1 (N+1が最後の番号とする) へ移動するなら、
頂点の経由数K=0,1,2・・・ごとに1からNの頂点を挿入する
この個数は、P(K,N)個ある 重複なるえらんだ順列
966 :
デフォルトの名無しさん:2007/11/05(月) 19:35:08
訂正
頂点(a,b)ごとにB(a,b) bpsが与えられているとして
L(a,b) = 1/B(a,b)とする 通信速度が0ならばそこの負荷は無限大 通信不可能
>>963 最大路の定義は明確だが、
最短最大路の定義が不明瞭。
969 :
デフォルトの名無しさん:2007/11/05(月) 20:32:45
そういえば次は99代目だ
>>969はテンプレとトリップを使おうね。
973 :
963:2007/11/05(月) 20:44:09
説明文がわかりずらくてすいません
最大路の中から最短路を選ぶって事です
>>973 長さKの順列をリストアップ出来ればあとは簡単だろう
>>963 重み付きグラフの最短経路問題ならダイクストラ法で解けばいい。
ちょうど B = 1/L なので、最大と最短両方が同じアルゴリズムで解けることになる。
>>963 >>973 >最大路の中から最短路を選ぶって事です
最大路が一本だとすると、「その中から」選ぶことは出来ない。路は一本しか。
最大路が複数だとすると、ボトルネックの重さは各最大路において等しくなる。じゃないと「複数の最大路」っていう仮定が崩れる。よって選ぶことは出来ない。
つまり、最大路の中からは最短路は選べない。
978 :
aho:2007/11/05(月) 20:59:06
>>974 前にも来たろ!
クラスの中身とやらも晒せ!
どうせ前みたく出来あがってんだろ!
これが何で宿題なんだよ!
>>977 ボトルネックの値が同じ小ささの中で、経路の和が最短の物は選べる
980 :
955:2007/11/05(月) 21:20:09
>>956>>962>>964 回答ありがとうございます
ですが……おそらく、非常に厄介なことに、それぞれの小片が正四面体にはならないと思います
(n=2の時を考えてくれれば分かりやすいかもしれません
それぞれの角を切り落とす形なので5個(≠2^3)に分かれると思います)
あくまでそれぞれの面に平行な面での分割ですので……
981 :
aho:2007/11/05(月) 21:30:36
>>980 違ってたらごめんなさい。
問題文に”n等分する”とあるから、出来るのは正四面体なんじゃないのかな?
981
どうやって各ブロックが四面体だとわかるんだ?
983 :
aho:2007/11/05(月) 21:39:22
>>982 すまん。もう少し考えてから出直してくる。
984 :
955:2007/11/05(月) 21:40:54
すいません、はっきり書くべきだったのかもしれませんが、n^3でないことは確かなんですよ……
もしかしたら私の問題の説明が曖昧だったせいかもしれませんが……補足要求があったら言ってください
5,14,30,55…が答えでいいのかな?
平面ごとに見れば、頂点の部分から数えて、1、4、8、16・・・個ずつの三角形がある
その中心から見て正四面体としての面がちゃんとあるかチェックすればいいのでは?
平面の方程式を考えて
987 :
955:2007/11/05(月) 22:02:00
ああ、というか、すみません
後出しで悪いですが、プログラム中で図形的?に求めてください……
あらかじめ式を出すのではなくて……
988 :
デフォルトの名無しさん:2007/11/05(月) 22:06:40
たとえば986のようにチェックするって事?方程式を立てて保存して内部かどうかの判定すればできるけどめんどそう
989 :
デフォルトの名無しさん:2007/11/05(月) 23:07:28
[1] 授業単元:C
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5213.c リンク先の/*↓ここから各自のプログラムを挿入する*/
/*↑ここまで各自のプログラムを挿入する*/
の間に、三目並べでこちらが先攻で○の時、
引き分けになる(コンピュータが負けない)プログラムを書く
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Visual Studio2005
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 水曜日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
990 :
aho:2007/11/05(月) 23:41:07
>>989 きれいではないが単純な、アルゴリズムは考えた。
縦・横・斜めの列で'0'が2つ揃ったら、その列の残り1つに'X'を置く。
例として、1行目に注目する。
if((ch0 == '0') && (ch0 == ch1)){
ch2 = 'X';
if((ch1 == '0') && (ch1 == ch2)){
ch0 = 'X';
これを残りの7列についても記述してやればいいんじゃない?
これより先は、実装が面倒なのでここでやめます。
ポインタが使えるなら、もっときれいに書けるよ〜
991 :
aho:2007/11/05(月) 23:42:09
>>990 ごめんなさい。
if文の終わりに括弧付け忘れました。
>>963 なんか混乱してる人が居るみたいだけど・・・
グラフに二種類の辺重み L(e), B(e) が与えられたとき,
・パスの長さを ΣL(e) で定義したときの最短パスを「最短路」
・パスの長さを max B(e) で定義したときの最長パスを「最大路」
と言ってるんだよね?
993 :
992:2007/11/06(火) 00:21:44
ごめん嘘.最大路は min B(e) で定義したときの最長パスだよね?
995 :
デフォルトの名無しさん:2007/11/06(火) 01:53:20
テンプレに従って書かないと
ここの住人さんは絶対に解答してくれません
997 :
デフォルトの名無しさん:2007/11/06(火) 02:52:53
Floyd-Warshallって凄い簡単だけど、知らないと思いつかないな
2点間の距離を、他を経由した方が短ければ置き換えるって言う普通のことだけど・・・なかなか思いつかないな
998 :
997:2007/11/06(火) 03:47:17
でも計算順序によっては値が変化しないか? かわらなくなるまで計算し続ければ良さそうだけど
>>997-998 計算順序によらないよ.大雑把に言うと Floyd-Warshall は
(u,v の w まで経由してよい最短経路) =
min { (u,v の w-1 まで経由してよい最短経路)
(u,v を w を経由する最短経路) }
という漸化式を動的計画法で計算しているのであって、
「短くなったら置き換える」というのとは本質的に違う.
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。