- 1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
- あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1193150915/
- 321 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:49:27 ]
- >>320
たぶん画像処理関係
- 322 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:01:27 ]
- >>309
これじゃだめ? #include<stdio.h> #include<stdlib.h> #include<string.h> char *getFileName(char str[]) { char *p = strstr(str, "st:"); return p != NULL ? p+3 : str; } int main(int argc, char *argv[]) { FILE *fp; char buffer[BUFSIZ]; if( argc != 2 || (fp = fopen(argv[1], "r")) == NULL ) return EXIT_FAILURE; while( fgets(buffer, sizeof(buffer)/sizeof(char), fp) != NULL ) printf("%s",getFileName(buffer) ); return EXIT_SUCCESS; }
- 323 名前:312 [2007/11/12(月) 00:04:19 ]
- 問題はそのまま書いたものです。
プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です; 一応200*200の画像を出力するプログラムまでできたんですが。。でもこの場合画像がないと出力できないですよね? 200*200の画像をC言語で作ることできますか?
- 324 名前:309 mailto:sage [2007/11/12(月) 00:09:17 ]
- >>322
OK
- 325 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:11:05 ]
- >>324
なにその上から目線。
- 326 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:19:17 ]
- >>323
そりゃできるだろうけど、作っても意味ないだろ。
- 327 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:21:20 ]
- >プログラミング初心者なので輝度値を線型に変換(y=ax+b)とかの意味もわからない状態です
プログラミング初心者は関係ないし,言い訳にするな
- 328 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:43:47 ]
- 2stに噴いた
- 329 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:09:32 ]
- >>304
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5249.zip
- 330 名前:デフォルトの名無しさん [2007/11/12(月) 01:20:55 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5250.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:g++ [3.3] 言語: C++ [4] 期限: 13日21:00 時間のある方よろしくおねがいします
- 331 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:08:27 ]
- g++?
- 332 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:29:27 ]
- [1] 授業単元: 確率論
[2] 問題文(含コード&リンク): ここにかきました kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5251.txt [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] C [4] 期限:12日 お願いします
- 333 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 03:04:30 ]
- >>332
糞コードじゃなくて問題文を全文あげろよ
- 334 名前:デフォルトの名無しさん [2007/11/12(月) 06:06:50 ]
- [1] 授業単元:アルゴリズム
[2] 問題文:巡回セールスマン問題を解くプログラムを作成しなさい。 今回は、あらゆる場合を全通り調べる方法で解を求めるプログラムでかまいません。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: Cのみ [4] 期限: 15日 [5] その他の制限: たいていあり まじおねがいします
- 335 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:09:48 ]
- >>334
問題文が不足しています #include<stdio.h> int main(void){ printf("調べた\n"); return 0; }
- 336 名前:デフォルトの名無しさん [2007/11/12(月) 06:19:51 ]
- まず、地区分けするんだ
沖縄、東京、北海道、福岡など その地区から巡回したらいい
- 337 名前:デフォルトの名無しさん [2007/11/12(月) 06:23:36 ]
- mとnの距離を、d(m,n)とするとnとの距離が10以内のものなどを都市として分類する
都市どおしの距離にすれば簡単になる
- 338 名前:334 [2007/11/12(月) 07:18:53 ]
- すでに入力されたn個の整数のうちから選んだk個の整数の和の最小値を求めよ
という問題を全順列を使ってプログラムしたらどんなのになりますか? これが分かれば>>334ができるんですけど・・・ for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i; if(d != n){ for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } } ↑全列挙のプログラム
- 339 名前:デフォルトの名無しさん [2007/11/12(月) 07:44:28 ]
- 半径rの中に入っている町は、最大2r離れている
他の地区への距離が2r以上になるようにrを設定して分割すればよい
- 340 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:06:10 ]
- >>333
>>268の部分的なところですよ。 [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 toku.xdisc.net/cgi/up/vcc/nm12604.txt.html 図はこうです。 toku.xdisc.net/cgi/up/vcc/nm12605.jpg.html [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月12日 [5] その他の制限: A,B,C,Dはそれぞれファイルとして扱う 例えばAには 0.6 0.4の2つの数値だけ書かれてあり、その数値を読み取るようにする。 1と1、0と0が一致したらその状態同士、3つ選択肢ができることになるので 右の確率を半分にわけて0.6 0.2 0.2として とどまる確率0.6 上の次の状態に移動する確率0.2 下のつながった状態に移動 する確率が0.2となります。 下も同様に。
- 341 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 08:14:06 ]
- >>338
338 の問題について全順列を使うのは相当無駄な気がするが、 全順列を求めて先頭の k 個を選んだものと考えればいい。
- 342 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:15:02 ]
- >>329
自分でやってみてもなかなかできずに途方にくれていたところでした 本当にありがとうございます!
- 343 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:52:27 ]
- [1] 授業単元: プログラミング演習
[2] 問題文:画像で指定の範囲を切り出して出力するプログラムを作れ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: (C/C++/) [4] 期限: 14日まで お願いします
- 344 名前:デフォルトの名無しさん [2007/11/12(月) 10:56:20 ]
- 要素数5のint型配列datを用意し、適当に数値を入力する。
各要素の数値個「*」を表示するプログラムを作成しなさい 数値1入力==>3 数値2入力==>8 数値3入力==>5 数値4入力==>4 数値5入力==>2 3:*** 8:******** 5:***** 4:**** 2:**
- 345 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:10:04 ]
- #include <stdio.h>
static void print(int dat) { printf("\n%d:", dat); for (int i = 0; i < dat; ++i) putchar('*'); } int main() { int dat[5]; printf("数値1入力==>"); scanf("%d", & dat[0]); printf("数値2入力==>"); scanf("%d", & dat[1]); printf("数値3入力==>"); scanf("%d", & dat[2]); printf("数値4入力==>"); scanf("%d", & dat[3]); printf("数値5入力==>"); scanf("%d", & dat[4]); print(dat[0]); print(dat[1]); print(dat[2]); print(dat[3]); print(dat[4]); return 0; }
- 346 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:30:08 ]
- [1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 平面上に多角形が二つ与えられたとき、 これらが共通部分を持つかどうかを判定せよ。 境界でのみ交わる場合は共通部分はないとする。 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 11月13日中 [5] その他の制限: 特になし
- 347 名前:346 mailto:sage [2007/11/12(月) 11:31:48 ]
- 補足:多角形は半時計回りの頂点のリストで与えられる。
よろしくおねがいします
- 348 名前:デフォルトの名無しさん [2007/11/12(月) 11:50:13 ]
- 297のプログラムわかるひといらっしゃいませんか?
よろしくお願いします.
- 349 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 11:50:48 ]
- [2]の問題文がリンクだけだったら何をプログラムしていいか分からない。
だから簡単な説明を入れたほうがいいと思う。 例えば、 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/0000.txt 巡回セールスマン問題を解く とか、一行程度の説明が欲しい。 っていうのをテンプレに入れてはどうでしょう。
- 350 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:05:53 ]
- リンクだけだとなかなか見る気にならんからねえ。
- 351 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:24:42 ]
- >>297 >>348
要するに、通信経路の計算とかは全然関係なく、 下のようなテキストファイルの値を読み込め、という言う事なのか? source-node destination-node packet-loss-rate a b 0.3 a c 0.1 . . z w 0.9
- 352 名前:デフォルトの名無しさん [2007/11/12(月) 14:36:10 ]
- [1] 授業単元: プログラミング言語・配列
[2] 問題文(含コード&リンク): 文字の出現回数を数える 標準入力から入力された 'a' から 'z' までの文字の出現回数を数えるプログラムを作成せよ。 各文字の出現回数は、大きさ 26 の配列 kaisuu に格納するものとする。初期化を忘れずに! また、'a' から 'z' までの小文字の英字以外はカウントせず、無視するものとする。 以下のプログラムを参考にせよ。 char c; ... while ( (c=getchar()) != '\n' ){ /* リターンが押されるまで読み込む */ /* ここに 'a' から 'z' のどれが出現したかを数えるプログラムを */ /* 書くこと */ } /* どの文字が何個あったかを出力する */ ヒント 文字変数 c は、 c - 'a' を計算すれば、要素の番号になる。 例えば、 c に 'a' が入っていれば、 c - 'a' は、0 になる。 日本語が含まれない C 言語のプログラムのソースを読ませてみて、うまく動くか確かめてみること。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: gcc [4] 期限: 11月19日 [5] その他の制限: 特になし 参照URL:www.wakhok.ac.jp/biblion/1995/CC/subsection3.18.4.html
- 353 名前:デフォルトの名無しさん [2007/11/12(月) 15:22:39 ]
- #include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */ #include NMAX 20 /* リストの構成要素となる構造体 node_tag */ struct node_tag { int num; /* 月を格納する整数 */ char name[NMAX]; /* 名前を格納する配列 */ ??????? /* 自己参照:次のデータへのポインタ next */ }; int main(void) { /* 12の要素をもつ構造体配列の定義 */ struct node_tag Month[12] = { {1, "January", NULL}, {2, "February", NULL}, {3, "March", NULL} }; struct node_tag *p; /* ポインタ p */ /* 各要素をつなぐ (以下の図を参考に)*/ ??????? p=&Month[0]; while (p!=NULL){ /* p を用いてリストの表示 */ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=??????? /* p を p の next とする */ } return 0; } ----------------------------------------------------------------- 忙しいところすみませんが、どうかよろしくお願いします。 今回書き込みは、初めてなので、至らない点がありましたら、よろしくお願いします。
- 354 名前:デフォルトの名無しさん [2007/11/12(月) 15:23:56 ]
- ↑
課題 A: 「 月(整数) と 月名(文字) と 次の要素を指すポインタ 」を要素に持つ自己参照構造体を定義する. この構造体を利用して線形リストを作成し,月と月名を表示させるプログラムを完成せよ. * 以下のプログラムの各行にコメントを付加すること. * 以下のプログラムのコメントを参考にすること.
- 355 名前:デフォルトの名無しさん [2007/11/12(月) 15:26:51 ]
- #include <stdio.h> /* おまじない */
#include <stdlib.h> /* おまじない */ #define MAX 20 #define MMAX 100 /* リストの構成要素となるセルの構造体 node_tag */ struct node_tag { int num; /* 配列の番号を格納する整数 */ char name[NMAX]; /* 名前を格納する配列 */ ??????? /* 自己参照:次のデータへのポインタ */ }; int main(void) { struct node_tag Meibo[MMAX]; /* 構造体配列の定義 */ int n=0; /* 配列の番号を格納する整数 n,初期値は 0 */ struct node_tag *head, *p; /* リストの先頭を指すポインタ head,新しく追加するノードを指すポインタ p */ head=NULL; while ( scanf("%s", ???????) != EOF ){ Meibo[n].next=???????; /* 新しく追加するノード(Meibo[n]) の next が指すものは? */ head=???????; /* 先頭データ(head)は どこを指すか? */ ???????=n++; /* Meibo[n] の num に配列番号を格納する整数を入れる */ } p=head; while (p!=NULL){ /* リストの表示 */ printf("%d %s\n", ???????, ???????); /* p の num と p の name を表示する */ p=???????; /* p を p の next とする */ } return 0; } 2門続けてすみません。行き詰まってます。よろしくお願いします。
- 356 名前:デフォルトの名無しさん [2007/11/12(月) 15:27:58 ]
- ↑
課題 B: 「 標準入力 (キーボード) から入力されたアルファベットの文字列 と 配列の番号 」を要素に持つ自己参照構造体を定義する. この構造体を利用して線形リストを作成し,アルファベットの文字列と配列の番号を表示させるプログラムを完成せよ. 以下のプログラムのコメントに従ってプログラムを完成させること.適宜コメントを追加すること. 付け加えです。よろしくおねがいします。
- 357 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 15:31:58 ]
- >>353->>356
>>1にテンプレがあります。 それに沿って書き込むと、回答が多くなります。
- 358 名前:デフォルトの名無しさん [2007/11/12(月) 15:40:25 ]
- ありがとうございます。
- 359 名前:デフォルトの名無しさん [2007/11/12(月) 15:45:54 ]
- >>353->>356の者です。
[1] 授業単元:プログラミング言語2 [2] 問題文(含コード&リンク):先ほどの二つです [3] L [3.1] OS: (/Linux/) [3.2] コンパイラ名とバージョン: (gcc ) [3.3] 言語: (Cです) [4] 期限: ([2007年11月15日17:00まで] ) [5] その他の制限: リスト構造ぐらいまで いろいろ御迷惑かけましてすみませんでした よろしくお願いします。
- 360 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:15:02 ]
- >>353-356
微妙な問題だなあ…… 配列とリスト併用して、それで順不同ならまだしもnextが指すのはすぐ次の要素だし…… リストの演習やるなら、もっとリストの利点が分かる物にしたらよかろうに こんなんじゃ、ちょっとできるやつから「何でわざわざリストを使うんですか?」なんて質問されるぞ
- 361 名前:デフォルトの名無しさん [2007/11/12(月) 16:21:31 ]
- 課題の雛型なので、変えることが出来ないので。
申し訳ありません。
- 362 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:31:17 ]
- J科生乙
- 363 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:32:55 ]
- >#include <stdio.h> /* おまじない */
こんなことを書いて恥ずかしくないんかね。
- 364 名前:デフォルトの名無しさん [2007/11/12(月) 16:37:20 ]
- >>363
それ書いたの担当の女だよ。 しょうがないんだよ餓えてるから少しでも男連中にアピールしてるんでしょ かわいさアピール?
- 365 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:40:34 ]
- 時にはややこしいことを隠して教えることも大事。うふ。
- 366 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:48:48 ]
- コメントにほぼ答えが書いてある穴埋め問題が解けないって奴はなんなんだろうな。
- 367 名前:デフォルトの名無しさん [2007/11/12(月) 16:49:21 ]
- [1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク): いま、要素数N(N≧1)のint型の配列a[]があり、適当な値がセットされている。以下の要求を満たすfor文を書け。 要素数NはマクロNとして定義されているものとする。要素数NはマクロNとして定義されているものとする。 ●直前・直後の配列要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて印字する。 ●配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、 それらの要素の添え字のうち小さな方を印字する。ただしおなじ添え字は1度しか出力しないこと。 [3] 環境 [3.1] OS:VineLinux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: 11月13日まで [5] その他の制限: 特になし
- 368 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:26:32 ]
- >>367
>配列の銭湯からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素 これは先頭からi番目の要素と、先頭からN-i番目の要素を比較しろということだよな? あと、このような特殊な計算をどこに使うのか是非とも教えて欲しい
- 369 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:35:25 ]
- >>367
for(i=1; i<N-1; i++) if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n", i); for(i=0; i<N/2; i++) if(a[i]==a[N-1-i]) printf("%d\n", i);
- 370 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:54:23 ]
- >>367先越された
#include<stdio.h> void prArry(const int a[const], size_t sz) { size_t idx = 1; while( idx != sz - 2 ) { if( 2*a[idx] > a[idx-1] + a[idx+1] ) printf("%d\n",a[idx]); ++idx; } return; } void prHeqT(const int a[const], size_t sz) { size_t idx = 0; while( 2*idx <= sz ) { if( a[idx] == a[sz-1-idx] ) printf("%d\n",idx); ++idx; } return; } int main(void) { const int a[] = {1,2,4,1,55,32,1,4,7,6}; prArry(&a[0],sizeof(a)/sizeof(int)); prHeqT(&a[0],sizeof(a)/sizeof(int)); return 0; }
- 371 名前:367 [2007/11/12(月) 18:07:48 ]
- >>368
そうです、誤字すいません。 トレーニング用だと思われます。。。 まだCを始めたばかりで難しくて・・・ アドバイスいただければ幸いです。 >>369 #include <stdio.h> #define N 10 int main(void) { int a[N]; char buf[80]; int i; for(i=1;i<N-1;i++) { fgets(buf,80,stdin); sscanf(buf,"%d",&a[i]); } if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); } とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。 どんな数字を入れても9になってしまいます・・・ >>370 ごめんなさい、基礎プログラミングなので、そこまで高度な技術は分かりません^^;
- 372 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:09:21 ]
- どこら辺が高度?修正するけど。
- 373 名前:367 [2007/11/12(月) 18:18:16 ]
- わざわざすいません、テンプレに書くべきだったのですが、
自分はまだ制御構造のwhile文までくらいのコマンドくらいしか分からないので・・・ お勧めの入門書などがあれば教えてもらいたいです。
- 374 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:20:59 ]
- 独習C
- 375 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:27:46 ]
- >とりあえず2をこんな感じにやってみたのですが、うまくいきません。。。
>どんな数字を入れても9になってしまいます・・・ if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); だとそりゃ9がでる。 for( i = 0; i != N; ++i ) { if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); }
- 376 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:31:49 ]
- >>371
#include<stdio.h> #include<stdlib.h> #define N 10 int main(void) { int a[N]; int i; for( i = 0; i != N; ++i) { scanf("%d",&a[i]); } printf("--------------------------\n"); for( i=0; i != N; ++i ) { if(a[i]*2>a[i-1]+a[i+1]) printf("%d\n",i); } }
- 377 名前:デフォルトの名無しさん [2007/11/12(月) 18:35:29 ]
- 何度も同じ質問すみません
[1] 授業単元:アルゴリズム [2] 問題文:巡回セールスマン問題を解く(厳密解)プログラムを作成しなさい。 (解=最小値とその最小値を出す通路) 巡回セールスマン問題のデータファイルは次のデータ形式とする。1行目に頂点数、2行目以下に距離行列。例えば、次のようなもの。 5 0 3 2 99 4 3 0 99 12 99 2 99 0 5 6 99 12 5 0 16 4 99 6 16 0 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: Cのみ [4] 期限: 15日 [5] その他の制限: 全列挙を利用して 本当に列挙だけで最小値だけを出すということができません
- 378 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:42:41 ]
- [1] アルゴリズムとデータ構造
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5252.txt [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 21日まで 問題の解きがいがないかもしれませんが よろしくお願いします。
- 379 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:48:00 ]
- for (i=0; i<kosu; i++)
printf("%s\n", data[i]; のところで printf("%s\n", data[i] ) ; カッコが抜けてる
- 380 名前:デフォルトの名無しさん [2007/11/12(月) 18:54:28 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): ・ニュートン法と二分法の両方を用いて、直線 y = x + 1/2 と単位円 x^2 + y^2 = 1 の交点の座標の近似解(小数点以下第6位まで)を求めよ。 ・一つのプログラムに書くこと ・二分法を用いる初期値は、 [a,b] = [-1,1] とせよ。 ・ニュートン法で用いる初期値は、2つとも0とせよ。その際、1つの関数は収束しない。収束しない場合は、求められないとわかった時点でやめるように工夫せよ。 ・ニュートン法も二分法もともに何回で収束したかがわかるようにしておくこと。 [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン:gcc(バージョン不明です) [3.3] 言語:C++ [4] 期限: [2007年11月21日まで(22日提出です)] [5] その他の制限: ・見てわかりやすいように説明文なども各自付加しろ、と指示がありました。 ・デスクトップ環境: GNOME 2.4.2 よろしくお願いします。
- 381 名前:367 [2007/11/12(月) 18:58:25 ]
- >>374,375,376
ありがとうございます!
- 382 名前: ◆wFVK8h9bmM mailto:sage [2007/11/12(月) 19:09:28 ]
- ものすごく遅くなってしまいましたが、>>289ありがとうございました。
考えて下さった、279、280、281、284のみなさんもありがとうございました。 ちなみに>>284の質問の答えが返ってきましてV=V0/E=1.000が正しいらしいです。
- 383 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:23:58 ]
- >>377
巡回セールスマン問題については、 最適解(厳密解)を求めるアルゴリズム自体が、2007年現在、未だに確立されていません。 近似解を用いるのが一般的です。 最適解(厳密解)を求めるアルゴリズムを考え出すのはほとんど無理です。
- 384 名前:378 mailto:sage [2007/11/12(月) 19:27:58 ]
- >>379
ありがとうございます。 問2に関しても自己解決できました。
- 385 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:29:25 ]
- >>383
・・・へぇ
- 386 名前: ◆a3LMU3qR26 [2007/11/12(月) 19:29:33 ]
- 頂点数が5個程度なら全列挙で解が得られるのではないでしょうか?
- 387 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:30:27 ]
- すいません
377です
- 388 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:40:48 ]
- ファイルから読み込むプログラムで
#include<stdio.h> #define MAXN (100) #define YES (1) #define NO (0) int n, a[MAXN], used[MAXN]; int adj[MAXN][MAXN]; void perm(int d); void minimum(int s); int main(int argc, char **argv){ int i, j; FILE *fp; if (argc != 2) { printf("Usage: %s <filename>\n", argv[0]); exit(1); } fp = fopen(argv[1],"r"); if (fp == NULL) { printf("File not found.\n"); exit(1); } fscanf(fp, "%d", &n); if ((n > MAXN) || (n < 0)) { printf("Out of range: n.\n"); exit(1); } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { fscanf(fp, "%d", &adj[i][j]); } } fclose(fp);
- 389 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:43:37 ]
- printf("%d\n",n);
for(i = 0; i < n; i++){ for(j = 0; j < n; j++){ printf("%d ",adj[i][j]); } printf("\n"); } printf("\n"); for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i,j; int s = 0; if(d == n){ for(j = 0; j < n-2; j++) s+=adj[a[j]][a[j+1]]; s+=adj[a[0]][a[n-1]]; printf("%d\n",s); } else{ for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } }
- 390 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 19:45:39 ]
- スレ汚しスマソ
ここまではできてるんですけどこれだけだと和の列挙にしかなりません ここから最小値を取り出して出力させるには何を付け加えたらいいのか教えてください
- 391 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:37 ]
- >>390
TSPのアルゴリズムそのものを付け足せばいい
- 392 名前:334 [2007/11/12(月) 20:44:16 ]
- >>391
ググってみたけどもわからないんですけど 具体的にどういう風にすればいいのですか?
- 393 名前:377 ◆a3LMU3qR26 [2007/11/12(月) 20:45:08 ]
- すみません
>>334=>>337です
- 394 名前:デフォルトの名無しさん [2007/11/12(月) 21:00:16 ]
- 授業名:アルゴリズム
問題: 次の問題の題意を日本語で説明し問題の解答を与えるプログラムを作成せよ。 For what value of integer N is 10NlgN>2N^2? 環境:C言語でコンパイラはgcc 期限:来週の月曜まで よろしくおねがいします。
- 395 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:01:09 ]
- >>394
せめて日本語で説明する部分くらいやってもいいのでは?
- 396 名前:デフォルトの名無しさん [2007/11/12(月) 21:13:26 ]
- >>395
自分の日本語訳は 整数Nはなんのために10NlgN>2N^2ですか? みたいな感じなんですけどあってるんでしょうか・・・ 初めての英語問題で面食らってます
- 397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:25:29 ]
- >>377
ほらよ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5253.c >>383 馬鹿か?
- 398 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:32:48 ]
- >>396
どんな値の範囲で10NlgN>2N^2が成り立ちますか? じゃないかFor = 範囲
- 399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:39:57 ]
- 10NlogN - 2N*N = 0を満たすNをもとめりゃいい。
- 400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:42:41 ]
- ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆【一番クリックした国が優勝】参加者求ム!☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
イギリス人天才プログラマが運営する前代未聞の無料ブラウザゲーム、clickclickclick.com/ ただひたすらクリックし、国別の総クリック数を世界中で競い合う! 究極にバカバカしくそして意味がなく、ひたすら時間の無駄でなんの得にもならない、だがそれが(・∀・)イイ! ライバルはハンガリー、そして台湾!! GAME2から参戦し、現在GAME27開催中! VIPで発祥し現在2ch全土から結集したクリック兵達で日本チームは戦っている! 意味のない事に全力を傾ける、それが2ちゃんねるクオリティ!! 独自のクリックツール開発競争も熱く、各国のプログラマが全力で優秀な兵器開発をしている!! 日本の技術力の高さを世界に見せつけてやろうぜ! プログラマ、Flashゲーム製作者、動画職人、AA職人、絵師、DJ、wiki編集blog編集者、データ分析者etcも募集中! ツール放置参加もできるので、PCのスペックに自身のある奴、CPUに空きのある奴、時間が余ってる奴もぜひ参加してくれ! 本スレッド 【簡単多重】一番クリックした国が優勝【8砲門】 wwwww.2ch.net/test/read.cgi/news4vip/1194741194/l50 ※落ちているときはここから1発検索 www.clickjapan.jp/find2ch.php 日本チームの有志によるまとめサイトポータル www.clickjapan.jp/ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
- 401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:22:09 ]
- >>394
#include<stdio.h> #include<math.h> typedef double (*SingleFun)( double ); double newton(SingleFun fun,SingleFun fprime, double x) { double fx; double fp; double xprev; do { fx = fun(x); fp = fprime(x); if(fp == 0) fp = 1; xprev = x; x -= fx / fp; } while( x != xprev ); return x; } double fN(double N) { return 10.0 * N * log( N ) - 2*N*N; } double dfdN(double N) { return 10.0 * log( N ) - 4.0 * N + 10.0; } int main(void) { double res = newton( fN, dfdN, 1.0 ); printf("result = %1lf\n",res ); printf("10Nlog(N) > 2N^2 is true for N > %lf\n",res); return 0; }
- 402 名前:デフォルトの名無しさん [2007/11/12(月) 22:25:38 ]
- >>398-399
ありがとうございます。やっと理解できました >>401 ありがとうございます。
- 403 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:27:58 ]
- >>402
結果を実数で返してしまった。整数に直してくれ。 だから答えとしてはN > 1だな。
- 404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:36:44 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): ライブラリ関数atofと同じ動作を行う関数 double strtof(const char *nptr) {/*・・・*/} を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] gcc3.4 [3.3] C言語 [4] 11/15まで お願いします
- 405 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:43:07 ]
- #include<stdio.h>
#include<stdlib.h> double strtof_ (const char *nptr) { return strtod_ (nptr, (char **) NULL); }
- 406 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:44:11 ]
- 間違えた。
ていうか衝突するからstrtofって名前使わないほうがいいと思う。 #include<stdio.h> #include<stdlib.h> double strtof_ (const char *nptr) { return strtod (nptr, (char **) NULL); }
- 407 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:52:40 ]
- >>406
すいません、条件を書き忘れました 申し訳ありません 標準ライブラリ関数を使わないでお願いします
- 408 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:52:52 ]
- >>404
double strtof(const char *nptr) { double ret = 0, div = 10, f = 1; if(*nptr=='-') { f = -1; nptr++; } else if(*nptr=='+') nptr++; while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0'; if(*nptr++!='.') return f * ret; while('0' <= *nptr && *nptr <= '9') { ret += (*nptr++ - '0') / div; div *= 10; } return ret * f; }
- 409 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:35:54 ]
- double strtof(const char *nptr)
{ const char *p; int s, n, d; s = 1; n = 0; d = 0; for (p = nptr; *p != '\0'; p++) if (*p == '+' || *p == '-') { if (p != nptr) break; if (*p == '-') s = -1; } else if (*p == '.') d = 1; else if (*p >= '0' && *p <= '9') { n = n * 10 + *p - '0'; d = d * 10; } else break; if (d == 0) d = 1; return (double)s * (double)n / (double)d; }
- 410 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:44:32 ]
- >>408>>409
つ[EBCDIC]
- 411 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:48:22 ]
- EBCDICは0〜9の並びについては保証されてるよ
アルファベットがいけない
- 412 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:06:07 ]
- >>397
これ厳密解じゃないよ しかもnodeを30とかにすると解くのに時間かかりすぎ やり直してきたほうがいいのでは?
- 413 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:54:05 ]
- 再帰じゃそんなもんざます
- 414 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:19:37 ]
- >>409
いろいろとひどいな
- 415 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:14:07 ]
- [1] 授業単元: プログラム演習
[2] 問題文: ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月13日24時まで [5] その他の制限: 特にありません お願いします。
- 416 名前:デフォルトの名無しさん [2007/11/13(火) 16:25:41 ]
- 学校からのカキコミです。
わからないので教えてください。 課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい >kadai25 いくつまで合計しますか> 10 /*10と入力 合計は55 ↑こうしたいのですが、よろしくお願いします。 ちなみにscanfとforを使うみたいです
- 417 名前:デフォルトの名無しさん [2007/11/13(火) 16:29:14 ]
- 351さん、そうです。 そのやり方がよくわからないのです。
- 418 名前:デフォルトの名無しさん [2007/11/13(火) 16:44:09 ]
- [1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞 は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新 聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C/C++ [4] 期限: 11月18日 [5] その他の制限:なし よろしくお願いします。
- 419 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:44:33 ]
- >>415
勝手にテンプレ省略すんなハゲ
- 420 名前:こまった [2007/11/13(火) 17:08:34 ]
- 初歩の初歩の質問で本当にごめんなさい。
まったくわからなくって本当にこまってます。 問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。 例:%a.out 5+8 5+8=13 式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。 すみません。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:13:54 ]
- お前の質問も全くわからん
|

|