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/
2 名前:C [2007/11/05(月) 21:00:26 ] [1]3 [2] 数値(0:END):2 現在までの合計:2 一つ前の合計:0 a=2, b=0 数値(0:END):5 現在までの合計:7 一つ前の合計:2 a=2, b=7 数値(0:END):7 現在までの合計:14 一つ前の合計:7 a=14, b=7 数値(0:END):9 現在までの合計:23 一つ前の合計:14 a=14, b=23 数値(0:END):3 現在までの合計:26 一つ前の合計:23 a=26, b=23 数値(0:END):0 終了します。 ↑を↓の感じでお願いします。
3 名前:C [2007/11/05(月) 21:01:18 ] #include <stdio.h> #include <stdlib.h> int main() { int a=0, b=0; int *now, *prev; /* 変数宣言、および処理を書く */ printf("現在までの合計:%d\n一つ前の合計:%d\n", *now, *prev); printf("a=%d, b=%d\n", a, b); /* 処理を書く */ } [6]6日まで C言語でお願いします
4 名前:デフォルトの名無しさん [2007/11/05(月) 21:08:43 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): ・CPlayerクラスの定義 ・CPlayerのオブジェクトをnew演算子の4個の変数を動的に確保 ・4つの変数それぞれのm_nLifeに任意の値を入力させる ・入力された4つの変数それぞれのm_nLifeを表示する。 ・確保したオブジェクトを開放 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限: 2007年11月6日10:00まで [5] その他の制限:特になし よろしくお願いします
5 名前:デフォルトの名無しさん [2007/11/05(月) 21:29:35 ] >>4 問題の意味がわからん
6 名前:デフォルトの名無しさん [2007/11/05(月) 22:14:19 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): ニュートン法と二分法の両方を用いて、直線y=x+1/2と単位円x*x+y*y=1の交点のの近似解(小数点以下第6位まで)を求めよ。 1つのプログラムに書くこと。 二分法の初期値[a,b]=[-1,1] ニュートン法で用いる初期値は2つとも0とせよ。 ニュートン法も二分法もともに何回で収束したかがわかるようにすること。 関数へのポインタは必ず使うこと。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cのみ [4] 期限: 2007年11月6日17時
7 名前:デフォルトの名無しさん [2007/11/05(月) 22:59:15 ] [1]授業単元:情報セキュリティ [2]問題文 これらの変換方式を理解しその法則から数値を導き出すプログラムを書きなさい。 以下内容 pc11.2ch.net/test/read.cgi/tech/1187079488/133-134 これをCで吐けるようにしたいのですが [3]環境 [3.1]OS:Windows [3.2]コンパイラ:VC or BCC [3.3]言語:C [4]期限:2007年11月6日 8時 アセンブラのところにも書いたのですが、こちらのほうが良さそうなので こちらで質問させていただきます。お願いします
8 名前:aho mailto:sage [2007/11/05(月) 23:48:48 ] >>4 問題文をちゃんと書かんかい! まあ一応作ったルわ まずはCPlayerクラスの定義から class CPlayer{ int* val1; int* val2; int* val3; int* val4; public: CPlayer::CPlayer(); CPlayer::~CPlayer(); void CPlayer::inputData(); void CPlayer::showData(); };
9 名前:aho mailto:sage [2007/11/05(月) 23:52:01 ] >>8 続き 次にコンストラクタ内で動的にメモリを確保する。 CPlayer::CPlayer(){ int size = 10; val1 = new int[size]; val2 = new int[size]; val3 = new int[size]; val4 = new int[size]; } 次は順番をちょっと変えてメモリの解放から先に CPlayer::~CPlayer(){ if(val1){ delete[] val1; val1 = NULL; } if(val2){ delete[] val2; val2 = NULL; } if(val3){ delete[] val3; val3 = NULL; } if(val4){ delete[] val4; val4 = NULL; } }
10 名前:aho mailto:sage [2007/11/05(月) 23:54:46 ] >>4 次はデータの入力の実装。 と思ったけど、面倒になったからやめる。
11 名前:4 mailto:sage [2007/11/06(火) 00:21:38 ] >>5 授業を理解してないので・・・ >>8 ありがとうございます。 頑張ってみます。
12 名前:デフォルトの名無しさん [2007/11/06(火) 02:56:48 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5218.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: 11月6日22:00まで [5] その他の制限: 条件が問題文と一緒にありますので確認お願いします よろしくお願いしますm(_ _)m
13 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:43:49 ] 前スレ>>955 >正四面体があるとする。底面(ある一つの面)に平行な(n-1)枚の面で高さをn等分することを考える。この作業を他の面に平行な面でも行う(他の方向にもn等分する)場合、正四面体は全部で何個に分けられるか。 正四面体をn等分すると正四面体と正八面体の二種類の立体が出来て、それぞれの数は下記の通りです。 正四面体 n*(n^2+2)/3 正八面体 n*(n+1)*(n-1)/6 数学的な証明は自分でしてください。
14 名前:デフォルトの名無しさん [2007/11/06(火) 09:07:49 ] >>12 似たような課題前見て、そん時upしたソースファイルと開いた英文ファイルupしとく kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5219.lzh まぁ、好きなように改造してくれ strtok使ったりとまぁごちゃごちゃしてて読みづらいことこの上ないだろうけどな
15 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 13:49:04 ] void heikin_bunsan(int tensu[],int num){ int i; double f; double heikin; double bunsan; double goukei; double total; for(i=0;i<num;i++){ goukei=goukei+tensu[i]; } heikin=goukei/num; for(i=0;i<num;i++){ f=(tensu[i]-heikin)*(tensu[i]-heikin); total=total+f;} bunsan=total/num; printf("平均点%3.3d点\n",heikin); printf("分散%3.3d\n",bunsan); } goukeiとheikinの計算部分を間違えているようです、間違いの指摘お願いします。 もっと短縮できるところあったらそこもお願いします><
16 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:05:53 ] >>14 なに得意げにCの小汚いソースさらしてんだか
17 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:19:49 ] >>16 そういう前に綺麗なソースとやらを見せてくれ
18 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:33:03 ] >>15 goukeiとtotalが初期化されてない。 表示は%dじゃなくて%f。 工夫すればループは一回でできる。 void heikin_bunsan(int tensu[], int num) { int i; double goukei=0,total=0,heikin,bunsan; for(i=0; i<num; i++) { goukei += tensu[i]; total += tensu[i] * tensu[i]; } heikin = goukei / num; bunsan = total / num - heikin * heikin; printf("平均点%3.3f点\n",heikin); printf("分散%3.3f\n",bunsan); }
19 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:40:31 ] >>17 やだよ。 std::stringを使えってことだから、あの小汚いソースにあるmallocやstrtokなどは不要だし、 リスト構造も不要(std::listを使えという意味じゃない)。 なにより、汚いじゃん。あれ読むのに時間を使うとしたら無駄なので、そう言ったまで。
20 名前:デフォルトの名無しさん [2007/11/06(火) 16:21:50 ] >>14 >>12 です。C言語があまりわからないです・・・ すいません・・・
21 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:29:53 ] >>19 小汚いソースや変態的ソースで回答するのがこのスレの醍醐味ですよ^^
22 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 17:43:25 ] >>12 もろもろ適当だけど、まぁ宿題の回答位にはなってると思う。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5220.txt make&実行はしてみたが、テストはしてない。
23 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:23:10 ] 【質問テンプレ】 [1] 授業単元:1次元配列&2次元配列&else if~&switch case文 [2] 問題文(含コード&リンク): 1つ目。生徒10人分の身長データがある。 この身長データを配列に読み込み、平均身長を計算しなさい。 また、画面に番号・身長、最後に平均身長及び最も高い人の番号と身長を表示させなさい。 なおここでいう番号とは配列番号とする。 2つ目。上のデータを、身長をキーワードにして降順にソートしなさい。 3つ目。最初のプログラムに身長の低い順に順位をつける処理を追加しなさい。 [3] 環境 [3.1] OS: Unix [3.2] gcc34 [3.3] 言語: C言語 [4] 期限: ([2007年11月06日21:00まで) [5] その他の制限: できるだけ初心者でもわかる文がいいです
24 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:37:04 ] >>23 身長データはテキストファイルから読み込むのですか?
25 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:00:29 ] >>23 に追加です・・・ 入力データ:165、173、169、178、175、159、171、169、170、168 です。最初の問題の追加です。入力もれすいません
26 名前:デフォルトの名無しさん [2007/11/06(火) 19:03:58 ] [1] 授業単元:配列の使い方、関数の使い方 [2] 問題文: (1)2行3列の行列AとBの和と差を求めよ. c(i,j)=a(i,j)+b(i,j) d(i,j)=a(i,j)-b(i,j) (2)2行3列の行列Aと3行4列の行列Bの積Cを求めよ c(i,j)=Σ(k=1~3)a(i,k)b(k,j) (3)eのx乗=1+x/1!+xの2乗/2!+xの3乗/3!+・・・ を計算するプログラムを作れ (4)これを関数として定義し、 x=0,0.1,0.2,・・・,1.0を計算せよ. また、power(e,x)と比較せよ. ただし、e=2,71828として計算せよ. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C++ [4] 期限:2007念11月07日11:00まで [5] その他の制限:なし
27 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:04:19 ] >>26 (3)と(4)、ネーピア数などを求めるプログラムは前スレ>>427 にもあるみたいです。 #include <stdio.h> #include <math.h> double myexp(double x) { double s = 0.0; double a = 1.0; int n; s += 1.0; for (n = 1; n < 20; n++) { a = a * x / n; s = s + a; } return s; } int main(void) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=0.1;x<=1.0;x+=0.1) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; }
28 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:14:17 ] [1] 授業単元:C [2] 問題文(含コード&リンク): nを入力して、次の級数の和[1+(1/2)+(1/3)+(1/4)+...+(1/n)]の値を計算して出力する。 (整数型変数と実数型変数の混合演算の結果は実数型となり、整数が頼みの演算結果は整数になることに注意せよ) [3] 環境 [3.1] OS:Unix(MacOSX) [3.2] コンパイラ名とバージョン:gcc 4.0.1 [3.3] 言語: Cにて [4] 期限: [2007年11月6日まで] [5] その他の制限:特にはないです。 当方、C言語初心者なのですが、 どうしてもわからないので支援をお願い致します。 軽く書いてみたのですが、結果が0しか返ってきません。 よろしくお願いします。
29 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:22:54 ] 1.0にすればいいんじゃね?
30 名前:デフォルトの名無しさん [2007/11/06(火) 20:34:21 ] #define MAX 1 #define MIN 3 int * ranking(int *n1, int *n2, int *n3, int rank) { /* rankが1なら最大値、3なら最小値を返す */ /* 関数を作成 */ } int main() { int a, b, c, i; printf("(a,b,c):"); scanf("%d %d %d", &a, &b, &c); printf("(a,b,c)=(%d,%d,%d)\n", a, b, c); printf("最大値 : %d\n", *ranking(&a, &b, &c, MAX)); printf("最小値 : %d\n", *ranking(&a, &b, &c, MIN)); }
31 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:43:33 ] >>28 double KyuuSuu(int n) { int i; double num = 0.0; for(i = 1; i <= n; i++) num += (1.0/i); return num; }
32 名前:shin [2007/11/06(火) 21:04:55 ] [1] 授業単元: 文字と文字列 ASCIIコード [2] 問題文(含コード&リンク): 入力された文字列中に、文字 a がいくつ含まれているか個数を表示し、 見つけた箇所に「^」を表示するプログラム。 【動作例】 文字列を入力 >> aoriunvtyuoertnoainaainAi a を4個発見しました。 文字列・・・aoriunvtyuoertnoainaainAi ^ ^ ^^ (本当は ^ が a 下にきます) [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C++ [4] 期限: 出来れば・・2007年11月7日 22:00までにお願いします
33 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:05:23 ] [1] 授業単元:C [2] 問題文(含コード&リンク): for( i?? ;i?? ;i?? ) { for ( j?? ;j?? ;j?? ) { printf("%d ",j); } printf("\n"); } for文の中を埋めて一行目 1 2 二行目 2 4 6 三行目3 6 9 12 四行目 4 8 12 16 20 五行目 5 10 15 20 25 30と表示させよ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:BCC 5.5 [3.3] 言語: C [4] 期限: [2007年11月8日まで] [5] その他の制限:特にはないです。 よろしくお願いします。
34 名前:shin [2007/11/06(火) 21:05:50 ] ここまでは作りました・・(ちなみに「a」のASCIIコードは「0x61」です) #include <iostream.h> main() { const int Max_Length = 50 ; // 入力文字列の最大値 char sentence[Max_Length] ; // 入力文字列 int count ; // 文字カウンタ // 文字列の入力 cout << "英数字のみの文字列を入力して下さい。 >>> " ; cin.getline( sentence, Max_Length ) ; // 文字数のカウント count = 0 ; while( sentence[count] != '\0'){ count++ ; }
35 名前:23 mailto:sage [2007/11/06(火) 21:09:12 ] >>23 ですが、とりあえず最初の問題はできました。 #include<stdio.h> int main() { int a[9],sum=0,i,j,max=0,n; printf("身長を入力してください\n"); for(i=0;i<10;i++){ printf("%d人目の身長を入力⇒",i+1); scanf("%d",&a[i]); sum=a[i]+sum; if(max<a[i]){ max=a[i]; n=i+1; } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } printf("平均身長は%.2fcm 最高身長は%d番目の%dcmです\n",(float)(sum)/(j),n,max); } です。しかし、2番目と3番目がどうしてもわかりませんどなたかご教授ください
36 名前:shin [2007/11/06(火) 21:09:52 ] 32と34の書き込みはつながってると思ってください! おねがいします
37 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:24:34 ] >>31 ありがとうございましたm(__)m 完成しました。 明日の提出にも間に合いそうです。
38 名前:デフォルトの名無しさん [2007/11/06(火) 21:40:03 ] >>33 for (i=1; i<=5; i+=1) { for (j=i; j<=i*(i+1); j+=i) { printf("%d ",j); } printf("\n"); }
39 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:41:39 ] // >>32 文中のaの数をカウントするプログラム // bcc 5.5.1 for win32 #include <iostream.h> int main(void) { const int Max_Length = 50 ; // 入力文字列の最大値 char sentence[Max_Length] , dummy[Max_Length]; // 入力文字列 int count = 0, a = 0; // 文字カウンタ // 文字列の入力 cout << "英数字のみの文字列を入力して下さい。 >>> " ; cin.getline( sentence, Max_Length ) ; // 文字数のカウント while( sentence[count] != '\0'){ if (sentence[count] == 0x61){ a++ ; dummy[count] = '^' ; } else { dummy[count] = ' ' ; } count++ ; } dummy[count] = '\0' ; cout << "aは次の数だけ見つかりました : " << a << "\n" << sentence << "\n" << dummy << endl ; }
40 名前:デフォルトの名無しさん [2007/11/06(火) 22:07:50 ] 規制でパソコンから書けないので携帯から 1)C言語 2)積算日数計算(閏年含む)リンクはつなげません 3)環境 3、1)OS Linux 3、2)不明 3、3)言語 C言語 4)期限・2007年11月7日 5)void?は使わない方向で。if 又は for 文でお願いします。 月ごとに{31,28…}と指定したと思います。閏年は{31、29…}という感じで別に指定していました。 よろしくお願いします。
41 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:11:37 ] // >>23 #include<stdio.h> int main(){ int a[10],sum=0,i,j,max=0,n,temp; printf("身長を入力してください\n"); for(i=0;i<10;i++){ printf("%d人目の身長を入力 : ",i+1); scanf("%d",&a[i]); sum=a[i]+sum; if(max<a[i]){ max=a[i]; n=i+1; } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } printf("\n平均身長は%.2fcm 最高身長は%d番目の%dcmです\n\n",(float)(sum)/(j),n,max); for (i = 0; i < 10 - 1; i++) { for (j = 10 - 1; j > i; j--) { if (a[j - 1] > a[j]) { temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp; } } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } }
42 名前:23 mailto:sage [2007/11/06(火) 22:53:08 ] >>41 さん これは、1番最初のやつのプログラムでしょうか?
43 名前:デフォルトの名無しさん [2007/11/06(火) 23:06:21 ] [1] 授業単元: C [2] 問題文(含コード&リンク): int型の変数bunbo、bunshiをメンバに持つ、 構造体struct bunsuuを定義する。 2つのstruct bunsuu型の変数を引数として、 足し算、引き算、掛け算、割り算を行った結果を 戻り値とする関数をそれぞれ作成しなさい。 2つのint型を引数とし、その最大公約数を計算して 戻り値とする関数も作成し、必要に応じて利用しなさい。 struct bunsuu型の変数を出力する関数を作成しなさい。 出力は「分子 / 分母」の形で1行とする。 ただし分母が1の場合は、分子のみとする。 以上6種類の関数が作成できたら、 キーボードから2つの分数を入力し、 足し算、引き算、掛け算、割り算の計算結果を順に 分数で画面に出力するmain関数を作成しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/8まで [5] その他の制限: 特になし
44 名前:デフォルトの名無しさん [2007/11/06(火) 23:07:26 ] [1] 授業単元: C [2] 問題文(含コード&リンク):要素数が10のint型の配列に キーボードから数値を入力する関数を作成し (main関数の中で)呼び出しなさい。 配列はmain関数の中で宣言し、 入力を行う関数は、配列のアドレスと 配列の要素数を引数として受け取るものとする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/8まで [5] その他の制限: 特になし こちらもお願いします
45 名前:shin [2007/11/06(火) 23:27:35 ] >>39 ありがとうございました(´`)!!!!!!!!!!
46 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:39:17 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク): HTTPリクエストを受け付けると、URLに記載された名前のHTMLファイルをブラウザに返す 簡単なWebブラウザをC言語を用いて作成せよ。 このWebサーバはHTTPリクエストを受け付ける毎にforkシステムコールにより新しいプロセスを生成し、 そのプロセスがURLに指定されたHTMLファイルをファイルシステムから取り出して、ブラウザに返す。 基本的には、リクエストを送りリプライを返すことができればいい。 また、結果をブラウザで表示できる程度の実装で構わない。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C言語 [4] 期限: 11月15日 [5] なし ブラウザに表示させることができません・・・どなたかお助けください
47 名前:デフォルトの名無しさん [2007/11/07(水) 02:19:00 ] (x1+x2+x3+・・・xn)の2乗/N((x1)の2乗+(x2)の2乗+・・・ (xn)の2乗) を計算するプログラムってどうやって書くんですか? 教えてください!!
48 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 03:15:43 ] >>47 あなたにはプログラミングの前にテンプレの使い方を教えます。 [1] には授業名などを書いてください。 [2] には問題文を書いてください。 [3] には環境を書いてください。とくに、CかC++は重要です。 [4] には期日。 [5] にはその他を書いてください。
49 名前:デフォルトの名無しさん [2007/11/07(水) 03:29:14 ] [1] C言語入門 [2] jain fairness index の式をC言語でプログラミングで書きなさい. (x1+x2+x3+・・・xn)の2乗/N((x1)の2乗+(x2)の2乗+・・・ (xn)の2乗) という式 [3] C言語 [4] 11月9日 [5] なし 48さんご指摘ありがとうございました! よろしくお願いします!
50 名前:デフォルトの名無しさん [2007/11/07(水) 03:46:17 ] >>22 遅れましたがどうもありがとうございました。とっても助かりました
51 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 03:52:56 ] >>49 double f(double *x, int n) { double s = 0, ss = 0; int i; for(i=0; i<n; i++) { s += x[i]; ss += x[i]*x[i]; } return s * s / (n * ss); }
52 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:48:54 ] >>44 #include <stdio.h> void input_array(int *a,int *ptr) { printf("%d個目の数値入力\n",(*ptr)+1); scanf("%d",(a+*ptr)); ++*ptr; } main() { int a[10],ptr=0; printf("数値を10個入力してください。\n"); while(ptr<10){ input_array(&a[0],&ptr); } printf("入力結果: "); for(ptr=0;ptr<10;ptr++) printf("%d ",a[ptr]); putchar('\n'); return; }
53 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:50:37 ] >>43 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5221.txt
54 名前:33 mailto:sage [2007/11/07(水) 07:40:52 ] >>38 どうもありがとうございました〜。
55 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 08:51:46 ] >>52 >入力を行う関数は、配列のアドレスと >配列の要素数を引数として受け取るものとする。
56 名前:名無し募集中。。。 [2007/11/07(水) 09:20:23 ] [1] 自習 明解C++演習5_9 [2] b以上a以下の全整数の和を求める関数sumを作成せよ。 なお、bが省略されて呼び出される場合はbを1とみなして合計を求めること [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:bcc55 [3.3] 言語:C++ [4] 期限:11/7まで お願いします。
57 名前:デフォルトの名無しさん [2007/11/07(水) 09:27:25 ] #include <iostream> using namespace std; int sum(int a){return a*(a+1)/2;} int sum(int b, int a){return a*(a+1)/2 - b*(b-1)/2;} main(){ cout<<sum(2,10); }
58 名前:デフォルトの名無しさん [2007/11/07(水) 09:48:19 ] [1]情報処理 [2]二分法で y=x*x−5 の根をもとめる [3]C言語 LInux [4]10時半まで [5]おねがいします><
59 名前:デフォルトの名無しさん [2007/11/07(水) 10:06:56 ] #include <stdio.h> double f(double x){return x*x-5;} main(){ double a=0,b=10,x; int i; for(i=0;i<100;i++){ x=(a+b)/2; if(f(a)*f(x)>0)a=x; else b=x; } printf("%.6f",x); }
60 名前:デフォルトの名無しさん [2007/11/07(水) 10:12:10 ] >59 めっっちゃありがとうございます!! 何回で収束するかもできますか?><
61 名前:デフォルトの名無しさん mailto:age [2007/11/07(水) 10:14:50 ] [1]情報処理 [2]第1引数で指定したint型の先頭から、第2引数で指定した数の要素に中に、 第3引数で指定した値と一致するものがあればその要素のアドレスを、一致す るものが無ければNULLを戻り値とする関数を作りなさい。探索アルゴリズムと して番兵法を用いなさい。作成した関数のテストは、戻り値として得たアドレス に格納されている値を表示する main関数を作成して行いなさい。一致するもの がない場合には何も表示しなくてよい。 [3]c言語 [4]11/7 23:00 お願いします。
62 名前:デフォルトの名無しさん [2007/11/07(水) 10:15:50 ] >>60 できるけど、収束はいくつぐらいだよ たとえば2乗したときに5からのずれが0.00001とか
63 名前:デフォルトの名無しさん [2007/11/07(水) 10:19:01 ] #include <stdio.h> #define gosa 0.00001 double f(double x){return x*x-5;} main(){ double a=0,b=10,x,y; int i; for(i=1;i<100;i++){ x=(a+b)/2; y=f(x); if(y<gosa && y>-gosa){printf("%d回目の試行で収束 x=%.6f",i,x);return 0;} if(f(a)*f(x)>0)a=x; else b=x; } printf("収束しない"); }
64 名前:デフォルトの名無しさん [2007/11/07(水) 10:21:52 ] ありがとうございました!! 条件じぶんでかえてやります><
65 名前:教えてください [2007/11/07(水) 11:52:10 ] double bibun_f(double a, double b,double c, double d) { double f; f = 1 / (1 - mu * pow(cos(d - c), 2)) * (mu * ga * sin(d) * cos(d - c) + mu * pow(a, 2) * sin(d - c) * cos(d - c) - ga * sin(c) + mu / lambda * pow(b, 2) * sin(d - c)); return(f); } ここでエラーが error C2018: 文字 '0x81' は認識できません。 と error C2018: 文字 '0x40' は認識できません。がでるのですが・・・どうすればいいのでしょうか??
66 名前:名無し募集中。。。 [2007/11/07(水) 11:55:15 ] >>57 ありがとうございました
67 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:05:21 ] >>65 エラーメッセージを読めばわかるように、全角スペースが混ざっている。 あと、宿題以外は基本的にはスレ違いだから、以後は別のところで聞いてね。
68 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:13:55 ] >>61 int *search(int *p, int n, int x) { /* destructive */ for (*(p+n) = x; *p != x; ++p); return p; } main() { int i, array[10+1]; /* +1 is for sentinel */ for (i = 0; i < 10; ++i) { array[i] = i % 7; printf("%p : %d\n", &array[i], array[i]); } printf("%d found at %p\n", 4, search(array, 10, 4)); }
69 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:17:48 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): N×N のチェス盤が与えられる( 左下を (1,1) とする )。 (x1,y1) にビショップを置いたとき、(x2,y2) に移動するまでの 最小手数を表示せよ。ただし移動できない場合は -1 と表示せよ。 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 今日中 [5] その他の制限: 特になし
70 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:32:43 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 同じ形をした正方形のブロックが N 個与えられる (N ≦ 1000)。 各ブロックには自分自身の重さ weight[k] と、 自分の上に乗せられる重さ load[k] が設定されている。 縦に積める最大のブロックの個数を求めよ。 例: N = 5, (weight, load) = (19,15), (7,13), (6,7), (6,8), (1,2) → 4 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 今日中 [5] その他の制限: 特になし
71 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:37:29 ] >>70 >同じ形をした正方形のブロックが N 個与えられる (N ≦ 1000)。 違う形をした正方形があったら怖い。 同じ大きさと言う解釈でいいのかな?
72 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:43:34 ] >>71 そういうことです。形(大きさ)が問題になって積めない、ということはないとします。
73 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:45:24 ] >>71 重さ考えるだけでいんだから大きさはどうだっていいだろ それより >正方形のブロック 二次元か
74 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:45:46 ] >>69 #include<stdio.h> int main(void){ int x,y,x1,y1,x2,y2; printf("x1 y1 x2 y2 = "); scanf("%d %d %d %d",&x1,&y1,&x2,&y2); x=x1>x2?x1-x2:x2-x1; y=y1>y2?y1-y2:y2-y1; if(x==0&&y==0)printf("0"); else if(x==y)printf("1"); else if(x%2==y%2)printf("2"); else printf("-1"); printf("\n"); return 0; }
75 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:02:11 ] >>68 ありがとうございました^^
76 名前:デフォルトの名無しさん [2007/11/07(水) 13:45:49 ] このスレも遂に99代目、次100代目ですね。 [1] 授業単元: C言語演習V [2] 問題文(含コード&リンク): 前回の講義にてプログラム実行時の引数を表示するプログラムを作成した。 (実行例) >ensyu1 file1 argv[0]:ensyu1 argv[1]:file1 >ensyu1 file1 file2 argv[0]:ensyu1 argv[1]:file1 argv[2]:file2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5223.txt 今回はプログラムが実行時にファイルを1つだけ引数として取るような プログラムを作成したい。 そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、 プログラムを終了するように修正せよ。 (実行例) >ensyu1 file1 argv[0]:ensyu1 argv[1]:file1 >ensyu1 file1 file2 Usagi: ensyu1 filename [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限: 11月8日(木)PM12時までにお願いします。 [5] その他の制限: ファイルの標準入出力まで習いました。
77 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:49:02 ] 兎じゃなくて、普通はUsageですよ。
78 名前:デフォルトの名無しさん [2007/11/07(水) 13:50:40 ] >>76 ×「そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、 」 ○「そこで引数が2つ以上の場合には「Usagi: ensyu1 filename」と出力させ、」 でした./で実行はLinuxですね。(汗)
79 名前:デフォルトの名無しさん [2007/11/07(水) 14:03:53 ] >>77 Usageです。兎だと思ってた。orz
80 名前:デフォルトの名無しさん [2007/11/07(水) 15:27:01 ] すみませんが、お願いします。 [1] 授業単元: 音響工学 [2] 問題文(含コード&リンク): 正弦波に対してガウス窓を掛け、テキストファイルに出力せよ。窓間は任意。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C++ [4] 期限:2007年11月8日まで [5] その他の制限:特にありません。 よろしくお願いします!
81 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:21:26 ] >>80 >>1 をきちんと読んだかい?
82 名前:80 [2007/11/07(水) 16:57:10 ] 一応読みましたけど、至らない点ありましたか?
83 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:59:55 ] ガウス窓の説明とその描画方法を書くように
84 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:07:45 ] >>83 知らないんなら無視すればいいんじゃないかなー やる気あるならググれば一発だしー 描画しろなんてどこにも書いてないしー
85 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:13:22 ] 同意。それは兎も角、テキストファイルへの出力形式については質問させてくれ。 1行1データでずらっとならべればいいのか?
86 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 19:44:02 ] >>80 gnuplot使えば簡単にできるってことでいいのか
87 名前:80 [2007/11/07(水) 19:46:33 ] はい。 1行1データです。 ガウス窓でぐぐってもよくわからなかったので、お願いしに来た次第なのです。 すみませんが、できればお願いします。
88 名前:80 [2007/11/07(水) 19:47:48 ] >>86 gnuplotでできるんですか?
89 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:07:16 ] // >>80 ガウス窓 // gnuplot でやるには plot sin(x)*exp(-x*x/0.03*0.03) #include <iostream> #include <math> #include <fstream> #define pi 3.141592 int main (void) // window function - Gauss window { double x, sigma=0.03; std::ofstream window("window.csv"); for (x=-pi; x<pi; x+=0.01){ window << x << ", " << sin(x) * exp(-x*x/sigma*sigma) << std::endl; } return 0; }
90 名前:80 [2007/11/07(水) 20:15:28 ] ありがとうございます! これでなんとかなるかもです! ご迷惑おかけしました。
91 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:58:38 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): cat コマンドの作成 fgetc()とfputc() 関数の使用 標準出力とすること。ファイル名を指定しない場合は標準入力 [3] 環境 [3.1] OS:Linux [3.2] gcc 3.4 [3.3] C [4] 期限:無期限 [5] その他の:ポインタあたりからあやふやです よろしくお願いします。
92 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:25:02 ] >[5] その他の:ポインタあたりからあやふやです 自己紹介はしなくておk
93 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:26:25 ] [1] プログラミング [2] y=ax*x+b*x+cをfor文を使って計算しなさい。係数a b cは自分で入力 xの始めの値、終わりの値、増やす値も自分で入力できるようにしなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc3.4 [3.3] 言語: Cでおねがいします。 [4] 期限: 明日(11月8日まで) [5] その他 #include<stdio.h> main() { int i, x, y, a, b, c, d, e, f; printf("y=x*x*a+b*x+cを計算します。\n"); printf("aとbとcを入力して下さい。 --->"); scanf("%f %f %f",&a, &b,&c); printf("Xの始めの値を入力して下さい。 --->"); scanf("%f",&d); printf("Xの終わりの値を入力して下さい。--->"); scanf("%f",&e); printf("Xを増やす値を入力してください。 --->"); scanf("%f",&f); for(x=d; x<=e; x+f){ y=(x*x*a)+(b*x)+c; ここまでは自力でやったんですけどその先がまったく分かりません。 よろしくおねがいします。
94 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:58:32 ] >>93 完成間近じゃねえかよw
95 名前:デフォルトの名無しさん [2007/11/07(水) 22:02:18 ] >>53 コードありがとうございます。 所で・・・ 答えとして 入力された分数が 1 / 2 と 2 / 3 のとき 1 / 2 + 2 / 3 = 7 / 6 1 / 2 − 2 / 3 = - 1 / 6 1 / 2 × 2 / 3 = 1 / 3 1 / 2 ÷ 2 / 3 = 3 / 4 こうなるんですが、マイナスの所だけ違うんですがどこを修正すれば ↑のようになりますか?
96 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:14:20 ] >>95 int gcd(int a,int b) { int c,tmp; if(a<0) a=-a; if(b<0) b=-b; if(b>a){ tmp = b; b = a; a = tmp; } /* ユークリッドの互除法で最大公約数を計算 */ while(a%b!=0){ c = a % b; a = b; b = c; } return b; } 符号をチェックしてなかった。gcdをこれに入れ替えてください。 あと、無意味な比較があったのでそれも外してます。
97 名前:93 mailto:sage [2007/11/07(水) 23:17:20 ] >>94 いくらひねっても分からない・・・orz
98 名前:デフォルトの名無しさん [2007/11/07(水) 23:57:15 ] [1] 授業単元: 応用プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5224.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ (Cは全くわからないです) [4] 期限: 11月8日21:00 [5] その他の制限: 条件は問題文と一緒にあります。 どうかよろしくおねがいいたします
99 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:05:27 ] >>93 基本的にはあと y の値と、必要なら x の値を表示するだけだろう それに加えて x,y,a〜f の型と、for のカッコの中身を修正するんだ
100 名前:デフォルトの名無しさん [2007/11/08(木) 00:11:29 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 画像を上下反転させる [3] 環境 [3.1] OS: Mac [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cです [4] 期限: かなり急いでます、一時ぐらいまで・・・ [5] その他の制限: とりあえず基本的なこと(ポインタ、構造体等)はやりました。 簡単な解説とかあれば嬉しいです。よろしくお願いします。
101 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:18:05 ] 二次元配列の上下の要素を入れ替えるやり方でいいんじゃないの?
102 名前:デフォルトの名無しさん [2007/11/08(木) 00:28:09 ] それがわからないんです・・・。 ネットで探してみましたが、プログラムの内容がさっぱりわかりません。
103 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:36:08 ] 単純な二重ループじゃない?
104 名前:デフォルトの名無しさん [2007/11/08(木) 00:51:16 ] >>76 まだ待ってます。よろしくお願いします。
105 名前:デフォルトの名無しさん [2007/11/08(木) 01:01:06 ] 文字列の配列変数とか使いますか?
106 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:04:50 ] [1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク): 行列Aとベクトルxの積y=Axを求めるプログラムを作成したい。 ・行列nと列数mを入力させる。 ・n×x(nかけるx)の行列Aのメモリを動的に確保する。 ・ベクトルx,yのメモリを動的に確保する。 ・A[0][0]からA[n-1][m-1]までの数値を1つずつ入力させる。 ・ベクトルxの要素x[0]からx[m-1]の数値を入力させる。 ・計算結果yの要素y[0]からy[n-1]を出力する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C [4] 期限:11/11(日)
107 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:06:09 ] >> 106ーーー実行結果ーーー ./ensyu3 行(n)の数は?2 列(m)の数は?3 ------ A[0][0]=1 A[0][1]=2 A[0][2]=3 A[1][0]=4 A[1][1]=5 A[1][2]=6 ------ x[0]=1 x[1]=2 x[2]=3 ------ y[0]=14 y[1]=32 $
108 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:07:27 ] >>105 どれ宛の安価?
109 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:10:00 ] そこまで書いてあるなら順番どおりにやるだけじゃん。
110 名前:デフォルトの名無しさん [2007/11/08(木) 01:10:18 ] すみません、自分は100です。 色々定義しないとダメですよね・・・。 呼び出し関数を使わなくてもforを使えばいいのでしょうか?
111 名前:デフォルトの名無しさん [2007/11/08(木) 01:30:02 ] >[4] 期限: かなり急いでます、一時ぐらいまで・・・ 1時くらいまでといってる割には、ノンビリしてるな。 「1時くらいまでには、私は寝たい」から急いでるだけだろ? こんなやつに、教える必要ないぞ。
112 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:56:26 ] >>110 #define SWAP(type, a, b) {type c;c=a;a=b;b=c;} for(y=0;y<height/2;y++) { for(x=0;x<width;x++) { SWAP(data_t, data[y][x], data[height-1-y][x]); } }
113 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:59:36 ] 期限近いヤツの先にやってやれよ。 >>76 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5225.txt
114 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:02:29 ] >>113 ありがとうございます。 もう出来ないのかと思ってました。ほんとにありがとうございます。
115 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:12:31 ] >>91 #include<stdio.h> void file_output(FILE *fp_in, FILE *fp_out){ int moji; while((moji=fgetc(fp_in))!=EOF) fputc(moji, fp_out); } int main(int argc, char *argv[]){ FILE *fp=stdin; int i; if(argc==1) file_output(fp, stdout); for(i=1;i<argc;i++){ fp=fopen(argv[i], "r"); if(fp==NULL) continue; file_output(fp, stdout); fclose(fp); } return 0; }
116 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 11:40:25 ] 【質問テンプレ】 [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 入力した文字列(行単位)n個をソートして 昇順に表示するプログラムを作成してください。 ただし同じ文字列は1回だけ表示します。 また、nは1024以下とし、文字列は1024文字までします。 <補足> >以下を加えてください。 #include<stdio.h> #include<string.h> [3] 環境 [3.1] OS:Linux [3.2] わかりません [3.3] C言語 [4] 期限: 11月10日 [5] その他の制限: 文字列の関数 strlen(s):sの長さを数える strcmp(s1,s2):2つの文字列s1,s2を比較し、辞書的に大きい、等しい、小さいに対して 正数、0、負数を返す。 strcpy(s1,s2):文字列s2をs1にコピーし、s1のアドレスを返す。 strcat(s1,s2):文字列s2をs1の後に付け、s1のアドレスを返す。
117 名前:デフォルトの名無しさん [2007/11/08(木) 11:52:35 ] 【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 整数除算 a/b (a,b は正または負の整数)を計算する関数 int fdivide(int a, int b )を作成せよ。 a と b とを入力、 fdivide(a,b )を計算して出力するmain 関数を作成し、 プログラムと実行結果を提出せよ。 a/b は a がb未満になるまでaから b を繰り返し 引き続け、その回数を記憶することで実現させる。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン: (bcc) [3.3] 言語: (C++) [4] 期限: ([11月10日]まで) [5] その他の制限:C++ の割り算演算子の利用は禁止 よろしくお願いします
118 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 14:43:16 ] #include <stdio.h> #include <stdlib.h> unsigned fdivide(unsigned a, unsigned b) { unsigned sum = 0; for (unsigned ic = 1; ic < a; ++ic) { sum += b; if (sum > a) return ic - 1; } return a; } int main(int argc, char ** argv) { printf("%d\n", fdivide(atoi(argv[1]), atoi(argv[2]))); return 0; }
119 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 15:00:38 ] >>116 #include <stdio.h> #include <stdlib.h> #include <string.h> #define WORD_LEN_MAX 1024 int cmp(char **a, char **b){ return strcmp(*a, *b); } int main(int argc, char *argv[]){ char buf[WORD_LEN_MAX+1+1], **word=NULL; int len, wordnum=0L, i; while(fgets(buf, sizeof(buf), stdin)!=NULL){ len=strlen(buf); if(len>0 && buf[len-1]=='\n') buf[len-1]='\0'; word=realloc(word, sizeof(*word)*(wordnum+1)); word[wordnum++]=strdup(buf); } qsort(word, wordnum, sizeof(*word), cmp); for(i=0;i<wordnum;i++) printf("%s\n", word[i]); for(i=0;i<wordnum;i++) free(word[i]); free(word); return 0; }
120 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:20:55 ] [1] 授業単元: [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5226.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11月9日10:00まで] [5] その他の制限: 特にありません どうぞよろしくお願いします
121 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:24:14 ] >>120 マルチ乙 pc11.2ch.net/test/read.cgi/tech/1180856695/546
122 名前:デフォルトの名無しさん [2007/11/08(木) 16:40:29 ] >>91 学校特定しました。
123 名前:デフォルトの名無しさん [2007/11/08(木) 17:18:56 ] >>117 #include <stdio.h> int fdivide(const int a, const int b ) { int numerator = a; int denominator = b; int result = 0; int flg; if(numerator < 0) numerator *= -1; if(denominator < 0) denominator *= -1; while(numerator >= denominator){ numerator -= denominator; result++; }; if((a > 0 && b > 0) ||(a < 0 && b < 0)) flg = +1; else flg = -1; return result*flg; } int main() { printf("fdivide(6,2) = %d \nfdivide(1,3) = %d \nfdivide(6,-2) = %d \nfdivide(-6,2) = %d \n" "fdivide(-7,2) = %d \nfdivide(7,-3) = %d \nfdivide(10,1) = %d \n" ,fdivide(6,2),fdivide(1,3),fdivide(6,-2),fdivide(-6,2),fdivide(-7,2),fdivide(7,-3),fdivide(10,1)); return 0; }
124 名前:デフォルトの名無しさん [2007/11/08(木) 18:21:56 ] [1] 授業単元: データ構造(アルゴリズム) [2] 問題文:下記 [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月14日まで] [5] その他の制限: 特にありません どうぞよろしくお願いします
125 名前:デフォルトの名無しさん [2007/11/08(木) 18:24:49 ] >>124 問題文書け
126 名前:デフォルトの名無しさん [2007/11/08(木) 18:25:10 ] 124続き #include <stdio.h> #include <malloc.h> struct tfield { int num[20]; struct tfield *pointer; } ; struct tfield *talloc(void); int main(void) { struct tfield *head, *p; head = NULL; while (p = talloc(), scanf("%d", p -> num)!= EOF){ p -> pointer = head; head = p; } p = head; while(p != NULL){ printf("%d\n", p -> num); p = p -> pointer; } } struct tfield *talloc(void) {return((struct tfield *)malloc(sizeof(struct tfield))); } 上記を、二つのリストをソートした新たなリストを表示するように改変せよ。です
127 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 19:31:55 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ 完成する関数: void enqueue(char *x) void dequeue() void queue_print() CPPファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5227.txt 作成するプログラムについて:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5228.txt 実行例:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5229.txt ヒント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5230.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2003 [3.3] 言語:c++ [4] 期限:2007年11月09日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで よろしくおねがいします。
128 名前:デフォルトの名無しさん [2007/11/08(木) 19:51:08 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): n変数の連立1次方程式をガウスの消去法で解くプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] gcc 3.4 [3.3] 言語: C) [4] 期限: 明日 [5] その他の制限:配列まで習いました。
129 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:28:33 ] [1] 授業単元:プログラミング練習 [2] 問題文(含コード&リンク): あるテキストファイル「memo.txt」にexampleとかかれているとして そのファイルを読み込み、その書かれている単語の1文字ずつ見ていき 母音なら1と、子音なら0と表示するプログラムをつくれ。 exampleなら1010001と表示するように [3] 環境 [3.1] OS:Linux [3.2]GCC [3.3] C言語 [4] 期限: 11月10日
130 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:42:05 ] >>129 #include <stdio.h> #include <ctype.h> main() { int c; FILE *fp; if((fp=fopen("memo.txt","r"))==NULL){ printf("file can't open.\n"); return; } while((c=fgetc(fp))!=EOF){ switch(c){ case 'a': case 'A': case 'i': case 'I': case 'u': case 'U': case 'e': case 'E': case 'o': case 'O': putchar('1'); break; default: /* 何がきても0を出力するのならputchar('0');break;だけでいい */ if(isalpha(c)) putchar('0'); else putchar(' '); break; } } putchar('\n'); fclose(fp); }
131 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:21:29 ] >>124-126 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5231.c
132 名前:131 mailto:sage [2007/11/08(木) 23:39:48 ] 配列使って書き直し。こっちのほうが安全。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5232.c
133 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:40:24 ] [1] 授業単元: [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5233.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11月9日10:00まで [5] その他の制限: 期限まであまり時間がありませんが、どうぞよろしくお願いします
134 名前:デフォルトの名無しさん [2007/11/09(金) 00:17:40 ] どなたか>>127 よろしくお願いします。どうもすみません
135 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:27:56 ] >>133 int binarysearch(int v){ /* ここにプログラムを追加 */ int l = 0, r = N-1,x; while( l<=r ) { x = (l + r) / 2; printf("%d %d %d \n",l,x,r); if( v == a[x] ) return 0; /* 見つかった */ if( v > a[x] ) l = x + 1; if( v < a[x] ) r = x - 1; } return -1; } int interpolationsearch(int v){ /* ここにプログラムを追加 */ int l = 0, r = N-1,x; while( l<=r ) { x = l + (v - a[l]) * (r - l) / (a[r]-a[l]); if(x < 0) return -1; if(x >= N) return -1; printf("%d %d %d \n",l,x,r); if( v == a[x] ) return 0; /* 見つかった */ if( v > a[x] ) l = x + 1; if( v < a[x] ) r = x - 1; } return -1; }
136 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 00:32:17 ] >>135 一応な…… v>a[x]の場合、xの位置のデータは答えよりも小さいから、それよりも右に位置する(x+1)を新しいlにする。 v<a[x]の場合、xの位置のデータは答えよりも大きいから、それよりも左に位置する(x-1)を新しいlにする。
137 名前:デフォルトの名無しさん [2007/11/09(金) 00:59:36 ] int binarysearch(int v){ /* ここにプログラムを追加 */ int mid; int left = 0; int right = 9; while(left < right){ mid = (left + right)/2; if(a[mid] < v) left = mid + 1; else right = mid; }; if(a[left] == v) return left; return -1; }
138 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:41:38 ] >>134 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5234.txt この問題、やらしいな。 front = 0 , rear = 0; /* 空 */ front = 0 , rear = 1; /* 1つめ追加 */ front = 0 , rear = 2; /* 2つめ追加 */ front = 0 , rear = 3; /* 3つめ追加 */ front = 0 , rear = 4; /* 4つめ追加 */ front = 0 , rear = 0; /* 5つめ追加 */ ってなるので、空の場合と満杯の場合でfrontとrearの関係が同じなる。ということでflagたてて逃げてみた。
139 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:24:06 ] >>128 行列におけるガウスの消去法(掃き出し法)はサンプルコードが至る場所にあります。 ttp://www.mit.msn.to/matrix/determinant.html
140 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:32:14 ] >>127 しかしC++でやるんならコンテナがあるんだからqueueの実装なんかやるだけ無駄、 空いた時間で、queueを使った応用をしたほうが宿題として合格だな queueの応用問題を考えられないのは教師に欠陥があるからだ
141 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 09:32:28 ] >>138 どうもありがとうございました。 助かりました
142 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 10:49:56 ] [1] 授業単元:C言語入門(第7週ファイルの入出力) [2] 問題文(含コード&リンク): 簡単なファイル暗号化・復号化のプログラムを作成せよ。 今回の暗号化は、改行以外の文字のアスキーコードに1を足し、復号化はその逆を行うこととする。 最初の引数が暗号化(c)と復号化(d)のどちらかを決定し、次が入力ファイル名、最後が出力ファイル名を示す。 引数が間違っている場合は"error"を表示する。 (実行例) $ cat input.txt(読み込むファイルの中身確認) Hello! Good bye... $ ./q2-3 c input.txt output.txt $ cat output.txt Ifmmp" Hppe!czf/// $ ./q2-3 d output.txt newinput.txt $ cat newinput.txt Hello! Good bye... ヒント:ファイルからfgetcで1文字づつ読み込み、int型の変数に入れる。 アスキーコードに1足し、fputcでファイルに書き出す。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: GCC [3.3] 言語: C [4] 期限: 11/11(日) [5] その他の制限: 暗号化(c)、復号化(d)の判別には「!strcmp」を使ってください。
143 名前:デフォルトの名無しさん [2007/11/09(金) 11:06:18 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 正規分布に従って、乱数を発生させるプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5 [3.3] 言語: C++ [4] 期限: 11/9 18時 [5] その他の制限: よろしくお願いします
144 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 11:08:42 ] #include <stdio.h> #include <string.h> void encodeDecode(int codeOffset, FILE * fpIn, FILE * fpOut) { int ch; while ((ch = fgetc(fpIn)) != EOF) { fputc(ch == '\n' ? ch : ch + codeOffset, fpOut); } } int main(int argc, char ** argv) { int codeOffset; FILE * fpIn; FILE * fpOut; if (argc > 3) goto error; if (strcmp(argv[1], "c") == 0) { codeOffset = 1; } else if (strcmp(argv[1], "d") == 0) { codeOffset = -1; } else { goto error; } fpIn = fopen(argv[2], "r"); if (fpIn == NULL) goto error; fpOut = fopen(argv[3], "w"); if (fpOut == NULL) goto error; encodeDecode(codeOffset, fpIn, fpOut); return 0; error: fprintf(stderr, "error\n"); return 1; }
145 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 11:13:04 ] >>144 ×argc > 3 ○argc <= 3
146 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:13:53 ] >>143 上限と下限は指定しないのか? あと、出力方法は?
147 名前:デフォルトの名無しさん [2007/11/09(金) 12:23:52 ] >>146 >上限と下限は指定しないのか? とりあえず、指定されてないので後から変えられるようにしてもらえますか? あと、マイナスが出ないようにしてもらえると助かります。 >出力方法は? 数字が表示されればいいと思います。
148 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:25:30 ] やろうと思ったらC++かよ('A`)
149 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:55:18 ] >>144-145 期限まで待つつもりでしたが、お早い回答ありがとうございます。 変数名なども分かりやすく書いてもらったみたいで感謝しております。
150 名前:129 mailto:sage [2007/11/09(金) 14:47:59 ] [1] 授業単元:プログラミング練習 [2] 問題文(含コード&リンク): 129とほとんど同じなんですけど、 main(){ char str1[10]=”four”; /*char型の配列”four”に母音が含まれれば1、子音が含まれれば0と表示する*/ } を作れ。 3] 環境 [3.1] OS:Linux [3.2]GCC [3.3] C言語 [4] 期限: 11月10日
151 名前:イトキン ◆lq89E2SwMI [2007/11/09(金) 15:09:16 ] [1] 授業単元: オペレーティングシステム [2] 問題文(含コード&リンク): コマンドufsinfoを実装し、ソースコードとレポートを提出せよ。 ufsinfoの概要 ufsinfoは、ファイルシステムから次の情報を取り出す。 ○マジック番号(fs_majic) ○ディレクトリ中のファイル名一覧 ◆ディレクトリを引数に指定した場合 ○データブロックの番号の一覧 ◆そのファイルの中身を格納するブロック ufsinfoの書式 ○ufsinfo パス名 スペシャルファイル名 ◆パス名 ファイルシステム中のファイルへの絶対パス ◆スペシャルファイル名 ファイルシステム全体を表すファイル名
152 名前:イトキン ◆lq89E2SwMI [2007/11/09(金) 15:10:24 ] [3] 環境 [3.1] OS: mac OS [3.2] わかりません [3.3] 言語: C言語のみ [4] 期限: 12月5日 [5] その他の制限: mmapは使用禁止 スペシャルファイルでなく、イメージファイル上の動作でok 二重間接まで動作チェックせよ。 Cのみで350行程度でかけるみたいです。 問題文、が長過ぎて、何をここに書けばいいのかまよってしまいました。 問題について聞きたいことがあれば、レスお願いします。
153 名前:デフォルトの名無しさん [2007/11/09(金) 15:40:01 ] 期限過ぎてもいいんで、誰か143お願いします。
154 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 16:16:37 ] >>143 //ボックス=ミューラー法で100個の正規乱数を生成するテスト #include<iostream> #include<math.h> #include<stdio.h> #include<time.h> int main() { int i; double u1,u2,n1,n2; srand(time(NULL)); for(i=0;i<50;i++){ u1=(double)(rand())/RAND_MAX; u2=(double)(rand())/RAND_MAX; n1=sqrt(-2*log(u1))*sin(2*M_PI*u2); n2=sqrt(-2*log(u1))*cos(2*M_PI*u2); std::cout <<n1<<" "<<n2<<std::endl; } return 0; }
155 名前: ◆a3LMU3qR26 [2007/11/09(金) 16:36:08 ] 1] 授業単元:アルゴリズム [2] 問題文:巡回セールスマン問題を解くプログラムを作成しなさい。 今回は、あらゆる場合を全通り調べる方法で解を求めるプログラムでかまいません。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc [3.3] 言語: Cのみ [4] 期限: できるだけ早く [5] その他の制限: たいていあり
156 名前: ◆a3LMU3qR26 [2007/11/09(金) 16:38:30 ] >>155ですけど for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i,j; int b[MAXN]; int s = adj[a[0]][a[n-1]]; if(d == n){ for(i = 0; i < n-1; i++){ s+=adj[a[i]][a[i+1]]; } } else { for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } } このプログラムを利用したいのですが これだけだとただの列挙になってしまいます 最小値だけをだすにはどうしたらいいでしょうか?
157 名前:153 [2007/11/09(金) 18:46:49 ] >>154 ありがとうございます。 できれば、マイナスの値が出ないようにしていただきたいんですけど、無理ですか?
158 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:54:49 ] でてきた正規分布を正軸に好きなだけ平行移動させりゃいいじゃん 分散は変わらないから形は変わらないだろ
159 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 18:56:06 ] 形っていうのは乱数の母集団分布な
160 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:25:13 ] 何故マイナスの値を出さないようにしたいのか?その理由気になる。
161 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 19:30:40 ] >>106-107 順番がきましたら、こちらもよろしくお願いします。 期限は日曜日までありますので、土曜日が期限の人を優先していただいて構いません。 正確な期限は11/11(日) PM5時までです。 よろしくお願いします。
162 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 20:50:23 ] >>106 >>161 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5236.c 期限や順番なんて関係無いよ。答える奴は自分がやりたい問題をやるだけ
163 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:33:34 ] [1] データ構造 [2] 問題文(含コード&リンク): n個の頂点からなるグラフを、辺の両端の頂点に同じ色を塗らないようにし、すべての頂点を彩色するのに必要な色数を最小化する。 また、頂点iに接続する辺の数を頂点iの次数とよぶ。以下のアルゴリズムで作るように。 (1) @頂点の次数を降順にソートする。 A頂点1に色1を割り当てる B頂点i=2、...nについて、隣接する頂点に割り当てられていない最小の色番号を頂点iに割り当てる。 (2)頂点iの隣接頂点に彩色された異なる色数を頂点iの飽和次数とする。 @最大次数の頂点に色1を割り当てる A飽和次数が最大の頂点を選ぶ。そのような頂点が複数ある場合は、 未彩色の部分グラフにおいて最大次数の頂点を選ぶ。 B選んだ頂点に彩色可能な最小の色番号を割り当てる C全頂点が彩色済みならば終了。そうでないならAにもどる。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年11月10日24:00まで(出来れば21:00 [5] その他の制限: 関数と変数の定義 #include <stdio.h> #define TRUE 1 #define FALSE 0 #define MAX_N 2000 /*変数*/ int n; /*頂点数*/ int m; /*辺数*/ double x[MAX_N],y[MAX_N]; /*各頂点の座標*/ int a[MAX_N][MAX_N]; /*隣接行列*/ int color[MAX_N]; /*色*/ int max_color; /*最大の色番号*/
164 名前:163 mailto:sage [2007/11/09(金) 21:34:07 ] 問題例データの読み込み input_fire = fopen(argv[1],"r"); fscanf(input_fire,"%d %d\n",&n,&m); /*頂点数と辺陬の読み込み*/ for(i = 0;i < n;i++){ fscanf(input_file,"%1f %1f\n"&(x[1]),&(y[i])); /*頂点データの読み込み*/ } for(i = 0;i < n;i++){ /*隣接行列の初期化*/ for(j = 0;j < n;j++){ a[i][j] = 0; } } for(i = 0;i < m;i++){ fscanf(input_file,"%d %d\n",&k1,&k2); /*辺データの読み込み*/ a[k1][k2] = a[k2][k1] = 1; /*隣接行列の生成*/ } for(i = 0;i < n;i++){ color[i] = -1; /*解の初期化*/ } 説明文に意味がわからないところがあったらご指摘ください。お願いします。
165 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:52:39 ] >>164 でーんつーだーい
166 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:25:47 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5237.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11/12 [5] その他の制限: よろしくお願いします
167 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:35:03 ] >>163 それだと彩色数は最小化されないが
168 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 22:44:59 ] >>167 これ、近似アルゴリズムだから。
169 名前:デフォルトの名無しさん [2007/11/09(金) 22:46:25 ] #include <stdio.h> #include <math.h> double f(double x){ return 1/sqrt(1+pow(x,4)); /*求める定積分*/ } int main(void){ double x,sum=0,h; printf("h:"); scanf("%lf",&h); for(x=2*h;x<1;x+=2*h){ /*範囲指定*/ sum+=(f(x) + 4*f(x-h) + f(x-2*h)) * h/3; /*シンプソンの公式*/ printf("%f %f\n",sum,x); } }
170 名前:デフォルトの名無しさん [2007/11/09(金) 22:47:19 ] for(x=0;x<1-2*h;x+=2*h){ /*範囲指定*/ sum+=(f(x) + 4*f(x+h) + f(x+2*h)) * h/3; /*シンプソンの公式*/ printf("%f %f\n",sum,x);
171 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:07:34 ] >>162 >>答える奴は自分がやりたい問題をやるだけ と言いつつプログラム作ってくれた>>162 さんに感謝。自分の課題解いてくれてありがとうございます。 わざわざプログラムコード中に説明文まで入れてもらって本当に感謝しています。 m(_ _)m
172 名前:aho mailto:sage [2007/11/10(土) 01:06:59 ] >>142 これ以外に何かあればいってちょ! encrypt()内がちょっと汚いから書き直してね。 void encrypt(char** argv){ int tmp; //文字読み込みバッファ FILE* fp = fopen(argv[2], "rb"); if(!fp){ printf("file open error!\n"); return; } FILE* fout = fopen(argv[3], "wb"); if(!strcmp(argv[1], "c")){ //暗号化 while((tmp = fgetc(fp)) != EOF){ if(tmp == 0x0A){ //改行コード fputc(tmp, fout); continue; } tmp += 0x01; fputc(tmp, fout); } } else if(!strcmp(argv[1], "d")){ while((tmp = fgetc(fp)) != EOF){ if(tmp == 0x0A){ fputc(tmp, fout); continue; } tmp -= 0x01; fputc(tmp, fout); }
173 名前:aho mailto:sage [2007/11/10(土) 01:09:33 ] >>172 } fclose(fout); fclose(fp); } int main(int argc, char** argv){ if(!strcmp(argv[1],"c") && !strcmp(argv[1],"d")){ printf("argument error!\n"); return 0; } encrypt(argv); return 0; } もっと細かい引数のチェック(argcでも判断, 拡張子判断etc)もした方がいいかもね。 疲れたので寝ます
174 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:14:06 ] >>172-173 つ「>>144-145 」 まあ、作りが少し違う参考になるでしょ。
175 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:23:30 ] [1] 授業単元: 確率論 [2] 問題文: www.uploda.org/uporg1104561.txt ここに書きました。 図はこんな感じです。 www.uploda.org/uporg1104531.jpg [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月10日 [5] その他の制限: 特にありません わかりにくいかもしれませんがお願いします。
176 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:31:02 ] >>168 それはもちろん知っているが、問題の一行目には最小化すると書かれている
177 名前:153 mailto:sage [2007/11/10(土) 03:10:07 ] >>176 このアルゴリズムでは最小化できないらしいので、アルゴリズムのほうを優先するみたいです。 よくみたら『この近似解法で作成せよ』と書いてありました。申し訳ございません。
178 名前:デフォルトの名無しさん [2007/11/10(土) 06:18:17 ] 誰かいますか?
179 名前:デフォルトの名無しさん [2007/11/10(土) 06:25:27 ] います
180 名前:デフォルトの名無しさん [2007/11/10(土) 06:26:41 ] イター!!! お願いします俺の宿題やってくださいませ
181 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:28:07 ] どれどれ。
182 名前:デフォルトの名無しさん [2007/11/10(土) 06:32:14 ] ありがとうございます!!!! えーと 数独の問題をグラフ彩色問題に変換せよ ってもんだいなんですけど どうやらこれをアルゴリズムで説明させる問題らしいんです
183 名前:デフォルトの名無しさん [2007/11/10(土) 06:38:08 ] 縦横と正方形に同じ数字が入ってはいけないっていうことだろう 数字をいろと言い換えればいいだけだろう
184 名前:デフォルトの名無しさん [2007/11/10(土) 06:40:27 ] やっぱそれでいいんですよね! 俺もそれ以外に思い浮かばなくて・・・ 数独アルゴリズムの数字を色って書き換えるだけでいいですよね?
185 名前:デフォルトの名無しさん [2007/11/10(土) 06:58:06 ] 解くアルゴリズムは作らないと行けないのか?
186 名前:デフォルトの名無しさん [2007/11/10(土) 07:01:30 ] 16個のヒントの物は作れるか? 最初にヒントとして配置する数字の数は、24〜32個程度が多く、これ以上だと解くのが簡単になる。 逆にそれ以下にするのは作者の技量も必要になってくる。 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、 対称形の問題では18個(初出・パズル通信ニコリ31号 1990年)、 非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
187 名前:デフォルトの名無しさん [2007/11/10(土) 07:05:40 ] 解くアルゴリズムはググッてわかりました ただ、彩色問題とからめた記述がなかったのでどうしようかとおもいまして・・
188 名前:デフォルトの名無しさん [2007/11/10(土) 07:06:38 ] 方針としては、縦か横か、正方形で可能な形を全て埋めてみるといいとおもう 例えば正方形の可能数は9! 通りある 9カ所埋めてみて縦が平気か調べていく
189 名前:デフォルトの名無しさん [2007/11/10(土) 07:14:21 ] 参考になりました! こんな朝早くにありがとうございました
190 名前:デフォルトの名無しさん [2007/11/10(土) 07:24:27 ] 最大でも、9*9! とおりしかないから、全配置を決定しておいてから、初期配置を満たすものをサーチすればいいと思う 9 * (9 !) = 3265920だから解けているからどうかを記録するには3MBくらいだ
191 名前:デフォルトの名無しさん [2007/11/10(土) 07:26:18 ] 1行目が 123456789 だとすると、2行目には上の数字はこないから減らせる
192 名前:デフォルトの名無しさん [2007/11/10(土) 07:50:49 ] 1から9の順列を昇順に求めるプログラム #include <iostream> using namespace std; main(){ int a,b,c,d,e,f,g,h,i,chk[9]={1,1,1,1,1,1,1,1,1},N=0; char **jretu=new char* [9]; for(a=0;a<9;a++) jretu[a]=new char [362880]; for(a=0;a<9;a++){ chk[a]=0; for(b=0;b<9;b++){ if(chk[b]==0)continue; chk[b]=0; for(c=0;c<9;c++){ if(chk[c]==0)continue; chk[c]=0; for(d=0;d<9;d++){ if(chk[d]==0)continue; chk[d]=0; for(e=0;e<9;e++){ if(chk[e]==0)continue; chk[e]=0; for(f=0;f<9;f++){ if(chk[f]==0)continue; chk[f]=0; for(g=0;g<9;g++){ if(chk[g]==0)continue; chk[g]=0; for(h=0;h<9;h++){ if(chk[h]==0)continue; chk[h]=0; for(i=0;i<9;i++){ if(chk[i]==0)continue; jretu[0][N]=a;jretu[1][N]=b;jretu[2][N]=c;jretu[3][N]=d; jretu[4][N]=e;jretu[5][N]=f;jretu[6][N]=g;jretu[7][N]=h;jretu[8][N]=i; N++; }chk[h]=1; }chk[g]=1; }chk[f]=1; }chk[e]=1; }chk[d]=1; }chk[c]=1; }chk[b]=1; }chk[a]=1; }cout<<N;}
193 名前:デフォルトの名無しさん [2007/11/10(土) 08:03:31 ] 32bit変数に、3bitずつデータ入れていけば列に同じ数字があるかどうかはXOR演算で出来るな
194 名前:デフォルトの名無しさん [2007/11/10(土) 08:05:36 ] やっぱり駄目だ 結局9回のループか演算(ifなど)がいるな
195 名前:デフォルトの名無しさん [2007/11/10(土) 08:09:10 ] 123456789 251498736 987654321 に縦方向に同一文字があるかどうかはどう判定する?
196 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 08:58:30 ] >>182 演習問題1は、 >数独(ナンバープレイス) をグラフ彩色問題に変換せよ だからアルゴリズムで説明させるってどういう意味? >(a) あいているマスに1〜9 までのどれかの数字を入れる >(b) 縦・横の各列および太線で囲まれた3 × 3 のブロックに同じ数字が入ってはいけない (b)の定義を以下のように読み替える。 (1)3×3の小ブロック内のマスは全て異なる数字であること (2)あるマスに対して、同じx、yを持つマスは全て異なる数字であること 特定のマス集合に所属するマスが全て異なる数字である事は、 任意のマスを一つ取り出した場合に、そのマス以外の他のマス集合に所属するマスと数字が異なるということと同じである。 これをグラフで表せば、それぞれのマスをグラフの頂点とした完全グラフにおいて、 任意の辺においてその両端の数値が異なることと同義である。 これはグラフ彩色問題の定義である。 というか、お前>>166 だろ?演習問題2ぐらい自分でやれよ。
197 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:06:46 ] ついでに、SEQまではとりあえずやってみて秋田。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5238.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5239.txt DSATURは誰か頼む。
198 名前:デフォルトの名無しさん [2007/11/10(土) 09:11:44 ] 数独で16個の初期配置で解けるか調べるプログラム
199 名前:デフォルトの名無しさん [2007/11/10(土) 09:12:24 ] 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
200 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:21:51 ] >>198 「問題として成立する」と「解けるか」は意味が違うだろ、常識的に考えて。 なんなら初期配置0個でも解けるぞ。
201 名前:198 [2007/11/10(土) 09:51:13 ] >>200 解ける = 配置が一意的に求まる 解けている全配置を求めるプログラム書いたが 二つ目が出てこない 時間がかかりすぎる #include <iostream> using namespace std; main(){ int G[9][9],R[9][9],S[9][9]; int x,y[81],m,n,l,d,cnt; for(n=0;n<81;n++)y[n]=0; for(m=0;m<9;m++)for(n=0;n<9;n++)G[m][n]=R[m][n]=S[m][n]=1; d=cnt=0; for(;;){ x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3; if( G[m][x]+R[n][x]+S[l][x]==3 ){ if(d<80){G[m][x]=R[n][x]=S[l][x]=0; d++; y[d]=0;continue;} cnt++;for(int k=0;k<81;k++){if(k%9==0)cout<<endl;cout<<y[k]<<" ";};d--;} ST: if(y[d]<8)y[d]++; else{ if(d==0){cout<<cnt;return 0;} d--; x=y[d]; m=d/9; n=d%9; l= 3*(m/3) + n/3; G[m][x]=R[n][x]=S[l][x]=1; goto ST;} }}
202 名前:198 [2007/11/10(土) 10:08:16 ] 回転や反転の同一視、数字の同一視などを考慮しても全解答を求めるのは困難そうだ もし全配置が決定できれば、初期配置に対してそれを含む解答がただ一つがどうか調べるだけだ
203 名前:デフォルトの名無しさん [2007/11/10(土) 11:03:59 ] ***** **** *** ** *
204 名前:203 [2007/11/10(土) 11:04:43 ] 投稿ミスですorz
205 名前:203 [2007/11/10(土) 11:14:23 ] 下の図形をfor文で作るのですが・・ よくわかりませんorz ***** **** *** ** * 他スレでヒント貰ったのですが・・ 俺の頭じゃ無理だったみたいです・・
206 名前:203 [2007/11/10(土) 11:15:26 ] なんだか一個づれてますが ピラミッド型です。。本当にすみません
207 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:24:40 ] >>203 ピラミッドを作るなら各段'*'の数は奇数のような気が 偶数の段があると上手くいかないような ******* ***** *** *
208 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:30:24 ] >>205 #include <stdio.h> int main() { int i,j; for(i=5;i>0;i--){ for(j=0;j<5-i;j++) printf(" "); for(j=0;j<i;j++) printf("*"); printf("\n"); } return 0; }
209 名前:203 [2007/11/10(土) 11:30:59 ] 宿題見る限りでは偶数も入ってるんですょね・・ 多少いびつな形かもしれません
210 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:36:05 ] >>209 すると、問題が不明瞭だな。「ピラミッド型」が未定義だ。 これまでの回答で満足できないなら問題をきちんと確認してこい。
211 名前:203 [2007/11/10(土) 11:37:17 ] >208 ぉぉーー どうもです;;
212 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:00:34 ] >>175 ですけどこれじゃあちょっとわかりにくいので 50回移動すると考えれば、考えやすいのかなと。 無制限にこの確率で移動してendにたどり着くことなんて無限にあるんじゃないかと おもってしまった。
213 名前:デフォルトの名無しさん [2007/11/10(土) 12:55:04 ] 0は空マス これ何秒で解ける? 000 000 061 000 200 007 000 940 000 087 000 000 006 000 400 000 000 230 000 078 000 200 006 000 490 000 000
214 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:40:53 ] 542 783 961 839 261 547 761 945 823 387 524 619 126 839 475 954 617 238 615 478 392 278 396 154 493 152 786 1秒もかからんわ
215 名前:デフォルトの名無しさん [2007/11/10(土) 18:09:05 ] [1] 授業単元:C言語 [2] 元のファイルslist.c: www.uploda.org/uporg1105430.txt.html 自分で途中まで作ったやつ:www.uploda.org/uporg1105431.txt.html [3] 環境 [3.1] OS:Linux (家ではWindowsでMinGW+MSYS+XEmacs) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月14日 [5] その他の制限:特にないです [問題文] 課題:slist.c の改良 1.print_person関数を単方向リストを辿るように変更せよ。(自分なりに解決済み) 2.次の機能を実装せよ。 ・標準入力から一行ずつ名前と年齢を読み込む ・名前と年齢はカンマ(,)で区切る ・"foo,19"など ・単方向リストに格納して出力 3.その他(授業でヒント「単方向リストの反転」が与えられ、自分なりに解決済み) [問題文終わり] 自分で作った方はperson_input()の中が全然できてません。 次に続きます。
216 名前:215 [2007/11/10(土) 18:11:48 ] 構造体に名前と年齢を標準入力して、単方向リストで出力をするプログラムを考えています。 標準入力の際に名前と年齢は「tanaka,20」のように一行にするよう指示されています。 ヒントとして以下が与えられました。 char buf[256] ; char *name; int age; while (fgets (buf, sizeof(buf), stdin)) { char *sep = rindex (buf, '\n'); if (!sep) continue; *sep = '\0'; sep = rindex (sep, ','); if (!sep) continue; *sep = '\0'; name = buf; age = atoi (++sep); } また使用している構造体pは struct person { char *name; int age; struct person *next; }; です。このヒントを用いて一行の標準入力から適切に構造体に入れ、 単方向リストに格納するにはどうしたらいいでしょうか。 while文の中がややこしくて終了の仕方も分からないのでよろしくお願いします。
217 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:49:41 ] >>212 無理
218 名前:163 mailto:sage [2007/11/10(土) 18:53:17 ] >>197 ありがとうございます。 あと(2)のほうを、どなたかお願いします。
219 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:04:07 ] 誰かいますか?
220 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:14:21 ] 公にはいないことになっている
221 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:25:26 ] 数独ソルバー www.ffconsultancy.com/dotnet/fsharp/sudoku/index.html
222 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:41:35 ] >>192 char **jretu=new char* [9]; for(a=0;a<9;a++) jretu[a]=new char [362880]; となっているが char jretu[9][362880]; とすればいいだけじゃないか? というかこれは一体何をするプログラムなんだ。
223 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:07:51 ] >char jretu[9][362880]; >とすればいいだけじゃないか? やってみろw
224 名前:デフォルトの名無しさん [2007/11/10(土) 21:24:19 ] 等比数列の和を求めるソースを教えてください 初項a,公比r、項数nとする
225 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:26:13 ] >>224 無能でも無能なりにテンプレを埋めてください
226 名前:デフォルトの名無しさん [2007/11/10(土) 21:32:28 ] 224です 教えてください(涙)
227 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:32:58 ] >>225 折角このオレでも答えられそうな問題なのに、そうつれなくするなよ >>224 >>1 に質問(しつもん)テンプレっていうのが書(か)いてあるから、よく読(よ)むんだよ 読(よ)めない漢字(かんじ)は辞書(じしょ)を引(ひ)くといいよ
228 名前:aho mailto:sage [2007/11/10(土) 21:34:14 ] >>215 struct person{ char name[20]; //char*では'q'の影響を受けるため int age; struct person* next; }; struct person* addList(char* name, int age, struct person* head){ struct person* list; /* メモリ確保 */ if((list = (struct person*)malloc(sizeof(struct person))) == NULL){ printf("malloc error!\n"); return NULL; } strcpy(list->name, name); list->age = age; list->next = head; head = list; return head; }
229 名前:aho mailto:sage [2007/11/10(土) 21:35:14 ] >>228 printf("type 'q' to exit\n"); while(fgets(buf, sizeof(buf), stdin)){ /* 改行コードを取り除く */ char* sep = rindex(buf,'\n'); if(!sep) continue; *sep = '\0'; if(!strcmp(buf, "q")) break; /* カンマまでをbufに格納 */ sep = rindex(buf, ','); if(!sep) continue; *sep = '\0'; name = buf; age = atoi(++sep); head = addList(name, age, head); } 何かあれば言ってちゃぶだい!
230 名前:デフォルトの名無しさん [2007/11/10(土) 21:36:29 ] 数独で16個の初期配置で解けるか調べるプログラム 問題として成立する初期配置の数字の最少個数はまだ結論が出ていないが、非対称の物では17個(初出・パズラー187号 1997年)のものが確認されている。 ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC
231 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:43:01 ] >>226 #!/usr/local/perl $a = <STDIN>;$r = <STDIN>;$n = <STDIN>; print $a*$n if($r == 1);print $a*(1-$r**$n)/(1-$r) if($r != 1);
232 名前:デフォルトの名無しさん [2007/11/10(土) 21:46:45 ] 質問テンプレってどこにあるんですか? 直接とべるようにしてくれたらうれしいです
233 名前:デフォルトの名無しさん [2007/11/10(土) 21:52:50 ] 等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。 ただし、a,rは実数とする
234 名前:215 [2007/11/10(土) 21:55:25 ] >>228 struct person{ char name[20]; //char*では'q'の影響を受けるため int age; struct person* next; }; これはプログラム最初の6行目を書き直せということでしょうか? addList()が何をしててmain内でどうすればいいのか分かりません。
235 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:09:21 ] 宿題を書き込んだ人がこのスレの流れをみてるんだけど 難易度高いやつからくそ低い宿題まで書き込まれるんですね。。。
236 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:14:57 ] >>232 俺が適当にテンプレを埋めて置く、間違ってる所は指摘しろ 【質問テンプレ】 [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 等比数列の初項aと公比rと項数nをキーボードから入力して、それらを画面に表示して最後にそれらの総和を表示する。 ただし、a,rは実数とする [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: BCC [3.3] 言語: C [4] 期限: 2007年11月11日零時零分零秒 [5] その他の制限: 普通に作ってってね。簡単すぎるからって ふざけて物凄いコード書かないでね。
237 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:18:05 ] >>236 #include<stdio.h> int main(void){ double a, r, an, sum; int i, n; printf("等比数列の初項 a (実数) を入力して下さい : "); scanf("%lf", &a); printf("等比数列の公比 r (実数) を入力して下さい : "); scanf("%lf", &r); printf("等比数列の項数 n (整数) を入力して下さい : "); scanf("%d", &n); printf("a=%g r=%g n=%d\n", a, r, n); an=a;sum=0.0; for(i=0;i<n;i++){ sum+=an; an*=r; } printf("sum=%g\n", sum); return 0; }
238 名前:aho mailto:sage [2007/11/10(土) 22:20:42 ] >>234 addList()については以下のページを参照。わかりやすくかいてある。 www9.plala.or.jp/sgwr-t/c/sec15-5.html --構造体のメンバnameの型変更について-- while()内にif(!strcmp(buf, "q")) ていう部分があるでしょ? そこはbufが"q"だったらループを抜けるってこと。 ここまではOKっすよね? この後の文の name = buf; が厄介なのである。 nameの先頭ポインタにbufの先頭ポインタを代入している。 これをaddList()内でstrcpyの代わりにやることが出来ない。 nameはbufのポインタを参照しているから、bufが変わればnameも一緒に変わってしまう。 説明下手でごめんちゃい。
239 名前:デフォルトの名無しさん [2007/11/10(土) 22:20:43 ] 巡回セールス問題を解くプログラムを順列を用いて書きたいのですけど for(i = 0; i < n; i++) used[i]=NO; perm(0); return(0); } void perm(int d) { int i,j; int b[MAXN]; int s = adj[a[0]][a[n-1]]; if(d == n){ for(i = 0; i < n-1; i++){ s+=adj[a[i]][a[i+1]]; } } else { for (i = 0; i < n; i++) { if (used[i] == NO) { a[d] = i; used[i] = YES; perm(d + 1); used[i] = NO; } } } } これだけだとただの列挙になってしまいます 最小値だけをだすにはどうしたらいいでしょうか?
240 名前:aho mailto:sage [2007/11/10(土) 22:22:15 ] >>235 その通り。 その中から暇人達がやりたい問題を選んでやるわけなのだよ、明智君。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:26:14 ] 協力お願いします。 wwwww.2ch.net/test/read.cgi/news4vip/1194617474/
242 名前:215 mailto:sage [2007/11/10(土) 22:29:06 ] >>238 さん感謝です。 まだよく分かっていませんが考えてみます。 分からなかったらまた質問したいので215のリンクを貼りなおしました。 先生の元データ: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5240.txt 自分の途中データ: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5241.txt たぶんまた来ますがよろしくお願いします。
243 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:29:53 ] やりたい問題だけなのか。。。 175なんて理解不能な問題だしたおれってアホだな。。。 上の部分だけならなんとか計算できるレベルなのに 下にもあってしかも上と移動するなんてありえないな。。。 どう書いていけばいいのかわからないんだよね。。。
244 名前:aho mailto:sage [2007/11/10(土) 22:32:52 ] >>175 >>243 もう一度upしてくれ! ファイルが見つからん!
245 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:33:01 ] >>175 なんて問題すら見えないんだが… 余程のエスパーでないと解きようも無い
246 名前:175 mailto:sage [2007/11/10(土) 22:52:39 ] [1] 授業単元: 確率論 [2] 問題文: toku.xdisc.net/cgi/up/vcc/nm12581.txt ここに書きました。 移動50回するものとします。 図はこんな感じです。 toku.xdisc.net/cgi/up/vcc/nm12580.jpg [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月11日 [5] その他の制限: 図の上の1,2,3を構造体配列struct gstate upnum[3] 図の下の10,11を構造体配列struct gstate downum[2]として。 構造体メンバnumに1,2,3,10,11をいれるように。 お願いします。
247 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:05:10 ] >>246 gstateの定義は自由?
248 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:22:28 ] >>246 なんだ 簡単じゃん
249 名前:175 mailto:sage [2007/11/10(土) 23:26:17 ] 自由でいいです。 まー図の状態数をもっと多くしたかったんですけど。 toku.xdisc.net/cgi/up/vcc/nm12583.jpg こういう感じが本番なんですけどね。
250 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:27:36 ] 増えただけで考え方は全く同じ
251 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:34:24 ] 何かこれ有効グラフの最大流と最小カット問題みたいだな
252 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:40:15 ] >>246 行列につっこめれば、ただの積ですむのに……
253 名前:175 mailto:sage [2007/11/10(土) 23:42:31 ] 上だけなら行列につっこめばいんだけど 下が邪魔なんですよ。
254 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:48:54 ] >>253 いや、かわんないだろ?
255 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 23:50:15 ] >>253 なぜ分けて考える
256 名前: ◆54R0MOHTQo mailto:sage [2007/11/10(土) 23:58:08 ] [1] 授業単元:データ構造論 [2] 問題文(含コード&リンク): フリーリストを用いた任意精度整数の実現 かなり長くなるのでアップロードしました kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5242.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc 3.3 [3.3] 言語: C [4] 期限: 11/11 24:00 [5] その他の制限: 特になし 自分の頭では1日かかっても全く分かりませんでした・・・ よろしくお願いします
257 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:11:22 ] >>246 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5243.txt 上でも書いたけど、行列で組んだ方がシンプル。ま、いっかってことで。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:13:05 ] >>246 構造体の名前は変更しておいて 使い方は data.txt をリダイレクトするだけ ans246 < data.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5244.lzh
259 名前:175 mailto:sage [2007/11/11(日) 00:21:33 ] >>257 >>258 ありがとうgございます
260 名前:215 [2007/11/11(日) 00:33:21 ] >>215-216 で質問した者です。 >>228 と>>238 のahoさんによるヒントで書き直してみましたがうまくいきません。 うちのコンパイラに問題があるのかもしれません。 というのも>>238 に紹介されたサイトの長いプログラムをコンパイルしてもうまく 実行されないからです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5245.txt 作ったプログラムがうまくできているか確認お願いします。 でもたぶん間違っているので訂正もお願いします。 (もしahoさんがいれば話が早いかもしれません。)
261 名前:215 mailto:sage [2007/11/11(日) 00:36:10 ] ちなみに>>215 はリンク切れで>>242 にもう一度あげています。
262 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:57:13 ] 246ですけどもうひとつ付け足しでいいですかね?
263 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:00:52 ] >>262 では断る
264 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:16:00 ] グラフって楽しいね
265 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:17:11 ] >>260 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5246.txt あ、めんどくさくてfreeの方直してなかった。ま、いっか。
266 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:20:31 ] >>256 でんつーだーい BigNumberとBigNumberNodeの両方でフリーリスト使うようにするとか書かなきゃ これじゃどっちかだけフリーリストを使って書くかもよ? なんにせよ全部の問題やるとかなり長いので明日までにはやってられないと思うけど つかフリーリストの構造がわからないんじゃあフリーリスト使わないで書いてみればいいのに
267 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:21:24 ] >>266 ちょwww またでんつーだーいかよwwww
268 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:22:22 ] [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 toku.xdisc.net/cgi/up/vcc/nm12605.jpg.html 図はこうです。 toku.xdisc.net/cgi/up/vcc/nm12604.txt.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となります。 下も同様に。
269 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:55 ] >>267 今回は5%3年生のま科だな ちょっと上は7%4粘性のか科だったはず 正直お前らもうちょっと頑張れと
270 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:25:58 ] >>268 つーか、もとの問題文でも上と下は別要素で扱えってなってるの? 激しくクソなんだが。
271 名前:215 [2007/11/11(日) 01:30:41 ] >>265 ありがとうございます! うちのコンパイラ(msys)では実行されませんでしたが学校でコンパイルしてみます。 person_free()微妙に変わってましたがさらに手を加えたほうがいいですか?
272 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:32:49 ] >>271 ^Zって書いてるけど、ctrl+Dで代用。 Windows用の豆知識な。
273 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:11 ] [1] 授業単元: 関数、ポインタ変数 [2] 問題文(含コード&リンク): −− 断熱圧縮過程における温度・圧力の計算 −− 初期温度 T0、初期体積 V0、初期圧力 P0 の空気を、 シンリダー中で圧縮比 E (= V0/V) にまで断熱圧縮するときの体積 V、温度 T、圧力 P を計算する関数をつくる。 1) 関数では、初期温度、初期体積、初期圧力と圧縮比を与え、この条件における温度、圧力、体積を求める。 体積は戻り値とせよ(したがって、温度と圧力はポインター変数となる)。 2) 上記関数を用いて、初期値 T0 = 273.15 °K、V0 = 1.0 m^3、P0= 9.80×10^4 P に対する、E=1,2,3,4,5 における値を出力せよ。 3) 計算結果を次のように表示する。 HomeWork5 19.11.24 K3B55 山田太郎 ----- 計算条件 ----- 初期体積 V0 = 1.00 (m^3) 初期温度 T0 = 273.15 (K) 初期圧力 P0 = 9.80×10^4 (P) ----- 状態変化(計算結果) ----- 圧縮比 E 体積 V 温度 T 圧力 P 1. 1000.00 273.15 98000. 2. 500.00 360.42 258623. 3. 333.33 423.89 456242. 4. 250.00 475.58 682511. 5. 200.00 519.98 932790. ↓続く
274 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:33:25 ] 上と下で区別しないといけないので。 たとえば 上がABBAC と 下がDABCの計算とか 上がBA と 下がADACADBCの計算をできるようにしたいんで。
275 名前: ◆wFVK8h9bmM [2007/11/11(日) 01:33:41 ] 参考: 空気を断熱圧縮するときの体積 V、圧力 P と絶対温度 T の間には、PVκ=一定、PV=RT (R:気体定数) の関係がある。 これより、V=V0/E、T=T0Eκ-1、P=P0Eκ の関係が得られる。ただし、κは比熱比 (= cp/cv) であり、その値は 1.4 である [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C [4] 期限:H19年11月5日 [5] その他の制限:関数、ポインタ変数を使って作るそうです。 よろしくお願いします。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:35:17 ] >>274 それって計算するとき関係ねーじゃんw
277 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:39:39 ] >>276 自分の力量からして区別しないといけないかとおもってました。すみません。 別要素で扱わなくてもいいです。 上がABBAC と 下がDABCの計算とか 上がBA と 下がADACADBCの計算をできるようにできれば。
278 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 01:54:26 ] de.eurosport.yahoo.com/fussball/bundesliga/
279 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:13:27 ] >>275 公式をもう一度確かめてもらえませんか?おかしな結果になります。
280 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:22:59 ] >>279 具体的になんの気体かを書いたほうが良いのでは? 気体→液体のときにかかるエネルギーとか、 なぜか温度が-273度を下回るとか、 そういう計算が出てきちゃうから
281 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 10:34:31 ] >>273 公式が違うような気が T=T0*E^(κ-1) P=P0*E^κ 計算結果も変な気が 何で圧縮比1つまり体積が変化いてないはずなのに V0=1.0m^3の空気が1000.00m^3になってるの?
282 名前:デフォルトの名無しさん [2007/11/11(日) 11:27:07 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 80〜120の数値を正規乱数で発生させるプログラムを作成しなさい。 平均100・標準偏差0.1とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++ Compiler5.5 [3.3] 言語: C++ [4] 期限: 11/12 12時 [5] その他の制限: よろしくお願いします
283 名前: ◆wFVK8h9bmM [2007/11/11(日) 11:28:34 ] >>279-281 問題文はそのままコピペなのでこれ以上の情報が無いんです。
284 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 12:22:40 ] >>283 講師に間違ってると指摘するとボーナス点が貰えるかもよ。 取り合えず、V0=1.00m^3、E=1の時V=V0/E=1000.00ってどう言う事ですか?と質問してみな。 1.00m^3=1000Lだけど単位変えないよな普通 良いのが見つからないんだけどこの辺見れば式が間違ってる事に気付く筈 ttp://www.photon.t.u-tokyo.ac.jp/~maruyama/talks/thermo/sld028.htm
285 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 12:45:04 ] 機嫌損ねて減点とかもありえそうだから困る。
286 名前: ◆wFVK8h9bmM [2007/11/11(日) 12:45:40 ] >>284 はい。まず質問してみます。 返事が返ってきたらまた書き込ませてもらおうと思います。
287 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 13:45:19 ] 病苦 借金苦 精神疾患 絶望 鬱+借金苦 死にたいだけ 自分が要らないから。 いても仕方が無い。他の人が必要としても、私は必要ではない 消滅したいから 今持っているものを失うのが怖い 生きる希望がなぃ 生きてる意味を見出せないから 生きていて三'::::::............... .....::::::`y,. 皆にキモがられる・将来に対する漠然 とした不安ナ:::::::::::::::::::::::::::::::::::::::::::::ヾ 鬱 僕の存在はみんなに不快感を与えるだけだ から「死ねV::::::::::::::::_{{ ({∫∬ノノjヾ:::::{ に耐えられない 恋 誰にも必要とされていない 脳の 片隅から ナ::::::::::::::i`__,,,,,,,ァ_ _,,,,,_ t;;:ヌ しするとしたら、支払い苦 過食症 親 配偶者の死 疲れた イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }fが嫌だから。 解離性同一障害で、別の人格に 体を乗っi {t)テ" ヘ' '___,イ ヽ_/ 介' じゃないから ここに載っている物から一つだけは ムリだけrヘ_,j|!' /ー--''! |'不明でごめんなさい) 人間が嫌い。人間はどこ まででも/| | /二ク !から。そんな生き物と上っ面だけとはいえ、 付き合/ { ! 、 ヾニン ノ。 かゆいから 幸せなときに死にたい 毎日毎日 疑問が| | ! \ _,,./だしても疑問はなくならない、それならばある日生きる ことをやめるか丶\ `__>-ー´ると告げられても、そうかと思うだけだから 今の日本 は腐ってるから 辛い かゆい 人生つかれたから 自分が世界一かわいいから 金がな いから 一度死に際を経験して生きる意味を見出したい 野球部だから 知らない 生き る事自体が矛盾の繰り返しだから(自分の意思で生まれて来ないのに自分の意思で 生きて行く) 帰りたいから 身内が殺人を犯したから、その罪滅ぼしに 変わりはてた顔 自殺が自分にできる唯一の復讐だから そもそも生きている感覚が無かったし、今も無 いので、不問。 差別に耐えられない 今後受ける肉体的苦痛を回避するため 暇つぶし (生きるのに退屈しか感じなくなった 別に死にたくない 体の障害のため 鬱&スロット依 存症 生きてても金食いつぶすだけ 死んだらどうなるんかなぁと 離婚 母親の裏切り、 恐怖 家にいるのが苦痛。受験のことを考えたり…将来に希望がない。親が勉強の事
288 名前:デフォルトの名無しさん [2007/11/11(日) 14:14:07 ] [1] 授業単元:C++ [2] 問題文:シーザー暗号(文字をA-Zの順に、一定数シフトすることで暗号化する。例えば、Return to Romeは、3文字シフトでUhwxuq wr Urphとなる。) で書かれたファイルを解読し、解読文を表示するプログラムをつくれ。 条件: 1.ファイルの中で暗号化されているのは、アルファベットのA-Z(大文字)とa-z(小文字)のみである。 2.空白、ピリオド、コンマ、セミコロン、コロンは、暗号化はされていないが、解読文のアウトプットを表示するとき、正しく表示すること。 3.ファイルの中で最も頻繁に現れるアルファベットが、“e”であるという事実に頼り、シフト数を計算せよ。 [3] 環境 [3.1] OS: Win [3.2] コンパイラ名とバージョン:DevC++ [3.3] 言語: C++ [4] 期限: 2007年11月16日まで。 [5] その他の制限: 標準ライブラリのみ使用可能。Cのクラスは使用不可。 よろしくお願いします。
289 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 14:55:32 ] >>273 #include <stdio.h> #include <math.h> int main(void) { double p, v, r, t, kappa; double p0, v0, t0; int e; p0 = 9.80e4, v0 = 1.0, t0 = 273.15; r = p0*v0/t0; kappa = 1.4; printf("----- 状態変化(計算結果) -----\n"); printf("圧縮比 E 体積 V 温度 T 圧力 P\n"); for(e = 1; e <= 5; e++){ v = v0/e; p = p0*pow(v0, kappa)/pow(v, kappa); t = p*v/r; printf("%d %.2f %.2f %f\n", e, v*1000, t, p); } return 0; }
290 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:29:22 ] 元気ですかー?
291 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:32:26 ] ちょとsYレならんしょこれは・・?
292 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:54:11 ] ここって何人くらいで作業してるの?
293 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:55:29 ] >>292 確か前集計したとき、20人だったような……
294 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:40:09 ] >>166 で [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5237.txt をお願いしたのですが >>169 >>170 の方のを実行させてもらった所、0.05では正しいのですが 今度は0.1で1回少ないようです。どなたかお願いします
295 名前: ◆QipEoOUdX2 mailto:sage [2007/11/11(日) 17:41:55 ] [1] 授業単元:プログラム演習 [2] 問題文:等比数列の初項aと公比rと項数nを入力して、それらの総和を表示する。ただしa、rは実数値とする [3] 環境 [3.1] OS:Windows [3.2] gcc [3.3] 言語: C [4] 期限: 11月12日 03:00 [5] その他の制限 よろしくお願いします
296 名前: ◆EcwVYA3Joo [2007/11/11(日) 17:43:12 ] [1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): キーボードから1〜20までの任意の整数を10個入力する。 さらにもう一つ入力し、最後に入力した値が、始めに入力した10個の整数の中に存在するか存在しないかを調べて、その結果を表示するプログラムを作成せよ。 ※例 1〜20までの整数を10個入力してください。 1 9 11 19 2 3 7 6 15 10 入力した値は 1 9 11 19 2 3 7 6 15 10 です。 探す値(1〜20)を入力してください。:11 11は入力値にあります。 探す値(1〜20)を入力してください。:18 18は入力値にありません。 [3] 環境 [3.1] OS: Windows [3.3] 言語:C言語 [4] 期限:2007年11月11日19:10まで [5] その他の制限: よろしくお願いします。
297 名前:デフォルトの名無しさん [2007/11/11(日) 17:45:24 ] [1] 授業 C言語上級 [2] 結果を出力できるようにプログラムを準備してください. 入力ファイルフォーマット: source-node destination-node packet-loss-rate a b 0.3 a c 0.1 . . z w 0.9 Step1: 二行目からデータを読み込みます.例えば,node a から node bまで のパケット損失率0.3から最後までに読むこと.ノードペア毎のパケット損失率 を記録する. ※ 下記変数が必要 char *node_pair_name[1000]; //ノードペア名を記録する,行ごとは一記録と します.何行があるならば,何個の記録がある.後で使う. double packet_loss_rate[1000];//ノードペア毎に記録する, Step2: 読み込んだデータpacket_loss_rateをJI関数f(double *x, int n)に 渡して,JIを計算します. Step3: JI出力 以上のプログラムを組み込んでください. [3] C言語 [4] 11月13日まで JI関数はすでにできているので気にしなくて大丈夫です。 よろしくお願いします。
298 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:50:33 ] >>294 自己解決..? for(x=0;x<1-h;x+=2*h){ sum+=(f(x) + 4*f(x+h) + f(x+2*h)) * h/3; printf("%f %f\n",sum,x); }
299 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:03:18 ] >>295 >>236
300 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:12:44 ] >>296 #include <stdio.h> #define N 10 int main( int argc, char ** args ){ int a[N]={0}, i, o; printf( "1〜20までの整数を10個入力してください。\n"); for ( i = 0; i < N; ++i ) scanf( "%d", &a[i]); printf( "入力した値は " ); for ( i = 0; i < N; ++i ) printf( "%d ", a[i]); printf( "でし。\n" ); for (;;) { printf( "探す値(1〜20)を入力してください。:" ); scanf( "%d", &o ); for(i=0;i<N;++i) if ( a[ i ] == o ) break; if ( i != N ) printf( "%d は入力値にあります。\n", o ); else printf( "%d は入力値にありません。\n", o ); } return 0; }
301 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 19:23:13 ] たまってるキューはどれくらい?
302 名前: ◆EcwVYA3Joo mailto:sage [2007/11/11(日) 19:40:44 ] >>300 ありがとうございます。 起動出来ませんでしたが…
303 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:00:25 ] >>295 #include<stdio.h> double geoSeries(double init, double ratio, unsigned int nth) { size_t ix = 1; double res = init; while( ix != nth ) { res *= ratio, res += init; ++ix; } return res; } int main(void) { printf("%lf\n",geoSeries(1.0,2.0,1)); return 0; }
304 名前: ◆DGgnWkEBkw mailto:sage [2007/11/11(日) 20:11:20 ] [1] 授業単元: アドバンスドプログラミング [2] 問題文(含コード&リンク): (1) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。 @ main 関数内で3行4列の行列A にキーボードから、要素データを入力する。 A @の後、行列の形式としてA を表示する。 B Aの後、行列A の各要素の先頭アドレスを行列形式で表示する。 注意:入力データは、double 型とする。 (2) 最大で10 行10 列の要素取り扱える行列A,B,C,D に対して下記機能を満足するプログラムを作成せよ。 @ 3 行3列の行列A にデータを入力する。 A 行列A の各要素2倍した行列B を生成する。 B 行列A の転置行列を行列Cとして生成する。 C 行列Aと行列Cの積を行列D に生成する(行列Dは、どんな性質を持った行列か?)。 (3) 最大で10 行10 列の要素取り扱える行列A に対して下記機能を満足するプログラムを作成せよ。 @ 3 行3列の行列A にデータを入力する。 A 行列A を表示する。 B 行列A の3行目を行列A の2行目に加え合わせる。(例えば、21 31 a + a を21 a に代入することを意味 する) C 行列A を表示する。 (4) (1),(2),(3)に対して、各機能の関数を作成して、プログラムのモジュール化を図りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ2005のコマンドプロンプト [3.3] 言語: C [4] 期限: 2007年 11月12日 午前9時 [5] その他の制限: 特にその他の制限は無いですが出来るだけわかりやすくしてもらえるとうれしいです このスレに書き込むのは初めてなので、何か至らないところがあれば指摘してもらえると助かります
305 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:23:39 ] >>303 double geoSeries(double init, double ratio, unsigned int nth) { double res = init; while( --nth != 0 ) res = res * ratio + init; return res; }
306 名前: ◆EcwVYA3Joo [2007/11/11(日) 21:25:25 ] >>300 起動出来ました。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):1〜100の範囲の整数の乱数値を持つ要素数100の配列から、 キーボードで入力した1〜100の範囲ま整数地を探索し、入力値と同じ値が配列に含まれるか調べて、 その探索結果を表示するプログラムを作成する。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限:2007年11月11日22:40まで [5] その他の制限: すみませんが宜しくお願いします。
307 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:52:46 ] しかしプログラミングって授業多いな
308 名前:デフォルトの名無しさん [2007/11/11(日) 21:56:46 ] >>307 そりゃあ、授業内容がプログラミングを習ってるんだから、授業名「プログラミング」が多いのは当然かと。
309 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:11:56 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): =======datalist.txt========= 1st:yamada 2st:okamoto 3st:uchida 4st:kondou =========================== のファイルを1st:、2st:などを取り除いて 名前だけをchar型配列にいれて表示せよ。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] C [4] 期限:11月12日くらい よろしくお願いします
310 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:17:03 ] >>306 #include <stdio.h> #include <stdlib.h> #define NOTFOUND (-1) int find( int ar[], size_t l, int t ){ size_t i; for (i=0;i<l;i++) if ( ar[ i ] == t ) break; return (i!=l)?(int)i:NOTFOUND; } int main( void ){ int ar[100],i,t; srand(time(NULL)); for (i=0;i<100;i++) ar[i]=rand()%100 + 1; /*for (i=0;i<100;i++) printf("%d ",ar[ i ]); puts("");*/ while(1){ do{scanf("%d",&t);}while(!( t>0 && t<101 )); puts( find ( ar, 100, t )==NOTFOUND ? "Not Found.":"Found"); } return 0; }
311 名前:309 mailto:sage [2007/11/11(日) 22:17:28 ] :とその左の部分を取り除くって形でいいです
312 名前:デフォルトの名無しさん [2007/11/11(日) 22:41:17 ] 宿題なんですが [1] 授業単元: プログラミング演習 [2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。 ただしa,bはargv,argcを利用する。 さらに、上のプログラムを読み込み、指定の範囲を切り出して出力するプログラムを書け。 暇な人、お願いします。ついでにargcとargvについて教えて頂けるとうれしいです。 [3] 環境 [3.1] OS:WINDOWS [3.3]言語:C言語 [4] 期限:11月13日
313 名前:デフォルトの名無しさん [2007/11/11(日) 22:52:36 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5248.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C言語 [4] 期限:11月12日午前0時30分まで よろしくおねがいします
314 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:09:51 ] >>309 #include<stdio.h> main() { int i=0,j,k; char line[1000],name[4][20]; FILE *fp; if((fp=fopen("datalist.txt","r"))==NULL){ printf("file can't open.\n"); return; } while(fgets(line,1000,fp)!=NULL){ for(j=0;line[j]!=':';j++); for(j++,k=0;line[j]!='\n';j++,k++) name[i][k]=line[j]; name[i][k]='\0'; i++; } for(i=0;i<4;i++) printf("%s\n",name[i]); fclose(fp); return; }
315 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:17:02 ] >>313 (3) #include<stdio.h> #include<string.h> void put_rstring(const char str[const]) { size_t len = strlen( str ) + 1; while( len != 0 ) putchar(str[--len]); return; }
316 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:23:56 ] >>313 (1) int str_char(const char str[const], const char c) { char *p = strchr( str, c ); return p != NULL ? p - str : -1; }
317 名前:163 mailto:sage [2007/11/11(日) 23:27:14 ] >>163 の(2)誰かお願いします
318 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:28:44 ] >>313 (2) void put_string(const char str[const]) { if(str[0] != '\0') { printf("%c\n",str[0]); put_string(&str[1]); } return; }
319 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:34:33 ] 再帰よりループのほうがいいか void put_string(const char str[const]) { size_t idx = 0; while( str[idx] != '\0' ) printf("%c\n",str[idx++]); return; }
320 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:37:35 ] >>312 >[2] 問題文: 整数型のデータ(サイズは200*200)を読み込み、輝度値を線型に変換(y=ax+b)した上でのプログラム。 輝度値ってなに? というかどういう宿題なのかもう少し詳しく。
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 ] お前の質問も全くわからん
422 名前:こまった [2007/11/13(火) 17:22:26 ] 式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング なんですけど(;△;) どうしたらよいのでしょう。
423 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:56:16 ] >>422 とりあえずがんばってみたら? だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ
424 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:02:44 ] mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか わかりません・・・
425 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:05:28 ] >>424 普通の型と同じでおk
426 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:09:39 ] >>425 例えばDATAっていうクラスがあったとしたら map<key,DATA>でいいってことですか?
427 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:40:02 ] [1] 基礎プログラミング [2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]できれば今日中 [5] 配列
428 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:45:57 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5256.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月20日 [5] その他の制限:if文、if-else文、switch文まで習いました
429 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:00:14 ] >>426 その通り ついでにスレ違い
430 名前:デフォルトの名無しさん [2007/11/13(火) 21:33:40 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、 直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。 この数列のi番目の項を計算する関数は、 以下のように再帰的に記述することができる。 f(i) = f(i-1) + f(i-2) (i > 1のとき) f(i) = 1 (i = 1のとき) f(i) = 0 (i = 0のとき) キーボードから数字を入力して変数aに格納し、 フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。 項の計算は上の定義を使い、 再帰的な呼び出しを実行する関数 int F(int n) を作成して呼び出すこと。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
431 名前:デフォルトの名無しさん [2007/11/13(火) 21:35:17 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を 2進数に変換して画面に出力するコードを作成しなさい。 また,キーボードから入力した2進数の数値を 10進数に変換して画面に出力するコードを作成しなさい。 また、必要に応じて再帰を使っても使わなくてもよい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
432 名前:380 mailto:sage [2007/11/13(火) 21:35:40 ] >>380 です。単位かかってるレポなんでどなたかお願いします。
433 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:35:40 ] >>428 if(a==0) { if(b==0) { if(c==0) printf("It is trivial!\n"); else printf("Boo-boo!\n"); } else { x1 = -c / b; printf("x=%.2f\n", x1); } } else { D = b * b - 4 * a * c; if(D >0) { x1 = (-b+sqrt(D)) / (2 * a); x2 = (-b-sqrt(D)) / (2 * a); printf("x=%.2f,%.2f\n", x1, x2); } else if(D==0) { x1 = -b / (2 * a); printf("x=%.2f\n", x1); } else printf("There exist no real-valued solutions.\n"); } return 0; }
434 名前:デフォルトの名無しさん [2007/11/13(火) 21:36:01 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。 キーボードから円盤の枚数を入力し、 円盤を移動する手順を画面に表示すること。 ・円盤は小さい物から順に1から番号で示す ・柱はL・C・Rで示し、円盤全体をLからRへ移すとする ・可能ならば手順の回数も表示すること 【実行結果(枚数を3と入力した場合)】 円盤枚数を入力 3 円盤1をL→Rへ移す 円盤2をL→Cへ移す 円盤1をR→Cへ移す 円盤3をL→Rへ移す 円盤1をC→Lへ移す 円盤2をC→Rへ移す 円盤1をL→Rへ移す (終了) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
435 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:42:19 ] >>433 ありがとうございました。
436 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:49:56 ] >>434 Hanoiだし再帰使っていいよね? #include<stdio.h> void hanoi(int L,int C,int R,int n){ if(n==0)return; hanoi(L,R,C,n-1); printf("円盤%dを%c→%cへ移す\n",n,L,R); hanoi(C,L,R,n-1); } main(){ int n; printf("円盤枚数を入力"); scanf("%d",&n); hanoi('L','C','R',n); printf("手順の回数 %d\n",~(~0<<n)); }
437 名前:shin [2007/11/13(火) 21:54:59 ] [1]授業単元: 関数入門 [2]問題文: 100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。 5段階評価は、100〜90までは5、89〜80は4、79〜70は3、69〜60は2、60未満は1とする。 この関数を利用して、学生10人の試験の点数を入力して、 それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。 [3]環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4]期限: 2007年11月14日 17:00 まで [5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;) よろしくおねがいします!
438 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:46 ] ウィルスつくってください anonm4@yahoo.co.jp
439 名前:デフォルトの名無しさん [2007/11/13(火) 22:18:09 ] [1] 授業単元:プログラミング、関数基礎 [2] 問題文(含コード&リンク): メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 2007年11月19日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) C言語の基礎しか習っていません。 どなたかよろしくお願いします。
440 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:23:38 ] >>430 #include <stdio.h> int F(int n) { if(n==0) return 0; else if(n==1) return 1; else return F(n-1) + F(n-2); } main() { int a,x; printf("数字を入力:"); scanf("%d",&a); x = F(a); printf("フィボナッチ数列第%d項 = %d\n",a,x); return; }
441 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:35:55 ] >>440 それだと末尾最適化されないはず こっちで #include<stdio.h> #include<stdlib.h> typedef unsigned int uint; uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); } uint fibonacci(uint n) { return iter(1,1,n); } int main(void) { size_t idx = 0; for( ; idx != 10; ++idx) printf("%d: %d\n",idx,fibonacci(idx)); return EXIT_SUCCESS; }
442 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:37:18 ] すまん。大元の問題読んでなかった。 >>440 でいいね。
443 名前:46 mailto:sage [2007/11/13(火) 22:46:48 ] どなたか>>46 をお願いします
444 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:53:23 ] >>443 使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。 で、もしできたら答える。
445 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:59:41 ] >>444 意味わからん。
446 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:10:15 ] >>444 とりあえずforkをぐぐるところから始めるといいと思うよ
447 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:16:14 ] >>443 , >>444 そんなおまいらに、 ttp://www.ipa.go.jp/security/awareness/vendor/programming/b07_04_main.html
448 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:28:57 ] 当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。 プログラムを起動すると、名前と点数を聞いてきます。 10人分入力すると、名前と評価(level)を表示します。 入力した名前が 1024 文字以上だと、バグります。ごめんなさい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5257.txt
449 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:30:46 ] >>448 → >>437
450 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:18 ] >>448 何も考えずに string を勧める
451 名前:shin [2007/11/13(火) 23:47:58 ] >>448 ありがとうございます!!!
452 名前:shin [2007/11/13(火) 23:54:22 ] >>437 です 自力でやったのですが、 エラーを消すためにいろいろとしていたらよくわからなくなりました.. 誰かなおしてください… お願いします!
453 名前:shin [2007/11/13(火) 23:59:48 ] #include <iostream.h> #include <iomanip.h> int hyouka( int ) ; // 5段階評価する関数 main() { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i, result ; for( i=0 ; i<x ; i++){ cout << i+1 << "人目の成績 >>> " ; cin >> a[i] ; result = hyouka( a[x] ) ; } return 0 ; }
454 名前:shin [2007/11/14(水) 00:00:28 ] // 関数hyouka int x ; int hyouka(int a[x]) { int x ; int b[x] ; //1〜5の成績 if(90<=a[i]){ b = 5 ; }else if (80<=a[i]){ b = 4 ; }else if (70<=a[i]){ b = 3 ; }else if (60<=a[i]){ b = 2 ; }else{ b = 1 ; } }
455 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:12 ] 面白い
456 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:42 ] エラー直して欲しいだけならエラーメッセージ見たら大体分かるだろ。
457 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:30:00 ] >>437 (>>452 ) #include <iostream> #include <iomanip> int hyouka( int ) ; // 5段階評価する関数 int main(void) { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i ; for( i=0 ; i<x ; i++){ std::cout << i+1 << "人目の成績 >>> " ; std::cin >> a[i] ; b[i] = hyouka( a[i] ) ; } std::cout << "番号:点数:評価" << std::endl; for( i=0 ; i<x ; i++) std::cout << std::setw(4) << i + 1 << ':' << std::setw(4) << a[i] << ':' << std::setw(4) << b[i] << std::endl; return 0 ; }
458 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:31:25 ] 承前 int hyouka(int a) { if(90<=a){ return 5 ; }else if (80<=a){ return 4 ; }else if (70<=a){ return 3 ; }else if (60<=a){ return 2 ; } return 1 ; }
459 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:42:21 ] >>458 横からスマンがこういうほうが個人的に好き int hyouka(int a) { return 90 <= a ? 5 : 80 <= a ? 4 : 70 <= a ? 3 : 60 <= a ? 2 : 1; }
460 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:56:02 ] >>439 当方の環境は、WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 表示は小数点3桁まで、重根の判定は幾分甘くしています。 係数が整数ならば、問題ないと思います。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5258.txt
461 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:59:46 ] 【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C言語 [4] 期限: ([2007年11月14日24:00まで) [5] その他の制限: 書き直しました
462 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:05:27 ] >>461 自分のレス流れたから書いてるだけじゃねーかタコが 書き直すんならもっと早くやっとけよ低脳
463 名前:aho mailto:sage [2007/11/14(水) 01:06:43 ] >>461 作るの面倒だから、アルゴリズムを・・・ "s"が並ぶことはないから単純に"b"かどうかを判定すればよい。 従って、 for(省略) if(!strcmp(sdata[i].word[j], "b")) sdata[i].num++; end of for これじゃあかんのかな?
464 名前:458 mailto:sage [2007/11/14(水) 01:18:30 ] >>459 458 のは、ちょっとずぼら過ぎたね int hyouka(int a) { if (90<=a) return 5 ; if (80<=a) return 4 ; if (70<=a) return 3 ; if (60<=a) return 2 ; return 1 ; } に訂正
465 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:27:22 ] >>461 #include<stdio.h> struct tfield{ char word[5]; int num; }; int width_get(int value){ char tmp[16]; return sprintf(tmp, "%d", value); } int main(void){ struct tfield sdata[20]; const char *initial_data="bsbsbbsbsbsbsbbsbbsb"; int i, prev='b', count; for(i=0,count=0;i<20;i++){ if(prev=='b') count++; sprintf(sdata[i].word, "%*c", width_get(count), initial_data[i]); sdata[i].num=count; prev=initial_data[i]; } for(i=0;i<20;i++) printf("%s", sdata[i].word); printf("\n"); for(i=0;i<20;i++) printf("%d", sdata[i].num); printf("\n"); return 0; }
466 名前:461 mailto:sage [2007/11/14(水) 01:47:05 ] >>463 >>465 ありがとうございました。
467 名前:デフォルトの名無しさん [2007/11/14(水) 02:09:09 ] 【質問テンプレ】 [1] 授業単元: [2] 数独を解くプログラムを作れ(なるべく詳しく説明もいれて) [3] 環境 [3.1] 特に指定なし [3.2] 特に指定なし [3.3] 言語:C [4] 期限: 11月17日 [5] 特に制限はなく 単にCを使って数独をとくプログラムをかけばよいらしいのですが 難易度があがってもなるべく解けるように・・・といわれました。 どうしてもうまくいきません。 よろしくお願いします
468 名前:デフォルトの名無しさん [2007/11/14(水) 02:48:15 ] 各ブロックに、ある数字が入る可能性が1マスしかない場合 各ブロックに、ある2個の数字が入る可能性が2マスしかない場合 →それらのマスには他の数字は入らない、他のマスにはその数字は入らない 各行ごとに、ある数字が入る可能性が1つのブロックにしか残っていない場合 →そのブロックの他の行にはその数字は入らない
469 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 03:45:09 ] 数独程度だと、なまじアルゴリズムを凝るよりも安直に作った方がいい。 何故ならば、どんなに安直に作っても1秒と掛からずに解けてしまうから。 つまり、凝ったアルゴリズムを考える手間やデバッグの暇に何千問も処理できるってこった。
470 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 05:51:45 ] [1] 基礎プログラミング [2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]11月14日朝10時 [5] 配列 おねがいします
471 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:12:34 ] >>467 数独のソースはネットで探せば確実にあります まずは探しましょう
472 名前:cvop [2007/11/14(水) 07:41:40 ] プログラミング初心者ですが、 画像処理のプログラミングで、PGM画像中にある、 それぞれのオプティカルフローの角度[度]と大きさ[pixel]の 頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を 検出し、グラフにしたい(ヒストグラムみたいに)のですが、 どのようなプログラムを作れば良いのでしょうか? 分かる方がいらっしゃれば教えて頂けないでしょうか。 言語はC言語です。
473 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:58:56 ] スレ違い
474 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 09:16:19 ] [1] 授業単元:データ構造 [2] 問題文(含コード&リンク):edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:mingw-jp.bat [3.3] 言語:C++ [4] 期限:2007年12月5日20:00まで [5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等) 丸投げですがよろしくお願いします。
475 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:06:42 ] >>474 「なお、写したと思われるほど酷似したレポートが複数提出された場合、 原著がどれかの調査を行わず、抽選で一通のレポートのみを評価の対象とし」 こ れ は お も し ろ い
476 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:28:45 ] >>474 レポートも書けってこと?Wordでいいのか?
477 名前:デフォルトの名無しさん [2007/11/14(水) 10:46:21 ] [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] その他の制限:なし よろしくお願いします。
478 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 11:52:10 ] >>429 ありがとうございました スレ違いすみませんでした・・・
479 名前:デフォルトの名無しさん [2007/11/14(水) 13:10:41 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n nの平方根、およびnの立方根を求めて、以下のような数表を作成する プログラムを完成せよ。 n n*n 1/n sqrt(n) n∧(3/1) 1 1 1.00000 1.00000 1.00000 2 2 0.50000 1.41421 1.25992 == == ======= ======= ======= 25 625 0.04000 5.00000 2.92402 (課題分では===のところはくっついていて、 2乗、1/nなどのところはくっついてしまっていますが それぞれ離れています。やりかたがわかりませんでした。 大変見にくくてすみません) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限: 2007年11月14日(15日提出) [5] その他の制限: 習い始めたばかりなのでよくわかりませんが ないと思います。 宜しくお願いします。
480 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:10:48 ] >>475 ひねくれた教授なのでw >>476 プログラムだけで大丈夫です。 なるべく初歩的な文法でお願いしたいのですが…
481 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:06:17 ] >>480 教授にメールしとくわ
482 名前:デフォルトの名無しさん [2007/11/14(水) 14:31:30 ] >>467 数独はアルゴリズムは簡単で良いけど、ハッシュ表は導入した方が良いよ ちょっとやってみた #include <iostream> using namespace std; main(){ int z,w,l=0,n,i,j,bf[8][81]; int tmp[4][3]={0,1,9, 0,9,1, 8,-1,9, 8,9,-1}; for(n=0;n<4;n++){ for(i=0;i<9;i++)for(j=0;j<9;j++){ z=tmp[n][0]+tmp[n][1]*i+tmp[n][2]*j; bf[l][z]=bf[l+1][80-z]=i+9*j;}l+=2;} int x[81],p[81],q[81];for(z=0;z<81;z++)x[z]=rand()%10; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<x[z]<<" ";} cout<<endl<<"のハッシュ値を求める。"<<endl; int num[10]; for(i=0;i<81;i++)p[i]=9; for(l=0;l<8;l++){ for(i=0;i<10;i++)num[i]=0;i=1; for(z=0;z<81;z++){ n=x[ bf[l][z] ]; if(n>0)if(num[n]==0){num[n]=i;i++;} q[z]=num[n];} for(i=0;i<81;i++)if(p[i]<q[i])goto end; else if(p[i]>q[i])break; if(i<81)for(i=0;i<81;i++)p[i]=q[i];end:} unsigned int rh[81][9],hash=0; for(z=0;z<81;z++)for(i=0;i<9;i++)rh[z][i]=(rand()<<16)+rand(); for(z=0;z<81;z++)hash^=rh[z][p[z]]; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<p[z]<<" ";} cout<<"\nと変形され\nハッシュ値は"<<hash<<endl;}
483 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:35:23 ] www10.atwiki.jp/prospi3/pages/1.html www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www29.atwiki.jp/purosupi4/ www.geocities.jp/agepan1230/
484 名前:デフォルトの名無しさん [2007/11/14(水) 14:37:14 ] ハッシュ表があれば調べる局面が、1/8以下に出来るよ すぐ解答が出る場面では逆に鈍くなると思うけど、0.5秒以上かかるならハッシュ表使ったら速いと思うよ
485 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:52:57 ] >>481 教授公認だから問題無しw
486 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:58:32 ] >>485 「ひねくれた教授」が公認なの?
487 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:09:02 ] 474「宿題を2chに丸投げしておk?」 教授「おk。公認するよん」 こんな感じか
488 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:11:47 ] 底辺大学の教授ってそんなもんなのか
489 名前:デフォルトの名無しさん [2007/11/14(水) 15:24:06 ] [1] 授業単元:情報技術 [2] 問題文: 「キーボードから以下の整数値を入力し,最大値を表示するプログラムを作成せよ キーボードから入力する値 25 , 6 , 45, 18 , 57, 5 ヒント for文を用いてキーボードから数値を読み込みながら, if文を使って読み込んだ数値がそれまでに読み込んだ 数値の最大値maxよりも大きければその値を更新する ・・・・・・ for(i=?;i<=?;??){ scanf(?????); if( ? > max) ???????; } printf(?????); ・・・・・・」 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:すみません、よく分かりません [3.3] 言語:C [4] 期限:2007年11月16日12:00 [5] その他の制限:if文、for文あたりの簡単なレベルでお願いします 大学の授業の課題です。 低レベルかもしれませんが、さっぱり分からないので、よろしくお願いします。
490 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:46:17 ] >>489 これが大学の授業か……
491 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:49:14 ] >>486 >>487 いや、教授自身が2ちゃんねらーw だからここに問題が漏れてる事も知ってる。というより本人が自分で回答とかしてるしw
492 名前: ◆30lFlSJfAI [2007/11/14(水) 15:54:27 ] [1] 授業単元: 情報基礎 [2] 問題文:下記の問題のプログラミングを作成してください。 関数y=1/xをシンプソン法により、区間[1,2] で積分せよ。 このとき、区切りの数を変えることによって精度が変化することを確認せよ。 ただし、解析的な解はloge2=0.69314718である [3] 環境 OS: Windows 言語: C言語のみ [4] 期限: ([2007年11月21日まで] [5] 制限は特にありません。 プログラミング初心者にもかかわらず大学でこのような課題を出されました。 来週までで申し訳ないのですが、よろしくお願いします。
493 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:54:42 ] _,,..r'''""~~`''ー-.、 ,,.r,:-‐'''"""~~`ヽ、:;:;:\ r"r ゝ、:;:ヽ r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ :i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^! ! i!. | ;| l| ''"~~ 、 i' | i! ヽ | | | ,.:'" 、ヽ、 !,ノ ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::| r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ、坂本直志君見てるー? ,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/ !、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'" | \ i:" ) | ~`'''ー---―''"~ ヽ `'" ノ
494 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:01:02 ] >>491 学籍番号は何番?
495 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:09:34 ] 教授職って何気に終身雇用なんだよね 同じ空気吸ってても一山いくらで売られていく子羊たちとの間には明らかな次元断層がある
496 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:12:35 ] 日本語でおk
497 名前:shin [2007/11/14(水) 16:15:56 ] >>457 >>458 >>459 ありがとうございました!!!
498 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:18:09 ] >>474 課題1-1 #include <stdio.h> #include <stdlib.h> #include <time.h> #define STUDENT_NUM_MAX 99999 int get_rand_score(void){ int i, score=0; for(i=0;i<20;i++) score+=rand()%6; return score; } int main(int argc, char *argv[]){ int i, index, student_num; if(argc!=2){ fprintf(stderr, "\nUsage : %s <number>\n", argv[0]); fprintf(stderr, "%5s : number (1-%d)\n", "", STUDENT_NUM_MAX); return 1; } if(sscanf(argv[1], "%d%n", &student_num, &index)<1 || argv[1][index]!='\0'){ fprintf(stderr, "\nERROR : Invalid parameter. %s\n", argv[1]); return 2; } if(student_num<1 || student_num>STUDENT_NUM_MAX){ fprintf(stderr, "\nERROR : Out of range (1-%d). %d\n", STUDENT_NUM_MAX, student_num); return 3; } srand(time(NULL)); for(i=1;i<=student_num;i++) printf("C%05d %d\n", i, get_rand_score()); return 0; }
499 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:49:44 ] >>492 シンプソン公式がわかってれば単純なforループの問題でしかないから。
500 名前:デフォルトの名無し [2007/11/14(水) 17:13:23 ] [1] 授業単元: プログラミング1 [2] 問題文(含コード&リンク): アスキーコードの値を対応する文字を組み合わせた 一覧表を出力するプログラムを作成せよ。 アスキーコードの範囲は「32」〜「126」、スペースには△を出力。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 今週中にお願いします。 [5] その他の制限: なし
501 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:24:27 ] #include<stdio.h> int main(void){ int i; printf(" 32 △\n"); for(i=33;i<127;i++) printf("%3d %c\n",i,i); return 0; }
502 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:30:15 ] >>474 課題 1-3 1-4 1-5 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5259.c
503 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:03:55 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):stackプログラムを配列ではなく、連結リストを用いて、作成せよ。 配列で実現する時に比べて、その利点及び欠点をのべよ。 stackプログラム:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5260.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2005 [3.3] 言語:c++ [4] 期限:2007年11月16日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで よろしくおねがいします。
504 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:14:44 ] >>492 #include <stdio.h> #include <math.h> double func1(double x) { return 1.0/x; } double simpson(double a, double b, int n, double (*func)(double)) { double odd = 0, even = 0, h = (b - a)/n; int i; for(i = 1; i < n; i += 2) odd += func(a + i*h); for(i = 2; i < n; i += 2) even += func(a + i*h); return h/3.0*(func(a) + func(b) + 4*odd + 2*even); } int main(void) { int n; for(n = 2; n <= 1024; n *= 2) printf("%4d : %.8f\n", n, simpson(1.0, 2.0, n, (double (*)(double))func1)); return 0; }
505 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 20:17:36 ] >>503 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5261.txt
506 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 20:58:35 ] >>460 本当にありがとうございます。 助かりました。
507 名前:デフォルトの名無しさん [2007/11/14(水) 21:26:19 ] どなたか>>479 を宜しくお願いします。 周りと比べてかなりレベルの低い問題だとは思いますが まったくわからないのでお願いします。
508 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:45:15 ] >>507 #include <iostream> #include <iomanip> #include <algorithm> #include <cmath> using namespace std; struct succ{ int operator()(){ return _n++; } succ():_n(1){};int _n; }; struct print{ double qube( const int & n ) { double x = 0, xn = 1; while ( fabs( x-xn ) > 1.0e-8 ) { x = xn; xn = x-(x*x*x-n)/(3.0*x*x ); } return xn; } void operator()( const int & n ){ cout<<setw(4)<<n<<" "<<setw(4)<<n*n<<" "<<setw(9)<<1.0/n<<" "<<setw(9)<<sqrt(n)<<" "<<setw(9)<<qube(n)<<endl; } }; int main( int argc, char ** args ){ const int N = 25; int v[N]={}; cout << setw(4) << "n"<<setw(4)<<"n^2"<<setw(9)<<"1/n"<<setw(9)<<"n^1/2"<<setw(9)<<"n^1/3"<<endl; generate( v, v+N, succ()); for_each( v, v+N, print()); return 0; }
509 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:59:04 ] >>474 課題1-5 合格最低点を引数に取り、受験番号順に合格者リストを表示するプログラムを作りなさい。 void pass(int border) { char number[7]; int score; while (scanf("%s %d", number, &score) == 2) if (score >= border) printf("%s\n", number); }
510 名前:デフォルトの名無しさん [2007/11/14(水) 21:59:29 ] [1]プログラミング2 [2] 以下は、下記フォーマットにしたがってデータが収められている配列を表現するためのプログラムです。また、そのフォーマットを持つ配列を引数として、有効なレコード数(つまり配列の0番目の値)を返り値として返す関数 int list_len(const int * list) を作成し、プログラムを完成させなさい。 フォーマット(score table) 配列の要素 内容(ただしi≧0) 0番目 有効なレコード数(K) 5*(i-1)+1番目 i番目の学生の英語の得点 5*(i-1)+2番目 i番目の学生の国語の得点 5*(i-1)+3番目 i番目の学生の数学の得点 5*(i-1)+4番目 i番目の学生の理科の得点 5*(i-1)+5番目 i番目の学生の社会の得点
511 名前:デフォルトの名無しさん [2007/11/14(水) 22:00:20 ] サンプルコード #define MAX 101 /* 得点を入れる配列の最大値 */ #define REC 5 /* 1レコードの要素数 */ #define SUB 6 /* 科目名の文字数 */ char sub[REC][SUB]={"英語","国語","数学","理科","社会"}; /* 関数作成 */ int main() { /* 変数は適切に宣言する */ int score[MAX]={3, /* レコード数 */ 45, 60, 36, 72, 53, /* 1レコード目 */ 87, 48, 77, 69, 91, /* 2レコード目 */ 23, 54, 49, 58, 62}; /* 3レコード目 */ p=score+1; size=list_len(score); /* ここに書く */ } 実行例 +----++----++----++----++----+ |英語||国語||数学||理科||社会| +----++----++----++----++----+ | 45|| 60|| 36|| 72|| 53| +----++----++----++----++----+ | 87|| 48|| 77|| 69|| 91| +----++----++----++----++----+ | 23|| 54|| 49|| 58|| 62| +----++----++----++----++----+
512 名前:デフォルトの名無しさん [2007/11/14(水) 22:02:19 ] [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio 2005 [3.3] 言語:C言語 [4] 期限:2007年11月17日まで [5] その他の制限ポインタのあたりまで
513 名前:デフォルトの名無しさん [2007/11/14(水) 22:10:43 ] >>508 ありがとうございます。 本当に助かりました。
514 名前:デフォルトの名無しさん [2007/11/14(水) 22:28:24 ] >>431 どなたかお願いします。
515 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:39:28 ] >>505 ありがとうございました。
516 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:43:31 ] >>510 #include <stdio.h> #define MAX 101 /* 得点を入れる配列の最大値 */ #define REC 5 /* 1レコードの要素数 */ #define SUB 6 /* 科目名の文字数 */ char sub[REC][SUB]={"英語","国語","数学","理科","社会"}; /* 関数作成 */ int list_len(const int * list); int list_len(const int * list) { return list[0]; } int main() { /* 変数は適切に宣言する */ int size, x, y; int *p; int score[MAX]={3, /* レコード数 */ 45, 60, 36, 72, 53, /* 1レコード目 */ 87, 48, 77, 69, 91, /* 2レコード目 */ 23, 54, 49, 58, 62}; /* 3レコード目 */
517 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:44:10 ] >>516 p=score+1; size=list_len(score); /* ここに書く */ for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); for (x=0 ; x<REC ; x++) { printf("|%s|", sub[x]); } printf("\n"); for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); for (y=0 ; y<size ; y++) { for (x=0 ; x<REC ; x++) { printf("|%4d|", *p);
518 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:44:41 ] >>517 p++; } printf("\n"); for (x=0 ; x<REC ; x++) { printf("+----+"); } printf("\n"); } }
519 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:52:25 ] >>431 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void ten2two(int num) { if (num==0) return; ten2two(num/2); if(num&1) { printf("1"); } else { printf("0"); } } int main() { int num; scanf("%d", &num); ten2two(num); printf("\n"); return 0; }
520 名前:デフォルトの名無しさん [2007/11/14(水) 23:03:19 ] ただ .exe 立ち上げさせるだけのプログラム作りたいんだけど、何かいい方法ある?
521 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:07:05 ] >>431 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int two2ten(char *buf) { unsigned int num=0, i; for (i=0 ; i<strlen(buf) ; i++) { num*=2; if (buf[i]=='1') { num++; } } return num; } int main() { char buf[100]; scanf("%s", buf); printf("%d\n", two2ten(buf)); return 0; }
522 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:07:31 ] >>520 ダブルクリックでおk
523 名前:デフォルトの名無しさん [2007/11/14(水) 23:08:50 ] >>522 いや、ごもっともなんだけどね。。。 どういう命令をすればやってくれるのかなって思って。
524 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:12:27 ] >>520 #include <stdlib.h> int main() { system("%systemroot%\\NOTEPAD.EXE"); return 0; }
525 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:12:47 ] >>523 system
526 名前:デフォルトの名無しさん [2007/11/14(水) 23:16:57 ] >>524 , 525 ありがとお。こんなの知らなかったお。
527 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:21:59 ] >>477 当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 乱数は M系列乱数、ガウス分布化は局座標法を使用しています。 仕入れ部数を600部から1000部まで1ずつ変化させ、それぞれに 大して 6 万回の試行を行い、平均を算出しています。 さらに、ピークをわかりやすくするために隣接3区間の平均をもって 平準化しています。(が、はっきりしませんでした。) 結果だけのべると、800 より少し多いところ(830〜850) に極大があるようです。 実行すると仕入れ部数と利益が対になって出力されます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5262.txt (参考文献)C言語による最新アルゴリズム事典/奥村晴彦/技術評論社 1991 ISBN4874084141
528 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:32:29 ] >>474 課題1-4 合格最低人数を引数にして合格最低点を求めるプログラムを作成しなさい。 但し、引数のとりかたは付録を参照すること。 void border(int count) { char number[7]; int score; score = 101; while (count > 0 && scanf("%s %d", number, &score) == 2) count--; printf("%d\n", score); }
529 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:33:08 ] >>479 #include <stdio.h> #include <math.h> int main() { int n; printf(" n n*n 1/n sqrt(n) n∧(3/1)\n"); for (n=1 ; n<=25 ; n++) { printf("%2d ",n); printf("%3d ",n*n); printf("%.5f ",(float)1/n); printf("%.5f ",sqrt((float)n)); printf("%.5f ",powf((float)n, (float)1/3)); printf("\n"); } return 0; }
530 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:31:07 ] >>474 課題1-1 99999 以下の整数の引数をとり、受験番号を C00001 から順に C00002 のように引数の数だけ発生させ、 さらに各受験番号に対して乱数で発生させた点数を組み合わせたテストファイルを作るプログラムを作りなさい。 但し、点数は、 0 点から 5 点までを乱数で 20 回発生させ和を取ることで求めなさい。 引数のとりかた、乱数の発生の仕方は付録を参照のこと。 void list(int count) { int number, score, i; for (number = 1; number <= count; number++) { score = 0; for (i = 0; i < 20; i++) score += myrand(); printf("C%05d %d\n", number, score); } }
531 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:24:00 ] >>479 当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 C++ の書式設定を駆使しています。3 項演算子をネストさせています。 ので、宿題の答えとしては難ありですが、細かいところまで題意を満たす ためには致し方なかったのでした。すみません。 詳しめの参考書を見てください。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5263.txt
532 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:36:26 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): unsigned long long 型の x, y に対して x^2 を y で割った余り計算しなさい。 ただし x^2 がオーバーフローする 可能性があることに注意すること。 [3] 環境 [3.1] OS: Windows (Cygwin) [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: どちらでも可 [4] 期限: 16日まで [5] その他の制限: 特にありません おねがいします
533 名前:デフォルトの名無しさん [2007/11/15(木) 01:57:19 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5264.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5265.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: C [4] 期限: 11/16 pm5:00 [5] その他の制限: 特にありません。 よろしくお願いします。
534 名前:デフォルトの名無しさん [2007/11/15(木) 02:14:51 ] メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 よろしくお願いします。。
535 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:48:36 ] 移項して判別式で判定すりゃいいんだから、>>433 のを適当に変えればいいだけだろ。
536 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:54:15 ] >>534 あの、>>460 に問題がありましたら何がまずいのか教えてください。
537 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:58:19 ] >>474 課題1-3 点数表を読み込み、点数の高い順に出力するプログラムを作成しなさい。 プログラムにおいて点数表の容量を制限してはいけない。 コンピュータのメモリが許す限り大きな点数表も表示できること。 int compare(const char *a, const char *b) { return atoi(b + 7) - atoi(a + 7); } void rank(void) { int size, count; char *buffer; fseek(stdin, 0L, SEEK_END); size = 10; count = ftell(stdin) / (size + 1); buffer = (char *)calloc(count, size); fseek(stdin, 0L, SEEK_SET); fread(buffer, size, count, stdin); qsort(buffer, count, size, compare); fwrite(buffer, size, count, stdout); free(buffer); }
538 名前:デフォルトの名無しさん [2007/11/15(木) 07:02:14 ] >>532 #include <iostream> using namespace std; #define N 4294967295 // 2^32 - 1 unsigned int amari(unsigned int x, unsigned int y){ int k=x-y; if(k<0)k=-k; if(x>k)x=k; k=N/x; int p=x/k,l=x%k; return ((x*k)%y)*p+((x*l)%y)%y;} main(){ int x=97,y=123; cout<<amari(x,y)<<" "<<(x*x)%y; }
539 名前:538 [2007/11/15(木) 07:28:16 ] バグがあったよ
540 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:44:16 ] あと型が違うんじゃね?
541 名前:デフォルトの名無しさん [2007/11/15(木) 10:01:04 ] >>494 07KC189
542 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:57:29 ] 画像の指定範囲を決めてそこだけを出力するプログラム教えてください。
543 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 12:21:54 ] [1] 授業単元: 確率論 [2] 問題文: ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5266.txt 図はこうです toku.xdisc.net/cgi/up/vcc/nm13048.jpg.html [3] 環境 [3.1] OS: LINUX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11月15日24:00 [5] その他の制限: お願いします。
544 名前:538 [2007/11/15(木) 13:48:07 ] #include <iostream> using namespace std; typedef unsigned long int Nsu; Nsu N; Nsu amari(Nsu x, Nsu y){ int a; x%=y; a=x-y; if(a<0)a=-a; if(x>a)x=a; a=N/x; int p=x/a, q=x%a , r=0; for(int i=0;i<p;i++){r+=(a*x)%y; r%=y;} r+=(q*x)%y; r%=y; return r;} main(){ N=-1; Nsu x,y; x=(1<<16)-17; y=(1<<14)-3; cout<<amari(x,y)<<" "<<(x*x)%y; }
545 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:14:41 ] >>541 存在しない学籍書いてるんじゃねーよ 04kc〜06kcのどれかだろ? 2年〜4年のどれかなんだから
546 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 16:45:36 ] >>543 とりあえず「重き」ってなんなんだ? 「重さ」だよな…… それともオレの知らない専門的な言い回しなのか……
547 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 16:51:37 ] >>543 >>257 >>258 でダメな理由は?
548 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:04:22 ] 重みじゃないの?
549 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:07:26 ] >>544 x%y が0の場合にゼロ除算
550 名前:デフォルトの名無し [2007/11/15(木) 17:27:31 ] 1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 文字列を正数に変換せよ。 入力が空の場合は処理を終了。「入力されていません」と表示。 入力の最大入力桁数は4バイトとし、桁あふれに対して「4文字で入力してください」と表示。 入力が半角数字以外に対しては「半角数字以外入力できません」と表示。 入力がゼロの場合は「0は入力できません」と表示。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 4.0 [3.3] 言語: C言語 [4] 期限: 今週中にお願いします。 [5] その他の制限: 特にありません
551 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:37:23 ] >>550 突っ込むべき部分があるな 入力の最大入力桁数は四バイト? それとも四文字? -129のような文字列は129に変換? 129を変換したあとの数字は、1290? それとも0129?
552 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:56:30 ] >>550 #include<stdio.h> #include<string.h> #include<ctype.h> int get_value(void){ char buf[4+1+1]; // 4文字オーバーチェック + 終端 \0 int i, value=0, buflen; fgets(buf, sizeof(buf), stdin); buflen=strlen(buf); if(buf[buflen-1]=='\n') buf[--buflen]='\0'; if(buflen<=0){ puts("入力されていません"); return -1; } if(buflen>4){ puts("4文字以内で入力してください"); return -1; } for(i=0;buf[i];i++){ if(!isdigit(buf[i])){ puts("半角数字以外入力できません"); return -1; } value=value*10+buf[i]-'0'; } if(value==0) puts("0は入力できません"); return value; } int main(void){ int value; value=get_value(); if(value>0) printf("\n%d\n", value); return 0; }
553 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:41:05 ] [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5263.txt サンプルプログラムは、窓口が1個で,行列が窓口の前にできる場合に,時間と共に窓口の前にできる行列の様子を調べるものである. (1)サンプルプログラム内の乱数処理を srand関数とrand関数を使用するように書き換えなさい。 (2)参考プログラムを元に,パラメータs, q, aを構造体のメンバ として扱うプログラムBに変更しなさい. (3)作成したプログラムを変更し,窓口が2個の場合にも(すなわち1個または2個の場合に)対応できるようにしなさい。 このとき,窓口の個数(1または2)もパラメータLやM, シミュレーション時間と同様に入力して指定できるようにしなさい. なお,新しく到着した客は,最も短い行列(待っている人が少ない窓口)に並ぶものとする. 全ての窓口の行列が同じ長さの場合には,一様な確率 (窓口が2個の場合は1/2の確率)で並ぶ窓口を決定するものとする. (4)窓口が3個以上にも対応できるようにしなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: 明日までです… [5] その他の制限: 特に無いと思います
554 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:10:23 ] >>547 実際はね、重きじゃなくて入力データなんです。 入力データ(配列でいうとdata[50][5])が移動間を動く感じなんですけど 各状態にデータがあって、その入力データを各状態のデータによって 計算して出された値を各移動確率とかけるというわけなんですけど。 で書いてくださったプログラムにおいて、 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i]);は7つの状態間で1回の移動につき確率計算 } ってのはわかるんです。1次元配列として引数として渡せば できるのかなーと今思いました。 for(cnt=0;cnt<50;cnt++){それを50回 for(i=0;i<7;i++)cal_next_gs(list[i],data[cnt]);は7つの状態間で1回の移動につき確率計算 } void cal_next_gs(struct gstate *gs,float data[5]) { //計算して移動確率を計算 } でいけそうな感じがします。
555 名前:デフォルトの名無しさん [2007/11/15(木) 21:27:17 ] >>527 ありがとうございました。
556 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:38:48 ] >>554 何をいいたいのか、いまいち分からないんだが、 どんな入力に対してどんな出力が欲しいの? 電気回路上の電流のシミュレーション?
557 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:58:18 ] 入力に対して隠れマルコフモデル(HMM)を使って確率を出すんですけど、 この例では3状態のHMMと2状態のHMMを使って最終的にendにたどりつくとこの 状態の確率が出力値となるんです。 で1つの移動に対して入力1フレームを正規分布によって評価し確率を出す。 その正規分布をHMMで評価するんです。 そのHMMには平均分散、移動確率とあるんですけど、 平均分散を正規分布で用いて確率をだして、移動確率をかけて 最終的な移動の確率となるんです。 前につくってもらったのが移動確率でのみの計算でした
558 名前:デフォルトの名無しさん [2007/11/15(木) 22:01:52 ] 神経衰弱を行うゲームを作成すること。 ただし、カードは52枚全て使用し、絵柄の 区別は無いものとする。 このプログラムをお願いします。(^_^)
559 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:02:55 ] すみません、どなたか>>489 をお願いします。 自分でもあつかましいと承知しているのですが、 どうにも分からないので・・・。 コンパイラ名はVS2005のようです。 よろしくお願いします。
560 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:12:59 ] 557ですけど 頼んだのは移動してくる確率が2つだったらグリッドで計算できたんですけど 3つの場合どうすればいいのかわからなくて。 しかも下のやつも計算しなくてはならなくて。 なので質問させていただきました
561 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:30:13 ] >>543 >この(startから状態1への移動確率)X(重き)と >(状態1の状態確率)X(状態1から状態1への移動確率)X(重き)と、(状態11の状態確率)X(状態11 >から状態1への移動確率)X(重き)の和が状態1の状態確率となります。 状態1ってループしてるけど単純にこれでいいの? (状態1の状態確率)X(状態1から状態1への移動確率)X(状態1から状態1への移動確率)X(重き) ... とかは考えなくてもよし?
562 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:36:35 ] >>543 >>246 の問題だと矢印にくっつく数値(状態遷移確率)が固定だったのを 時間(移動回数)によって矢印にくっつく数値(状態遷移確率)を変化させたいと言う事でいい?
563 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:42 ] >>561 考えなくていいです。 >>562 そうです。 実際は入力に対して各HMMの1つの状態の平均分散から 正規分布により出力確率を出してそのHMMから移動確率を出して 確率X移動確率なんですけど 簡単のために、出力確率を重きとしてるわけです。
564 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:05 ] 移動確率を出す関数だけ。 enum states { START, FIRST, SECON, THIRD, TENTH, ELEVE, E_N_D }; enum states movProbMap( enum states from, enum states to ) { return from == START ? (to == FIRST ? 0.5 : to == TENTH ? 0.5 : 0.0) : from == FIRST ? (to == FIRST ? 0.6 : to == SECON ? 0.3 : to == ELEVE ? 0.1 : 0.0) : from == SECON ? (to == SECON ? 0.7 : to == THIRD ? 0.3 : 0.0) : from == THIRD ? (to == THIRD ? 0.8 : to == E_N_D ? 0.2 : 0.0) : from == TENTH ? (to == TENTH ? 0.6 : to == ELEVE ? 0.4 : 0.0) : from == ELEVE ? (to == ELEVE ? 0.7 : to == FIRST ? 0.2 : to == E_N_D ? 0.1 : 0.0) : 0.0; }
565 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:44:10 ] 激しく無意味だな。スマン無視してくれ。
566 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:47:07 ] >>564 これは一体何でしょう? 実数を返したいんじゃないの???
567 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:55:57 ] enum states -> double で。
568 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:49 ] >>543 使い方は data.txt をリダイレクトするだけ lzh 内のファイル名間違えたけど気にしない ans478 < data.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5268.lzh
569 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:32:51 ] >>568 ありがたいんですけど これちょっと使いかたわからなくて。 gcc ans478.cして実行のときになにか入力しないといけないんですか?
570 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:35:27 ] 本来なら ans478 と打って実行するところを ans478 < data.txt のようにしてdata.txtを標準入力にリダイレクト
571 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:36:42 ] >>489 #include<stdio.h> int main(void){ int i, num, max=0; for(i=20071114;i<=20071114+6-1;i++){ scanf("%d", &num); if(num>max) max=num; } printf("%d\n", max); return 0; }
572 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:39:49 ] >>570 できました。。。 さっきできなかったのに。 ありがとうございます。 自分で作りなおしてから できなかったらこれも試してみます