C/C++の宿題を片付けます 97代目

このエントリーをはてなブックマークに追加
952949:2007/11/05(月) 14:55:41
同業者がいたようですね。
指摘ありがとうございます。
953デフォルトの名無しさん:2007/11/05(月) 14:59:51
>>952 同業者とかw
954デフォルトの名無しさん:2007/11/05(月) 15:25:42
>>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;
}
955デフォルトの名無しさん:2007/11/05(月) 16:04:31
[1] 授業単元:
[2] 問題文:
正四面体があるとする。底面(ある一つの面)に平行な(n-1)枚の面で高さをn等分することを考える。この作業を他の面に平行な面でも行う(他の方向にもn等分する)場合、正四面体は全部で何個に分けられるか。
nの入力に対してその個数を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: どちらでも可
[4] 期限:11月7日AM10:00
[5] その他の制限: 基本的なことは大体習いました。

よろしくお願いします。
956デフォルトの名無しさん :2007/11/05(月) 16:52:49
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--;                // 有効な入力数
958デフォルトの名無しさん:2007/11/05(月) 17:18:44
>>957
テンプレ読んで、関数の仕様把握しろ。
959デフォルトの名無しさん:2007/11/05(月) 17:45:12
>>957
scanf()は改行で入力を終了するのに適しない。

fgets()とsscanf()を組み合わせろ。
960デフォルトの名無しさん:2007/11/05(月) 17:49:06
>>930
そうです
よろしくお願いします
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] その他の制限:
962デフォルトの名無しさん:2007/11/05(月) 18:28:00
>>955
>>956の言うとおり、
まず、一辺がaの正三角形四枚からなる正四面体の体積は V0 = (sqrt(2) * a^3) / 12 。
ここでn = 2 とすると、分割後の一つの小正四面体の体積は V2 = (sqrt(2) * a^3) / 96 。
V0 : V1 = 8 : 1
他の場合も同様にしてnの三乗
963デフォルトの名無しさん:2007/11/05(月) 18:31:56
[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への経路のうちでボトルネックの持つ重みが最大のもののことである
964デフォルトの名無しさん:2007/11/05(月) 18:33:40
>>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ならばそこの負荷は無限大 通信不可能
967デフォルトの名無しさん:2007/11/05(月) 20:24:31
>>963
最大路の定義は明確だが、
最短最大路の定義が不明瞭。
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 97代目
http://pc11.2ch.net/test/read.cgi/tech/1193150915/
969デフォルトの名無しさん:2007/11/05(月) 20:32:45
SJISのテキストファイルを読み込んで、漢字はそのまま出力して、
ひらがなとカタカナは半角カタカナに変換し
その他の文字は半角空白に変換して出力せよ

コード表
http://qpon.quu.cc/pc/sjis.htm
http://qpon.quu.cc/pc/cord.htm
970デフォルトの名無しさん:2007/11/05(月) 20:34:56
そういえば次は99代目だ

>>969はテンプレとトリップを使おうね。
971デフォルトの名無しさん:2007/11/05(月) 20:38:14
>>967
最短路と最大路を求めよってことだろう
972デフォルトの名無しさん:2007/11/05(月) 20:38:50
>>968
C/C++の宿題を片付けます 99代目
http://pc11.2ch.net/test/read.cgi/tech/1194262698/
973963:2007/11/05(月) 20:44:09
説明文がわかりずらくてすいません

最大路の中から最短路を選ぶって事です
974デフォルトの名無しさん:2007/11/05(月) 20:45:08
[1] 授業単元:c++実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5212.txt
[3] 環境
 [3.1] OS: XP and VISTA
 [3.2] コンパイラ名とバージョン:visual studio2005
 [3.3] 言語: c++
[4] 期限: 11/8 10:00
[5] その他の制限: 特になし

よろしくお願いします。
975デフォルトの名無しさん:2007/11/05(月) 20:49:58
>>973
長さKの順列をリストアップ出来ればあとは簡単だろう
976デフォルトの名無しさん:2007/11/05(月) 20:50:06
>>963
重み付きグラフの最短経路問題ならダイクストラ法で解けばいい。
ちょうど B = 1/L なので、最大と最短両方が同じアルゴリズムで解けることになる。
977デフォルトの名無しさん:2007/11/05(月) 20:55:13
>>963 >>973
>最大路の中から最短路を選ぶって事です

最大路が一本だとすると、「その中から」選ぶことは出来ない。路は一本しか。
最大路が複数だとすると、ボトルネックの重さは各最大路において等しくなる。じゃないと「複数の最大路」っていう仮定が崩れる。よって選ぶことは出来ない。

つまり、最大路の中からは最短路は選べない。
978aho:2007/11/05(月) 20:59:06
>>974
前にも来たろ!
クラスの中身とやらも晒せ!
どうせ前みたく出来あがってんだろ!
これが何で宿題なんだよ!
979デフォルトの名無しさん:2007/11/05(月) 21:02:34
>>977
ボトルネックの値が同じ小ささの中で、経路の和が最短の物は選べる
980955:2007/11/05(月) 21:20:09
>>956>>962>>964
回答ありがとうございます

ですが……おそらく、非常に厄介なことに、それぞれの小片が正四面体にはならないと思います
(n=2の時を考えてくれれば分かりやすいかもしれません
それぞれの角を切り落とす形なので5個(≠2^3)に分かれると思います)

あくまでそれぞれの面に平行な面での分割ですので……
981aho:2007/11/05(月) 21:30:36
>>980
違ってたらごめんなさい。
問題文に”n等分する”とあるから、出来るのは正四面体なんじゃないのかな?
982デフォルトの名無しさん:2007/11/05(月) 21:36:02
981
どうやって各ブロックが四面体だとわかるんだ?
983aho:2007/11/05(月) 21:39:22
>>982
すまん。もう少し考えてから出直してくる。
984955:2007/11/05(月) 21:40:54
すいません、はっきり書くべきだったのかもしれませんが、n^3でないことは確かなんですよ……

もしかしたら私の問題の説明が曖昧だったせいかもしれませんが……補足要求があったら言ってください
985デフォルトの名無しさん:2007/11/05(月) 21:41:10
5,14,30,55…が答えでいいのかな?
986デフォルトの名無しさん:2007/11/05(月) 21:48:46
平面ごとに見れば、頂点の部分から数えて、1、4、8、16・・・個ずつの三角形がある
その中心から見て正四面体としての面がちゃんとあるかチェックすればいいのでは?
平面の方程式を考えて
987955: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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
990aho: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列についても記述してやればいいんじゃない?
これより先は、実装が面倒なのでここでやめます。
ポインタが使えるなら、もっときれいに書けるよ〜
991aho:2007/11/05(月) 23:42:09
>>990
ごめんなさい。
if文の終わりに括弧付け忘れました。
992デフォルトの名無しさん:2007/11/06(火) 00:19:21
>>963
なんか混乱してる人が居るみたいだけど・・・
グラフに二種類の辺重み L(e), B(e) が与えられたとき,
・パスの長さを ΣL(e) で定義したときの最短パスを「最短路」
・パスの長さを max B(e) で定義したときの最長パスを「最大路」
と言ってるんだよね?
993992:2007/11/06(火) 00:21:44
ごめん嘘.最大路は min B(e) で定義したときの最長パスだよね?
994デフォルトの名無しさん:2007/11/06(火) 00:52:33
>>963
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5215.cpp

まったくテストしてないが.アルゴリズムは次の通り.

1. 全頂点対について最大路を計算する(Floyd-Warshall).
2. 全頂点対について最短路を計算する(Floyd-Warshall).
3. 全頂点対について最大最短路を次のように計算する.
 3.1 最大路の情報から,ボトルネックとなりうる辺を列挙.
 3.2 ボトルネックとなる辺を使う経路を 2 の情報から計算.

実際計算しているのは辺長のみ.経路そのものの計算は
Floyd-Warshall の経路復元でもしてやればできる.
995デフォルトの名無しさん:2007/11/06(火) 01:53:20
>>943のお願いします。。
996デフォルトの名無しさん:2007/11/06(火) 02:03:04
テンプレに従って書かないと
ここの住人さんは絶対に解答してくれません
997デフォルトの名無しさん:2007/11/06(火) 02:52:53
Floyd-Warshallって凄い簡単だけど、知らないと思いつかないな
2点間の距離を、他を経由した方が短ければ置き換えるって言う普通のことだけど・・・なかなか思いつかないな
998997:2007/11/06(火) 03:47:17
でも計算順序によっては値が変化しないか? かわらなくなるまで計算し続ければ良さそうだけど
999デフォルトの名無しさん:2007/11/06(火) 07:45:32
>>997-998
計算順序によらないよ.大雑把に言うと Floyd-Warshall は
 (u,v の w まで経由してよい最短経路) =
  min { (u,v の w-1 まで経由してよい最短経路)
     (u,v を w を経由する最短経路) }
という漸化式を動的計画法で計算しているのであって、
「短くなったら置き換える」というのとは本質的に違う.
1000デフォルトの名無しさん:2007/11/06(火) 08:33:33
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。