トップページ⇒tech
1001コメント440KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/02/04(月) 23:32:19
あなたが解けない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++の宿題を片付けます 103代目
http://pc11.2ch.net/test/read.cgi/tech/1200318925/
0655デフォルトの名無しさん2008/03/17(月) 08:53:34
>>654
A || B はAが真ならBは評価されない。
A && B はAが偽ならBは評価されない。

Bの位置に関数呼び出しを入れたりするとA次第で実行されない、というのはよくバグの原因になる。
0656デフォルトの名無しさん2008/03/17(月) 08:53:55
[1] 授業単元:プログラミング
[2] 問題文 :英小文字をgetsで標準入力より配列テーブルへ入力する
      入力されたデータの個数と共に配列の先頭アドレスを関数 英大文字変換に渡す
      英大文字に変換されたデータをprintfで標準出力に出力する
      ただし、入力するデータの個数は最大10個までとする
      入力のときの表示は「str=」、出力のときの表示は「STR=XXX....X」とする
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: 今日のお昼頃


よろしくお願い致します
0657デフォルトの名無しさん2008/03/17(月) 09:14:10
>>656
#include <stdio.h>
void capital_letter(char *str, int num);

int main(void)
{
char str[10];
printf("str=");
gets(str);
// fgets(str, sizeof(str), stdin); にしたいところ
capital_letter(str, sizeof(str));
printf("STR=%s",str);
return 0;
}

void capital_letter(char *str, int num)
{
int i;
for(i = 0; i < num; i++)
{
if('a' <= str[i] && 'z' >= str[i])
{
str[i] += 'A' - 'a';
}
}
}
0658デフォルトの名無しさん2008/03/17(月) 09:15:36
>>655
だから何?閏年の条件式になんでそんな無意味な突込みを???
Bの位置に関数呼び出しをするような条件式じゃないからw
0659デフォルトの名無しさん2008/03/17(月) 09:20:20
>>658
>>654が言うような最適化はすでにされてるって意味なんだが。
0660デフォルトの名無しさん2008/03/17(月) 09:21:57
>>659
はぁ?ちゃんと読め。それから、数多く繰り返し実行をしてみろ。
明らかに4の倍数以外を400で割り切れるかまで条件判定しなくても済むから
処理時間に差が出ているんだが?
0661デフォルトの名無しさん2008/03/17(月) 09:24:10
わかった、ではその速度差が出ると言うコードを提示してくれ。
0662デフォルトの名無しさん2008/03/17(月) 09:27:20
int is_leap_year(int year)
{
return (year%400==0) || ((year%100!=0)&&(year%4==0));
}

int is_leap_year(int year)
{
if(year%400) return 1;
else if((year%100!=0)&&(year%4==0)) return 1;
else return 0;
}
0663デフォルトの名無しさん2008/03/17(月) 09:28:19
>>661
いや、なんで自分で clock() を用いて検証しない?
何噛み付いてんの?理屈からして筋の通る理論に
無駄で間違った持論で噛み付かれても迷惑。
お前が理解していないとしか言いようがないんだが
0664デフォルトの名無しさん2008/03/17(月) 09:31:14
>>662
いや、だから違うって、なんで先に400で割り切れる条件判定をするんだ?
それが400年に1度で、更に4で割り切れない年も判定するのが無駄だって話なんだが・・・
まず4で割り切れなきゃ、100で割り切れない、または、400で割り切れるという条件判定に
持ち込まないという条件について述べているんだが?
0665デフォルトの名無しさん2008/03/17(月) 09:32:59
裏切り者の福留を許さない。
0666デフォルトの名無しさん2008/03/17(月) 09:39:22
return (year%400==0) || ((year%100!=0)&&(year%4==0));
return (year%4==0 && (year%100!=0 || year%400==0));
0667デフォルトの名無しさん2008/03/17(月) 09:44:42
ここであえて%100から試すのを提案する。

year % (year % 100 != 0 ? 4 : 400) == 0
0668デフォルトの名無しさん2008/03/17(月) 09:52:23
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6154.c
回数を多くすれば、些細なことだが無駄に気づくだろう
0669デフォルトの名無しさん2008/03/17(月) 10:02:13
>year%4==0 && (year%100!=0 || year%400==0)
測ってないけどこの形が最速じゃね。
06706612008/03/17(月) 10:16:09
>>663
なんで私にレスするのか理解に苦しむ。
噛み付くも何も、>660が阿呆なことを言うから論破しようと思っただけなんだが。
0671デフォルトの名無しさん2008/03/17(月) 13:13:55
>>670
> 阿呆なこと
何が?そうやってアホとか相手を罵倒する発言、人間性を疑うよ。
言葉にはあんたの人間性がモロに露呈しているが、噛み付いているのが
あんただけって気づかない?そう、あんたが話題の本質を理解せずに
勘違いしているだけだろ。論より証拠。あんたもソースで示したら?
論点が食い違っていることが明白だから。
06726612008/03/17(月) 13:15:34
>>671
このスレは、>661と>670しか書いていないんですが。
それとも、勝手に他人の発言を拡大解釈したがる阿呆ですか?
06736562008/03/17(月) 13:17:10
>>657
ありがとうございます。助かりました
0674デフォルトの名無しさん2008/03/17(月) 13:17:56
>>669
理屈としてはそれでおk。
0675デフォルトの名無しさん2008/03/17(月) 13:19:19
>>672
あんたさすがに自分の勘違いを認めない上に、このスレに粘着しているのか。
未熟者がでしゃばると、お前みたいな墓穴を掘っても、更に何か言い訳をしたり
相手を否定して自分を押し切ろうとするから嫌われるんだよ。マジ、ソースを出せよ
gdgd言ってねーで。ごちゃごちゃとみっともないんだよ、言い訳するやつって。
06766612008/03/17(月) 13:21:16
>gdgd言ってねーで。ごちゃごちゃとみっともないんだよ、言い訳するやつって。
いや、自己紹介しなくてもw
0677デフォルトの名無しさん2008/03/17(月) 13:21:50
>>655をもう一度読んでみな。いつ誰がBの位置に関数を呼び出す処理について
話を始めた?ここから勘違いを始めて、それについて必死に弁解する意味がないだろw
なのに、アホだの、なんだこの低俗な品のない奴は?まぁ、春休み中なんで、
どんな精神レベルの低い子供かは分かるが、こんなのがそのまま大人になったら面倒だな。
06786612008/03/17(月) 13:25:35
おーい、>655はどこに行った?
あんたのレスに粘着されてるぞ〜w

まぁ、いきなり関数呼び出し云々を持ち出した>655も半端に知識をひけらかしたいだけに見えなくもないが。
言っていることは正しいだけに、場とタイミングを間違えたとしか言いようがないな。
恐らくは、安易に短絡構文を使ってデバッグに苦労した経験でもあったのだろう。

>>677
で、誰が何をどう勘違いして、どう弁解していると「あんたは」考えているのかな?
0679デフォルトの名無しさん2008/03/17(月) 13:50:49
言ってることは正しくてもコミュニケーション能力が不足していたら伝わらない典型だな。
別に君が相手側を説得することにメリットがあるわけでも無し、そろそろ放っておいたらどうよ。
どっちにとは言わんけど。
0680デフォルトの名無しさん2008/03/17(月) 13:51:37
議論なら他でやれカスども
0681デフォルトの名無しさん2008/03/17(月) 14:02:30
>>668

> for(i=1; i<=MAX; i++) {
> for(y=1; y<=MAX_Y; y++) {
> if( y%4 != 0 ) leap=0;
> else if( y%100 != 0 || y%400 == 0 ) leap = 1;
> }
> }
潜在的バグがあるね

以下のようにすれば顕在化する
for(y=1; y<=MAX_Y; y++) {
↓
for(y=1; y<=MAX_Y; y++,leap=1) {
0682デフォルトの名無しさん2008/03/17(月) 14:46:59
うるう年の判定なんて別に高速じゃなくてもいいじゃないか。
0683デフォルトの名無しさん2008/03/17(月) 14:50:06
まぁ、事実上4年に一度で充分だしね。
# まさか、1900年や2100年を処理しなくてはいけないケースなんてそうそうないだろ。
0684デフォルトの名無しさん2008/03/17(月) 14:53:45
問題になるほど何回も何回も判定を行うなら、0〜3000くらいの判定表(0か1が入るintとかcharの配列)を作ってテーブル参照にするとか。
範囲外はいつものの方法でやるとして。
0685デフォルトの名無しさん2008/03/17(月) 15:00:48
発想は悪くないけど、無駄だから。
0686デフォルトの名無しさん2008/03/17(月) 16:23:50
はぁ・・・効率よく、無駄を省くという点が重要なのに、やれ自分にとって
必要あるないだの、何を基準に話を始めてんだ?
それが分かってないから、お前らはいつまで経っても
客観的な立場、意見が重要となる社会に出てまともに活動が出来ないんだよ。
路上じゃあんたらにとってそんなルールは必要ないとか都合が悪いとか言ってると
すぐに事故るぞ。自分が原因で。
0687デフォルトの名無しさん2008/03/17(月) 16:28:44
まともに議論できる奴はこのスレにはいないな。
所詮は宿題スレか。
0688デフォルトの名無しさん2008/03/17(月) 16:34:18
効率の基準が違うから〜♪
スレ違いはしょうがない〜♪
0689デフォルトの名無しさん2008/03/17(月) 16:36:06
宿題スレに何を期待してたんだ…
0690デフォルトの名無しさん2008/03/17(月) 17:24:37
>>668
かなり差が出るんだな。
正直、感動した。

>>681
もう少し詳しく
0691デフォルトの名無しさん2008/03/17(月) 20:02:49
400の倍数に該当しない、100で割り切れたときの判定が不十分か。
たまたまその前年が平年でleapを平年の値で受け継いでいるが。
0692デフォルトの名無しさん2008/03/17(月) 20:24:39
>>691
説明ありがとん。
つーか、自分の鈍さに絶望。
06936482008/03/17(月) 22:17:07
俺が最初に4で割り切れるかを判定しなかったばかりに、スレがこんなことに!w
0694デフォルトの名無しさん2008/03/18(火) 00:19:46
[1] 授業単元:プログラミング
[2] 問題文 :5つの数字を標準入力より配列テーブルへ入力する。
      配列の先頭アドレスと共に結果用の配列の先頭アドレスを関数 四則演算に渡す。
      四則演算された結果をprintfで標準出力に出力する。
      入力のときの表示は DATA = とする
      出力のときの表示は X + Y = Z X - Y = Z X * Y = Z X / Y = Z とする
      なお、加算はaの0と1番目、減算はaの0と2番目、乗算はaの0と3番目、
      除算はaの0と4番目をそれぞれ行い、計算結果をpに入れる。
      注)ポインタを使用すること。
      リンク方法 cal(a,p);

      入出力情報・「記号 a 型名 char *」「記号 p 型名 int *」
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: 今日の朝まで

よろしくおねがいします
0695デフォルトの名無しさん2008/03/18(火) 00:33:20
>>694
#include <stdio.h>
void cal(char *a, int *p) {
p[0] = a[0]+a[1];
p[1] = a[0]-a[2];
p[2] = a[0]*a[3];
p[3] = a[0]/a[4];
}
int main() {
char a[5];
int p[4], i, tmp;
/* 入力 */
for(i=0; i<5; i++) {
printf("DATA=");
scanf("%d", &tmp);
a[i] = (char)tmp;
}
/* 計算 */
cal(a, p);
/* 出力 */
printf("%d+%d=%d %d-%d=%d %d*%d=%d %d/%d=%d\n",
(int)a[0], (int)a[1], p[0],
(int)a[0], (int)a[2], p[1],
(int)a[0], (int)a[3], p[2],
(int)a[0], (int)a[4], p[3]);
return 0;
}
0696デフォルトの名無しさん2008/03/18(火) 06:33:18
久しぶりにアイツが来たのかと思ったじゃねーかw
0697デフォルトの名無しさん2008/03/18(火) 07:03:53
>>654
過去スレでも似たような議論あったな。
int isLeapyear(int year)
{
return year%4 ? 0 : year % 100 ? 1 : year % 400 ? 0 : 1;
}
&&とか||使わないでこれで十分じゃね?
0698デフォルトの名無しさん2008/03/18(火) 07:31:13
えっと、4で割り切れても100で割り切れた場合の対処が不十分だったという指摘があったが・・・
とにかく、4の倍数に当たらないものまで、100で割り切れるかどうか、400で割り切れるかどうか
といった判定にまで持ち込まなければ、その無駄がかなり省けるというのは
繰り返す回数を増やして目に見える処理時間の差を出したコードを参照して頂ければお分かりになられるかと。
06996942008/03/18(火) 07:43:30
>>695
ありがとうございます
0700デフォルトの名無しさん2008/03/18(火) 08:47:13
まぁ、それほど大きなロスではないが、関数を呼び出して値を返す仕組みと、
main関数の中に条件判定を入れて処理するのとでは、自分の環境で計測したところ、
1.7倍の差が出た。mainの中で判定した場合で1秒だと、関数を呼び出した方は1.7秒。
0701デフォルトの名無しさん2008/03/18(火) 09:05:24
まさかとは思うが、最適化しないで較べてないか?
0702デフォルトの名無しさん2008/03/18(火) 13:59:46
最適化しちまったら同じになってしまうだろう
0703デフォルトの名無しさん2008/03/18(火) 19:13:06
最適化して同じになるなら
コードが読みやすいほうが良いに決まってるだろ。
実用時は最適化するんだから。
0704名無しです2008/03/19(水) 22:00:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
・リスト構造の実現
1,グラフデータを記憶する隣接リストの作成,
2,深さ優先探索に必要なスタック,
3,幅優先探索に必要なキューの作成に必須なデータ構造です.
4,ポインタを用いて動的に確保するかの選択が必要です.
5,また,データへのアクセス効率を考えて,両方向環状リストとして構築する
・上記リスト構造を用いて,スタックおよびキューの実現
もっとも大雑把に書くと,
スタックを使ったグラフの深さ優先探索,キューを使ったグラフの幅優先探索,グラフの連結成分分解の実装.
ファイル(複数のグラフデータが列記されている)からグラフを1つずつ読み込み,プログラム上で扱い
やすいデータ構造上にグラフデータを反映させ,その上で探索してもらうという構成になっています.
グラフは無向グラフです
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:visual studio 2003
 [3.3] 言語: C言語
[4] 期限: 20008年3月20日20:00まで
[5] その他の制限: C言語初心者なのでなるべく簡単にしてくれるとありがたいです.

リンクの張り方がわからず、問題文が長くなりお手数をかけて申し訳ありません。
どうぞよろしくお願いします。
0705デフォルトの名無しさん2008/03/20(木) 06:51:42
>>704
4.が意味不明。
ポインタを使わなければ任意で複数のエッジの表現はできない。
0706名無しです2008/03/20(木) 09:40:57
4について、領域を(配列を用いて)静的に確保するか,ポインタを用いて動的に確保するかの選択が必要です.
「静的」と「動的」とは,例えば配列 a[10]のように格納する領域が指定されているのを静的といい,
動的というのは問題によりその格納する領域が変化すると、説明されました

文章が稚拙でわかりにくいところが多々あるかもしれませんが、よろしくお願いします
0707デフォルトの名無しさん2008/03/20(木) 11:43:20
>>706
リストは動的に領域を確保しないと意味ないぞ。
目的が単にスタック、キューの実現なら、配列を使って実装できるけど、
リストを使うことが課題で決められているなら、動的に確保するしかない。
0708デフォルトの名無しさん2008/03/20(木) 11:52:50
多分リスト構造で表現するのと
ノード数Xノード数の2次元配列を使う表現の2種類を区別しろというこではなかろうか?
0709名無しです2008/03/20(木) 11:55:02
なるほど。課題でリストを使うようにと言われているので動的に確保したいです。
後出しになってしまってすいません。ご教授お願いします
0710デフォルトの名無しさん2008/03/20(木) 12:06:38
あとファイルのフォーマットがわからないと
後出しでファイルの入出力の仕様追加が発生すると困りそうだな。
0711デフォルトの名無しさん2008/03/20(木) 12:08:32
>>708
なんか俺もそう思うんだが、
>>704の1にはグラフデータを記憶する隣接リストの作成って書いてあるんだよな。
なんか余計分からなくなってきた…orz
0712デフォルトの名無しさん2008/03/20(木) 12:15:52
>>709
もう少し詳しい課題の内容が分からないと教えられないかも
0713デフォルトの名無しさん2008/03/20(木) 12:22:42
実は元教官の俺が言うのもなんだが、
ワザと曖昧な出題をして学生がちゃんと仕様を確定する的確な質問をするか。
頓珍漢な答えを提出するか。
曖昧さの中から考えられるすべてのケースを想定して複数回答を提出するか
というのを試したことがある。
0714デフォルトの名無しさん2008/03/20(木) 12:32:57
>>713
>>704が出された正確な課題で、わざと曖昧な課題にしてあるのなら
いくらでも作りようがあるけど、なんか単に課題が書ききれてないだけのような気が…。
0715デフォルトの名無しさん2008/03/20(木) 13:17:43
このスレのことをよく知っていて、わざと曖昧に出題してるとか…
0716デフォルトの名無しさん2008/03/20(木) 13:23:05
ちなみに713がどんな問題を出したのか気になる
0717名無しです2008/03/20(木) 13:47:10
たぶん>>708だと思います。
ファイルの入出力の仕様というのはfopenとかのことでしょうか?
「リスト構造」を基に「スタック」,「キュー」,およびグラフのデータ構造(隣接リスト等)を実現し,
アルゴリズムに従い,グラフ上を探索し,得られた探索木を出力してもらうプログラムの作成と課題には
書いてあるのですが、これじゃ情報不足でしょうか?
至らぬ文章力ですいません orz
0718デフォルトの名無しさん2008/03/20(木) 14:04:39
どこかに書いてあるなら、書いてあることすべて写して書き込めばいいのに
量が多いなら>>1のうpろだを使うとかして。
0719名無しです2008/03/20(木) 19:55:13
ファイル http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6158.txt
読み込むデータはこれを渡されました。
0720名無しです2008/03/20(木) 22:46:18
期限で3月20日20:00と書きましたが解けるまでやらなきゃいけないので
ぜひご指導お願いします  何度も書き込んですいません orz
0721デフォルトの名無しさん2008/03/20(木) 23:26:25
>>720
で、グラフの探索とのことですが、何を探索すればいいのでしょうか?
1: 2 3 4 5 10
とかあるのは、「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」という意味でしょうか?
そして、互いに一番遠い距離にあるノードの組を求めればいいのでしょうか?
何か情報をくださらないと、これだけでは私は解けないのです。
0722名無しです2008/03/21(金) 07:52:46
1: 2 3 4 5 10とあるのは、「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」
という意味です。
ファイル http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6159.txt
深さ優先探索を途中までやって間違っているやつを知り合いにもらいました。これを
書き直してわかりやすようにしてはもらえないでしょうか?  お願いします
0723デフォルトの名無しさん2008/03/21(金) 10:21:30
>>704
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6160.c
ごり押しで作ってたら、かなり汚いソースになってしまった
初心者には難しいと思うから、ほとんど参考にはならないと思うけど
だれもうpしてないので上げてきます
0724デフォルトの名無しさん2008/03/21(金) 12:48:03
スレチなのを承知でお願いします。気に触ったら無視して下さい。
[1] 授業単元:C#の個人課題
[2] 問題文(含コード&リンク):VC#(VS2008C#)にてwindowsフォームアプリケーションにて
WEBカメラ(USB)をプレビューするプログラムを書け。
[3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] コンパイラ名とバージョン:VC#2005or2008
 [3.3] 言語: (C#)
[4] 期限: [無期限]
C#だけどやってもいいか。という方いらっしゃいましたらお願いします。
0725デフォルトの名無しさん2008/03/21(金) 16:05:35
内容が変じゃないか?ここ作成依頼スレじゃないぞ
ぶっちゃけ知りたいこと課題に偽装しただけにしかみえない
0726名無しです2008/03/21(金) 22:17:45
>>704作って頂きありがとうございます。
ですがすいませんわからないです orz
>>722のやつを作り変えて簡単なプログラムを作れないでしょうか?
何度もお願いして悪いと思うのですがお願いします。
0727デフォルトの名無しさん2008/03/22(土) 13:16:37
未だに>>704の問題文が意味わからんのは俺だけ?

「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」
これだけ求めたいのなら、ファイルから読み込んだデータを線形リストに格納して
ノード番号の位置のデータを参照するだけで済むだろう。
スタック、キューなんて使う必要ないし使いどころがないよな。
>>721のいうように互いに一番遠い距離にあるノードの組を求めるとか、そんな問題ならわかるが。
0728デフォルトの名無しさん2008/03/22(土) 13:37:49
http://www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg01/sec10-2.html
http://tnt.math.metro-u.ac.jp/labo/grad/2003/egu/adjoin_list.htm
http://tnt.math.metro-u.ac.jp/labo/grad/2004/masa/graph/0.html
0729デフォルトの名無しさん2008/03/22(土) 13:43:50
>>727
> 未だに>>704の問題文が意味わからんのは俺だけ?
本人も含めて誰もわかっていないのでは?

>>704からは、実装方法に関する制限は読み取れるが、
結局どういう問題を解きたいのかが示されていない。
0730デフォルトの名無しさん2008/03/22(土) 13:48:19
とりあえず混乱しすぎだぞ。おまいら。

・隣接リスト != リンクリスト, 連結リスト etc.
・動的確保しない連結リスト表現
struct Node { int num; int next; } nodes[20]; とでもして next は次のノードを指す添え字番号を指す。
例えば次の要素アクセスするなら nodes[nodes[i].next]。無効値は -1 とか。
C 使いなら普通ポインタ使うんでこんなことしないだろうが、アルゴリズムやデータ構造の教科書的にはたまにある表現だと思う。
・「ノード1 と隣接するのは、ノード2, 3, 4, 5, 10 である。」はファイルフォーマットの説明。
・「スタック、キューなんて使う必要ないし使いどころがないよな。」→幅優先探索と深さ優先探索で使うって書いてあるじゃん。
・(とりあえずの)探索内容→グラフ上を探索し,得られた探索木を出力
 つまり単純に辿るだけ。出力フォーマットはしらんが、とりあえずどういう風に探索したかを出力できればいいんだろ。
 木というからにはちゃんと親子が分かるようにするべきっぽく、>722 もそんな感じだ。
・グラフの連結成分分解って書いてあるからここは深さ優先を使うことになるはず。
0731デフォルトの名無しさん2008/03/22(土) 13:52:04
まとめるとこういうことだろう。

・両方向環状リストの実装
・上記を用いた、スタック、キュー、隣接リストの実装
・上記を用いた、深さ優先探索、幅優先探索アルゴリズムの実装(出力は探索木)
・上記を用いた、グラフの連結成分分解の実装

これ、何回かに分けて出された課題をまとめてやろうとしてるんじゃないの?
0732名無しです2008/03/22(土) 15:01:51
説明が下手でみなさんを混乱させてしまって本当に申し訳ありません。
>>731さんがまとめてることをしたいんです。こんなにわかりにくい説明で
理解してくださってありがとうございます。
0733名無しです2008/03/22(土) 19:43:43
>>731さんのを基にもう一度作ってもらうわけにはいかないでしょうか?
私が最初から>>731さんのように書けば良かったのですが、説明が下手なのと
理解力がないばかりに orz
0734デフォルトの名無しさん2008/03/22(土) 23:56:13
>>733
双方向リングリストの実装のみ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6164.c
07357332008/03/23(日) 00:03:31
>>734
リングリストなのに double ended はねーよ orz
0736デフォルトの名無しさん2008/03/23(日) 00:17:48
double circular linked list が正しい英語
07377332008/03/23(日) 00:21:49
>>734 はバグってた

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6165.c
訂正内容
次の行を追加
list->next->prev=ret;
0738デフォルトの名無しさん2008/03/23(日) 06:55:06
>>733
>>737 を元にスタック実装して、グラフの連結成分分解を作ってみた
連結成分について考え方が間違ってたらすまん
できるかぎり簡単にしたつもり
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6166.c
0739デフォルトの名無しさん2008/03/23(日) 10:14:59
[1] 授業単元:プログラミング
[2] 問題文:
問1)次のコードの実行結果を答えなさい。
byte a = 3;
System.out.println(a = 2);

問2)次のコードの実行結果を答えなさい。
short a = 3;
System.out.println(a == 2);

問3)次のコードの実行結果を答えなさい。

int a = 0;
if (a == 1)
System.out.print("aの値:");
System.out.println(a);
System.out.println("終了");
[3] 環境
[4] 期限:[無期限]
[5] その他の制限: なし

レベルが違うような質問で申し訳ありません・・。
スレ違いでしたらスルーでお願いします。
0740デフォルトの名無しさん2008/03/23(日) 10:19:48
Javaの宿題スレにゴー
0741デフォルトの名無しさん2008/03/23(日) 10:34:10
>>740

ご親切にありがとうございました。
0742デフォルトの名無しさん2008/03/23(日) 17:05:36
なんだか和んだぞ。
0743デフォルトの名無しさん2008/03/23(日) 19:59:02
ナゴナゴ
0744名無しです2008/03/23(日) 22:19:32
みなさん>>704を解いて頂きありがとうございました。
0745デフォルトの名無しさん2008/03/24(月) 00:22:15
>>738
あぁ・・・ミスった
memset(adj, 0, sizeof(adj)*NODENUM*NODENUM); を
memset(adj, 0, sizeof(int)*NODENUM*NODENUM); に変えてね・・・
0746デフォルトの名無しさん2008/03/24(月) 04:54:50
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6168.txt
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語:C言語
[4] 期限:2008年3月24日午前11時(できれば午前中で・・
急なお願いですがよろしくお願いします。
[5] その他の制限:なし
0747デフォルトの名無しさん2008/03/24(月) 06:15:00
教官からどう指示されたのか不明だが、
フローチャートは矢印で繋ぐだけじゃ不十分だよ。
07487462008/03/24(月) 08:06:46
矢印だけではダメなのはわかっています、確かに不十分ですよね
それ以外は自分でんはんとかしようと思っているので・・・
ここではそれしか表現できなくて
0749デフォルトの名無しさん2008/03/24(月) 09:55:10
丸投げするか自分で全部やるかどっちかにしろよこんな簡単なもの。
この程度の物は矢印をまともに全部書いたらほとんどそれで答えじゃねーか。
07507462008/03/24(月) 10:37:09
その程度すら分からないんです、スイマセン・・、丸投げでおねがいします。
0751デフォルトの名無しさん2008/03/24(月) 10:55:48
もう時間ないが、処理の流れはわかっているようだから
ソースにくどいほどコメント書いて、それを適切な四角で括って
矢印で繋げばいいんじゃねーの。
0752デフォルトの名無しさん2008/03/24(月) 12:35:40
○開始
↓
◇センスの有無
↓あり    ↓なし
□合格処理□不合格処理
↓←───┘
○終了
0753デフォルトの名無しさん2008/03/24(月) 13:24:28
[1] 授業単元:プログラミング
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6170.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio 2003
 [3.3] 言語:C
[4] 期限:3/27

よろしくお願いします。
0754デフォルトの名無しさん2008/03/24(月) 13:31:41
>>753
超初心者の宿題だろう 自分で出来ないのかよ
■ このスレッドは過去ログ倉庫に格納されています