- 1 名前:デフォルトの名無しさん [2008/10/01(水) 07:28:51 BE:151474728-PLT(18888)]
- あなたが解けない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++の宿題を片付けます 115代目 pc11.2ch.net/test/read.cgi/tech/1217741118/
- 636 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:09:59 ]
- (2)は50を5^nで割った商を足してけばいいと思う
int cnt=0,t; for(t=5;50/t;t*=5){ cnt+=50/t; } printf("%d\n",cnt);
- 637 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:12:31 ]
- 理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?
- 638 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 03:36:40 ]
- 理由はもっともだが>>636にはハテナがたくさんだ
- 639 名前:デフォルトの名無しさん [2008/10/24(金) 04:41:46 ]
- >>623
期限は10月24日(金)の11:00でした。 書き間違えてすみません。 よろしくお願いします。
- 640 名前:639 mailto:sage [2008/10/24(金) 06:35:26 ]
- 期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。 再再度訂正すみません
- 641 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:43:17 ]
- すいません、C/C++以外の課題を聞けるスレってあります?
- 642 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 06:59:49 ]
- [1] 授業単元: C
[2] 問題文: 2つの固有値から2×2の行列を求めるプログラムを作りなさい。 固有値は整数のみとする。 [3] 環境 [3.1] OS:WindowsXP [3.2]コンパイラ名とバージョン:Visual studio [3.3] 言語:C [4] 期限:明日まで [5] その他の制限:特になし
- 643 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:03:10 ]
- 620をお願いします
- 644 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:44:17 ]
- [1] 授業単元:C言語 (ポインタ)
[2] 問題文(含コード&リンク):出力例のように キーボードから0〜9 の数字d と,正の整数n を読み込み,n 以下の整数x で, x とx の2 乗の10 進数表示の両方にd を含むものをすべて出力するプログラムをつくりなさい。 ただし,次のプロトタイプ宣言で示すように,整数x とd を仮引数として, x とx の2 乗の10 進数表示の両方にd を含む場合に1,そうでない場合に0 を返す 関数hit_digit を作成しなさい。 int hit_digit(int x, int d); ▼出力例 0〜9 の数字d を入力して下さい:7 正の整数n を入力して下さい:100 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:08年10月25日24:00まで [5] その他の制限:C言語の基本的な関数のみでお願いします。
- 645 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:04:13 ]
- >>639
和訳くらいしたらどうなの・・・
- 646 名前:602 [2008/10/24(金) 12:33:22 ]
- >>612
回答ありがとうございます! 助かりました。
- 647 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 12:41:56 ]
- >>644
#include <stdio.h> int hit_digit(int x,int d); int main(void) { int d,n,x; printf("0〜9 の数字d を入力して下さい:"); scanf("%d",&d); printf("正の整数n を入力して下さい:"); scanf("%d",&n); for(x=0;x<=n;x++) if(hit_digit(x,d)) printf("%d\n",x); return 0; } int hit_digit(int x,int d) { int y,z; y=x; z=x*x; for(;y;y/=10) if(y%10==d) for(;z;z/=10) if(z%10==d) return 1; return 0; }
- 648 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 13:34:34 ]
- >>591
レス返信遅くなりました。 最大値というよりは極大値という感じですね。 飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが ρってのが平均値の標準偏差です(たぶん)。 グラフで飛び出した点を求めたら、並べ替えなくていいそうです。 てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)
- 649 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 14:39:57 ]
- [1] 授業単元: C言語
[2] 問題文:縦軸「|」横軸「-」グラフ「*」 を使って±√xのグラフを書け [3] 環境 [3.1] OS:mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限: 10月26日 [5] その他の制限: 基本的な関数のみでお願いします
- 650 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:36:43 ]
- >>649
#include <stdio.h> int main() { int x, y; for (y = -4; y < 5; y++) { putchar('|'); for (x = 0; x < y * y; x++) { putchar(' '); } putchar('*'); putchar('\n'); } return 0; }
- 651 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 15:37:15 ]
- 横軸忘れた
- 652 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:05:49 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): トランプを切る方法の1つとして、トランプを2つにわけて両手でぱらぱらと切る方法がある。 今、トランプは、ジョーカーを除いた52枚とする。もし、切り方のうまい人がいて、トランプ を正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。 この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るでしょうか。 これを計算するプログラムを作成してください。 与えられたヒント 52個の要素をもつ配列P,Qを用意します。最初は、Pi←i+1(i=0,2,3,…,51)とデータをセットします。 そして、Q2i←Pi(i=0,1,2,…,25)およびQ 2(i-26)+1←Pi(i=26,27,…,51)を行う。もし、Qの要素が 1,2,3,…,52になっていたら終了であるが、そうでなければ、P←Qを行い、同じ手順を繰り返す。 [3] 環境 [3.1] OS: Windows (cygwin使用) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 10月27日18:00時まで [5] その他の制限: for文かwhile文でお願いします
- 653 名前:デフォルトの名無しさん [2008/10/24(金) 16:27:02 ]
- 株式会社損害保険ジャパン
qb5.2ch.net/test/read.cgi/saku2ch/1185507477/ 1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080> 対象区分:[法人/団体]管理人裁定待ち 削除対象アドレス: www2.2ch.net/2ch.html
- 654 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:29:57 ]
- >>652
8回で戻ったけどあってる?
- 655 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:35:11 ]
- >>649
縦軸と横軸ってxyグラフ?実数と複素数? ±√abs(x)、もしくはx>=0 でxyグラフならできる。 実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。 その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。
- 656 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 16:54:14 ]
- >>652
311,875,200
- 657 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:01:32 ]
- >>650
ありがとうございました 横軸は自分で入れてみます >>655 xyグラフです。 abs関数って絶対値を返すんでしたっけ・・・
- 658 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:19 ]
- >>652
#include <stdio.h> int main(void) { int P[52], Q[52]; int i, c, x; for(i=0; i<52; i++) P[i] = i+1; c=0; while(1) { for(i=0; i<26; i++) Q[2*i] = P[i]; for(i=26; i<52; i++) Q[2*(i-26)+1] = P[i]; c++; for(i=x=0; i<52; i++) if(Q[i] != i+1) x=1; if(x!=0) for(i=0; i<52; i++) P[i] = Q[i]; else break; } printf("%d times looped.\n", c); } 本当は終了条件判断後の代入と最初の代入だとかを一緒にすべきだよな。でもここでは文意どおりに…。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:02:24 ]
- >>652
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7843.c
- 660 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 17:24:05 ]
- >>649
#include <stdio.h> #include <math.h> #define START_X -30 #define START_Y -10 #define WIDTH 60 #define HEIGHT 20 int main(void) { int x,y,p; int max_width = START_X + WIDTH; int max_height = START_Y + HEIGHT; for(y = max_height; y > START_Y; y--) { putchar(y?'|':'0'); for(x = START_X; x < max_width; x++) { p = (int) sqrt(fabs(x)); putchar((p == abs(y))?'*':' '); } putchar('\n'); } putchar('+'); for(x = START_X; x < max_width; x++) { putchar(x?'-':'0'); } putchar('\n'); return 0; } y=±sqrt(abs(x))のグラフを書きます。 START_X=0で使ってくれ。
- 661 名前:デフォルトの名無しさん [2008/10/24(金) 17:42:34 ]
- 1] 授業単元:情報処理V
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進) [3] 環境 [3.1] OS:Windows(cygwin使用) [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 10月30日16:30まで [5] その他の制限:基本的な関数のみでお願いします。
- 662 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 18:53:17 ]
- >>647
丁寧な回答ありがとうございました!
- 663 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 20:49:17 ]
- >>551 のつづきです。
[1] 授業単元: 信号処理 [2] 問題文(含コード&リンク): @とAは>>551 B (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。 C @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。 Bで求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに 出力できるように変更させなさい。 例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・ [38]3.4255342 [72]3.214283 [98]2.434924390・・・・ ・ ・ ・ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月26日23:59まで [5] その他の制限: 特になし よろしくお願いします。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 22:44:49 ]
- [1] 授業単元:if文
[2] 問題文:3つの整数を入力し,それらを比較して,大,中,小を判定しなさい. 3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも 正確に判定ができるように対応すること. 全ての条件を場合分けするプログラムは不可とする. できるだけ少ない条件分けで対応できるよう工夫すること。 例 9 5 2 → 大:9 中:5 小:2 例 6 6 6 → 大:6,6,6 3つの数は等しい 例 6 6 3 → 大:6,6 小:3 例 6 6 9 → 大:9 小:6,6 [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 10/30 13時 [5] その他の制限: 特になし よろしくお願いします
- 665 名前: ◆O2tO.pRmks mailto:sage [2008/10/25(土) 00:55:24 ]
- [1] 授業単元:配列
[2] 問題文:配列a[10] = {53,68,9,55,42,70,43,66,97,84}の要素の最大値・最小値・平均値を調べ、結果を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] gcc [3.3] 言語:C [4] 期限:2008年10月25日まで [5] その他の制限:特になし
- 666 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:05:55 ]
- >>665
#include <stdio.h> int main(){ int a[10] = {53, 68, 9, 55, 42, 70, 43, 66, 97, 84}; int max, min, i; float ave = 0.0; max = a[0]; min = a[0]; for(i = 1; i < 10; i++){ if(max < a[i]) max = a[i]; if(min > a[i]) min = a[i]; ave += (float)a[i]; } ave /= 10.0; printf("最大値: %d\n", max); printf("最小値: %d\n", min); printf("平均値: %.1f\n", ave); }
- 667 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:24:51 ]
- >>664
#include<stdio.h> #include<stdlib.h> void main(void) { int num[3],w,cnt,i; for(cnt=0;cnt<3;cnt++) scanf("%d",&num[cnt]); for(cnt=0;cnt<2;cnt++) { for(i=cnt+1;i<3;i++) { if(num[cnt]<num[i]) { w=num[cnt]; num[cnt]=num[i]; num[i]=w; } } }
- 668 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:25:26 ]
- >>664
printf("大:%d",num[0]); if(num[0]==num[1]) printf(",%d",num[1]); else { if(num[1]==num[2]) { printf(" 小:%d,%d",num[1],num[2]); exit(0); } else printf(" 中:%d",num[1]); } if(num[0]==num[2]) printf(",%d 3つの数は等しい",num[2]); else printf(" 小:%d",num[2]); } gcc知らない…
- 669 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:37:48 ]
- >>664
#include <stdio.h> int main(){ int i, j, tmp; int count = 0; int a[3]; scanf("%d%d%d", &a[0], &a[1], &a[2]); /* 降順にソート */ for(i = 0; i < 3; i++){ for(j = i + 1; j < 3; j++){ if(a[i] < a[j]){ tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } }
- 670 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:38:17 ]
- >>664 続き
/* 1個目と2個目を比較して値が違ったら「大」が決定 */ if(a[0] != a[1]){ printf("大: %d ", a[0]); /* 2個目と3個目を比較して「中・小」を決定 */ if(a[1] != a[2]) printf("中: %d 小: %d\n", a[1], a[2]); else printf("小: %d, %d\n", a[1], a[2]); } /* 1個目と2個目が一緒なら2個目と3個目を比較して「大・小」を決定 */ else{ if(a[1] != a[2]) printf("大: %d, %d 小: %d\n", a[0], a[1], a[2]); else printf("大: %d, %d, %d 3つの数は等しい\n", a[0], a[1], a[2]); } return 0; }
- 671 名前:669-670 mailto:sage [2008/10/25(土) 01:40:07 ]
- >>667-668で既に回答出てたな・・
- 672 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:45:44 ]
- >>671
俺のは手抜きです^^;
- 673 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:52:31 ]
- >>672
結局同じようなことやってるからあまり変わらないっしょー
- 674 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 02:09:28 ]
- >>663
結局1番と2番は日本語の意味が理解できなかった。 2番は1番の意味がわかればできるけど1番は何回読んでもわからない・・・ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define isOuter(val,ave,sd) ((val)> (ave) + 5*(var)) int main(){ FILE *fp,*fout; char buf[1024],*cp; double data[1024],ave,sum=0,sum2=0,var,sd; int cnt=0,i,k=0; if((fp = fopen("data.txt", "r")) == NULL) return 1; if((fout = fopen("peak.txt", "w")) == NULL) return 1; while((cp = fgets(buf,sizeof(buf),fp)) != NULL){ while((cp = strtok(cp," \t\r\n")) != NULL){ data[cnt] = atof(cp); sum += data[cnt]; sum2 += data[cnt]*data[cnt]; if(++cnt == 1024){ ave = sum / 1024.0; var = sum2 / 1024.0 - ave*ave; sd = sqrt(var); for(i=0;i<1024;i++) if(isOuter(data[i] , ave, sd)) fprintf(fout,"[%d]%f ", i+1,data[i]); fprintf(fout,"\n"); cnt = sum = sum2 = 0; } cp = NULL; } } fclose(fp); fclose(fout); }
- 675 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:36:38 ]
- >>620
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7845.txt
- 676 名前:675 mailto:sage [2008/10/25(土) 04:44:02 ]
- >>620
>>675 ミスった、スマン 一つ前の古いのをUPしてしまった… ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7846.txt
- 677 名前:デフォルトの名無しさん [2008/10/25(土) 05:36:07 ]
- [1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク): sony.squares.net/dat.txt [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン:最新版Cygwinのgcc [3.3] 言語:C [4] 期限: [無期限] [5] その他の制限:リンク先に記載。 重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2) 重複を取り除きながらでも早いソートを実現したいです。お願いします。
- 678 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:28:59 ]
- >>677
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7847.c 条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 06:43:50 ]
- >>677
あれ、条件2ってどういうこと? 最大値が分かれば1から順に並べればいいってこと、、、なのか? ソートっていってるからそうじゃないような気がするんだが。
- 680 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 09:50:58 ]
- 値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする
- 681 名前:デフォルトの名無しさん [2008/10/25(土) 13:10:37 ]
- >>678
ありがとうございます。参考にさせて貰います。 >>679-680 すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 14:21:22 ]
- それが分かってないなら>>678
は使えないな、まさしく>>680 の手法だから 一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな c++のsetで試したからcのソース無いけど
- 683 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:00:23 ]
- Quickソートでいいんじゃない?
- 684 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:25:56 ]
- クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね
- 685 名前:初心者 [2008/10/25(土) 15:26:11 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): ★下記の仕様を満たすプログラムをC言語で作成しなさい 【仕様】 表計算ソフト簡易プログラム ▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。 ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。 ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。 (表示例:空欄にはそれぞれ計算結果が入ることになる) 番号| 国語 数学 英語 |合計 |平均 |順位 1 | 75 35 40 | | | 2 | 69 75 82 | | | (中 略) 10 | 57 48 36 | | | --------------------------------------------------- 合計 | 平均 | 最高 | 最低 | [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: 分かりません [3.3] 言語: C言語 [4] 期限: 来週中ぐらい [5] その他の制限: 繰り返し、条件処理、配列を勉強しました。 これらを使ってお願いします。 初心者なので初心者でも分かるようなプログラムを お願いします。
- 686 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:03:03 ]
- >>685
こんな感じでいいのか? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7849.txt
- 687 名前:686 mailto:sage [2008/10/25(土) 22:07:11 ]
- あ、変な改行いれちまった。
79行目の最後の「\」と改行を消して80行目とつなげてくれ
- 688 名前:611 [2008/10/25(土) 22:32:12 ]
- 提示したプラグラムを補う感じで、>>611お願いいたします。。
- 689 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 22:43:40 ]
- やだ
- 690 名前:デフォルトの名無しさん [2008/10/25(土) 22:49:55 ]
- [1]C
[2]kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7850.txt [3]C言語 [4]来週の水曜 [5](2)はライブラリ関数のqsortを使うようお願いします よろしくお願いします。
- 691 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 01:50:39 ]
- C言語で長門がやってたみたいにゲームの改造とかできますか?
- 692 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:23:02 ]
- >>690
答え合ってるか分からん。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7852.txt
- 693 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:36:10 ]
- >>674
まず@番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。 その値を1024個を一つのくくりとする。つまり1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。 この1024個の値の平均値と平均値から飛び出している値=最大値(極大値)を求める。 最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。 次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。 こんな感じです。わかりやすく説明したつもりなんですけど・・・どうでしょうか? プログラムよろしくお願いします。
- 694 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 02:59:59 ]
- >>693
>1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。 なんで1024が[205][3]なの? 1024個ごとに平均値と最大値を出力すればいいのか?
- 695 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:00:12 ]
- >>691
長門裕之がゲームの改造をしていたのは知らなかったがプログラミング言語Cを用いてゲームの改造ならできるよ
- 696 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:02:33 ]
- >>694
209921行だからじゃない?
- 697 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:04:49 ]
- だけど「209921行5列」なのに「2097152個」ってなんかへんじゃね?
- 698 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:14:14 ]
- やっぱ理解できんわ
- 699 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:36:28 ]
- 実際にデータを見ると209920行なわけだが。。。
- 700 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:38:18 ]
- >>694
> 1024個ごとに平均値と最大値を出力すればいいのか? そう書いてある
- 701 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 03:43:30 ]
- >>693は出題者だったか。
であれば、array[206][5]という2次元配列に読ませる必要があるのかどうかを知りたい。 別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ? それと、「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、 じゃあ最初の課題では極大値の判定はどうやってやればいい?
- 702 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 05:09:52 ]
- >>611 >>688
簡易ボイヤームーア法で良ければこれで ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7853.txt 完全版はアルゴリズムが理解できん
- 703 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 05:18:45 ]
- ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%A4%E3%83%BC-%E3%83%A0%E3%83%BC%E3%82%A2%E6%96%87%E5%AD%97%E5%88%97%E6%A4%9C%E7%B4%A2%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
ボイヤームーア
- 704 名前:デフォルトの名無しさん [2008/10/26(日) 08:49:35 ]
- 友達からC++のプログラムもらって家でコンパイルしたら
strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。 調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。 それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。 strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。 strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:53:42 ]
- >>704
例えば void strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource) { strcpy(strDestination, strSource); } マクロでもいいと思うけど、というか、他にもいろいろ問題出てこないの?って気がしなくもない。
- 706 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:55:15 ]
- >>704
って糞マルチかよ。スレチだけどいいかと思って答えた俺のバカー
- 707 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 08:58:18 ]
- >>706
マルチだからといって無碍に切り捨てるのも問題かと。
- 708 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 09:02:56 ]
- マルチだと分かっていて回答するならふさわしいスレで回答できるじゃん。
今回はここかな。 pc11.2ch.net/test/read.cgi/tech/1224057986/499 宿題スレおよび以下はスレチでしょ pc11.2ch.net/test/read.cgi/tech/1224000127/681
- 709 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 09:53:26 ]
- >>708
御意
- 710 名前:デフォルトの名無しさん [2008/10/26(日) 11:48:59 ]
- コンソールからファイルを引数として渡すと、そのファイルのパーミッションと
ディレクトリ種別などを取得するようにしたいです。→(例drwxr-xr-x) 以下のコードで、st_modeを8進数で表示してみたところ #include <stdio.h> #include <sys/stat.h> #include <stdlib.h> int main(int argc, char *argv[]){ struct stat abc; if(stat(argv[1], &abc)==-1){ perror("stat"); exit(EXIT_SUCCESS); } printf("%o\n", abc.st_mode); } パーミッション644のファイルが「100644」と表示されます。 これを100644の代わりに-rw-r--r--と表示するように実装するにはどのように 書けばよいか教えて下さい。宜しくお願いします。
- 711 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:07:41 ]
- abc.st_mode | 0777
って文字列にすんのかよ。 printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-'); printf("%c" (abc.st_mode & S_IRUSR) ? 's' : 'r'); printf("%c" (abc.st_mode & S_IWUSR) ? 's' : 'r'); printf("%c" (abc.st_mode & S_IXUSR) ? 's' : 'r'); 以下略
- 712 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:08:33 ]
- なんかひどいコピペミスをしたようだ。。。
printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-'); printf("%c" (abc.st_mode & S_IRUSR) ? 'r' : '-'); printf("%c" (abc.st_mode & S_IWUSR) ? 'w' : '-'); printf("%c" (abc.st_mode & S_IXUSR) ? 'x' : '-'); 以下略
- 713 名前:デフォルトの名無しさん [2008/10/26(日) 12:17:48 ]
- printfよりもputcharがよくね?
- 714 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:31:30 ]
- そだね。putcharの方がよかた。
っていうかカンマも抜けてるし何このグダグダ感orz
- 715 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:32:45 ]
- ('ー')
- 716 名前:デフォルトの名無しさん [2008/10/26(日) 12:41:28 ]
- >>712
出来ました。ありがとうございます。 ちなみにディレクトリがdでなく-になってしまうのですがまだ他に 何か必要でしょうか?
- 717 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:52:23 ]
- 横から口だし失礼
ボイヤームーアってどのくらい速いんですか? ソートの種類で例えるとどのソートに匹敵する実用的なアルゴリズムなんでしょうか?
- 718 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:54:30 ]
- >>717
つ www.google.co.jp/
- 719 名前:デフォルトの名無しさん [2008/10/26(日) 12:59:00 ]
- setuidbit, setgidbit, stickybitなどを考慮するともっとひどいコードに。
- 720 名前:デフォルトの名無しさん [2008/10/26(日) 13:10:37 ]
- Visual Studio使ってる人ってVisual C++ Express Edition ?
- 721 名前:デフォルトの名無しさん [2008/10/26(日) 13:10:49 ]
- >>719
なるほど。あんまし大変になりそうであればとりあえずこんな感じで十分 なのでいいです。ありがとうございました。
- 722 名前:デフォルトの名無しさん [2008/10/26(日) 14:02:41 ]
- [1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。 #include <string.h> int strcmp(char str1, char str2); ------------------------ str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数 関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */ 関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */ 関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */ 関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。 2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年10月27日16:00まで [5] その他の制限:1の関数の宣言は以下のようにする。 関数 void ReadData(struct person *person, int *index, int *n); 関数 void PrintData(struct person *person, int *index, int n); 関数ReadData、PrintDataでは、 while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name, person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){ index[i]=i; i++; } ------------------------------------------------------------- for(i=0;i<n;i++){ printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name, person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); } とりあえず、問題1の並び替えがうまく出来ませんorz お願いします。
- 723 名前:デフォルトの名無しさん [2008/10/26(日) 14:09:02 ]
- [1] 授業単元:プログラミング
[2] 問題文: Newton--Raphson法を用いて X*X*X-7X*X+16X-10=0 の解を求めよ。 [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:10/24 [5] その他の制限:初心者です。なるべく基本的な構造でお願いします。 >>474 以前お願いしたのですがうまくいきません。どなたか問題点を指摘 していただきたいです。また初歩的な30行程度のプログラムにしたいと 思っています。
- 724 名前: ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 14:26:39 ]
- [1] 授業単元:離散数学
[2] 問題文(含コード&リンク): 重みつき無向グラフを隣接行列で表現し、縮約を行うプログラムを実装せよ。 [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年10月30日まで [5] その他の制限: 期限が近めですが、なんとか、宜しくお願いします。
- 725 名前:デフォルトの名無しさん [2008/10/26(日) 14:29:14 ]
- >>723
#include <stdio.h> #include <math.h> #define EPS0 1.0e-5 double fnc(double x); double dfnc(double x); main() { double x0, x1; x0 = 0; x1 = 10; while(fabs(x1 - x0) > EPS0) { x0 = x1; x1 = x0 - fnc(x0)/dfnc(x0); } printf("x = %lf\n", x1); } double fnc(double x) { return x*x*x - 7*x*x + 16*x - 10; } double dfnc(double x) { return 3*x*x - 14*x + 16; }
- 726 名前:デフォルトの名無しさん [2008/10/26(日) 14:36:19 ]
- >>725
ありがとうございます。ものすごく早い回答がいただけて とてもうれしいです。早速じっこうしてみましたが「関数の 値を返すべき」という警告がでるのでぜひ解除して いただきたいです。本当にお願いします。
- 727 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:38:31 ]
- >>726
main()の最後に return 0; を付ければいい
- 728 名前:デフォルトの名無しさん [2008/10/26(日) 14:42:17 ]
-
CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 Code kadai5z.c: 警告 W8070 kadai5z.c 20: 関数は値を返すべき(関数 main ) 警告 W8066 kadai5z.c 30: 実行されないコード(関数 dfnc ) エラー E2378 kadai5z.c 31: Return文に ; がない(関数 dfnc *** コンパイル中に 1 個のエラーが発生しました *** このような表示になります。
- 729 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:49:47 ]
- 縮約のアルゴリズムってこんな感じ?面倒だから実装はしないけど
縮約関数: func(G, v, w) 意味: グラフGに於ける点(v,w)で結ばれる辺を縮約する 仕様: グラフGに於ける点wを削除し、点wに接続する全有向辺を点vに接続し直す(有向辺を追加する) ただし、重複している場合は追加しない (点wを削除するためには、新規にグラフG’を作成?)
- 730 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:51:18 ]
- 辺v,wの削除も
- 731 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:51:36 ]
- hairanai
- 732 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:52:48 ]
- 無向グラフだ
- 733 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 15:29:11 ]
- [1] 授業単元:プログラミング
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7855.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:10/27 [5] その他の制限:途中まで作成はしたのですが上手くいきません。 よろしくお願いします。
- 734 名前:デフォルトの名無しさん [2008/10/26(日) 15:40:32 ]
- >>733
#include<stdio.h> #define N 100 main() { int t; double a, x[N+1]; printf("成長パラメーターの入力"); scanf("%lf", &a); x[0] = 0.5; for (t=0;t<=N-1;t++) { x[t+1] = a * x[t] * (1.0 - x[t]); } for (t=0;t<=N;t++) printf("t=%dのとき人口は%lgです。\n",t,x[t]); return 0; }
- 735 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 15:42:27 ]
- >>729
はい、ただ重複している場合は追加しないのではなく、 重みを足す事になっています。 なんとか、実装して頂けると嬉しいです。。
- 736 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:07:21 ]
- >>735
やってみる
|

|