- 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/
- 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
やってみる
- 737 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 16:21:56 ]
- >>736
ありがとうございます!
- 738 名前:デフォルトの名無しさん [2008/10/26(日) 16:38:30 ]
- [1] 授業単元:プログラミング
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7856.txt [3] 環境 [3.1] OS:MacOSX→Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:10/28 [5] その他の制限: 初心者ながらいろんなところでヘルプを得ながら必死に 書き上げたのですが、実はMacOSX上でしか動作しないことがわかりました。 Linux上でコンパイルするとエラーになってしまいもはやデバッグのしようが わかりません。Linux上での動作が条件なので書き直したいのですが、どなたか 助けてください。
- 739 名前:デフォルトの名無しさん [2008/10/26(日) 16:47:47 ]
- >>738
NetBSDでも動作するよ。
- 740 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:48:10 ]
- >>738
linuxでも動いた。 コンパイルするシステムのヘッダファイルとかそういうの次第。
- 741 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:56:58 ]
- [1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7857.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年10月27日10:00
- 742 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:59:28 ]
- [1] 授業単元:C言語 「分野:ポインタ演習」
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=7744 の7858.txtです。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:08年10月27日24:00まで [5] その他の制限:お手数ですが、C言語の基本的な関数のみでお願いします。
- 743 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:59:33 ]
- >>737
出来た。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7860.txt
- 744 名前:デフォルトの名無しさん [2008/10/26(日) 17:10:49 ]
- >>742
#include <stdlib.h> #include <stdio.h> #include <memory.h> double horner(double x, double *a, int n); main() { int i, n; double x, *a; printf("Horner の方法で多項式を計算します!\n"); printf("次数n を入力して下さい:"); scanf("%d", &n); a = (double*)malloc(sizeof(double) * (n + 1)); printf("実数係数を順に入力して下さい:\n"); for(i = n; i >= 0; i--){ printf("a[%d] = ", i); scanf("%lf", &a[i]); } printf("x の値を入力して下さい:"); scanf("%lf", &x); printf("多項式の値 = %lg\n", horner(x, a, n)); free(a); return 0; } double horner(double x, double *a, int n) { if (n == 0) return a[0]; return x * horner(x, a + 1, n - 1) + a[0]; }
- 745 名前:724 ◆1xFXRhO/iQ mailto:sage [2008/10/26(日) 17:27:55 ]
- >>743
こんなに早く出来るなんて、思ってませんでした。。 本当にありがとうございました!
- 746 名前:デフォルトの名無しさん [2008/10/26(日) 17:45:25 ]
- >>739>>740
そうですか。確認有り難うございました。ある特定のLinuxの環境での実行が条件 なので、とにかくそこの環境でコンパイルしたいのですが、以下のエラーって どう変えればいいかとかわかったりしますでしょうか?エラーになる環境がないと 難しいかも知れませんが。。(エラーになるLinuxの環境が何のディストリビューション かもわからず、すみません。Linuxクラスタだとか聞きましたが) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7861.txt
- 747 名前:デフォルトの名無しさん [2008/10/26(日) 17:49:18 ]
- >>746
#include <unistd.h>
- 748 名前:デフォルトの名無しさん [2008/10/26(日) 17:54:21 ]
- 鼻血が止まらん
- 749 名前:デフォルトの名無しさん [2008/10/26(日) 17:54:44 ]
- すまん。誤爆だ。
- 750 名前:デフォルトの名無しさん [2008/10/26(日) 17:57:50 ]
- >>747
ありがとうございます。追加しましたが、どうやらエラーは変わらないようです
- 751 名前:デフォルトの名無しさん [2008/10/26(日) 18:11:45 ]
- >>750
ディストロがわからないのはつらいね。 #include <sys/types.h> では?
- 752 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 18:15:28 ]
- 自分が今使ってるOSがなんだか分からんの?
- 753 名前:デフォルトの名無しさん [2008/10/26(日) 18:27:04 ]
- >>751
有り難うございました。半分くらい減りました。残るエラーはこちらです↓ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7862.txt >>752 すみません、自分の管理している環境じゃないもので、テルネットして実行しています。 uname -aは打てますが、これが有益な情報かどうか不明です。。 (ちなみに打ったところ最後がi686 GNU/Linuxとなってました。)
- 754 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 18:55:06 ]
- >>753
その uname -a 結果ください。
- 755 名前:デフォルトの名無しさん [2008/10/26(日) 19:04:56 ]
- >>754
Linux XXXX 2.6.18-6-686-bigmem #1 SMP MM DD hh:mm:ss 2008 i686 GNU/Linux と出ました。 それとぐぐって出て来たヘッダファイル(fcntl.hとか)を適当に追加しましたが駄目でした。 S_IFMT, S_IFBLKとかって何に定義されてるんでしょうか
- 756 名前:デフォルトの名無しさん [2008/10/26(日) 19:06:19 ]
- すみません。Debian。ですかね。
- 757 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:09:50 ]
- >>734
ありがとうございました!
- 758 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:17:16 ]
- [1] 授業単元:プログラミング
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:10/27 [5] その他の制限:式の部分が上手くいきません。 よろしくお願いします。
- 759 名前:デフォルトの名無しさん [2008/10/26(日) 19:38:23 ]
- こうやって見ると数式のプログラムばかりだね
理学部やならいいけど、工学部情報学科ならば実務とはかけ離れてるのも大概にしろと
- 760 名前:デフォルトの名無しさん [2008/10/26(日) 19:38:56 ]
- プログラム演習は数式遊びの場じゃない
- 761 名前:デフォルトの名無しさん [2008/10/26(日) 19:40:09 ]
- 東大のプログラムの授業なんかは
ユニックスのパイプコマンドを作成しろとか サーバー通信なんちゃらの実務的なのが多い
- 762 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 20:03:15 ]
- >>761
東大じゃありませんが、1990年ごろの情報系学部演習ですでに、 ごく簡単なシェル/パイプを実装, (fork() +exec*()+pipe()) をやっていました。シグナルとかセマフォとかも。無論、当時の私には極悪・試行錯誤の連続で泊り込む勢いでした。 バークレーソケットは3年次後半でしました。 それはそうと、ロジスティック方程式を解いて(がんばれば高校数学でできます。)解析解に代入する、とかはどうでしょう。やっぱりだめですか。 つja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E6%96%B9%E7%A8%8B%E5%BC%8F 数値解析部門は、それはそれで習得しなければならないと思います。
- 763 名前:デフォルトの名無しさん [2008/10/26(日) 20:17:24 ]
- MATLBAでやったら全部一発
- 764 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 20:34:52 ]
- >>755
私の環境は WindowsXP/cygwin なんですが、エラーはでませんでした。(警告によるとキャストが必要なものはありましたが、まあ問題ない) さて、S_* などは、私の環境では sys/stat.h にあるのですが、(実体は /usr/include/sys/stat.h) >>755さんの環境でも、 インクルードファイルをみつけているようですね。(インクルードパスがちがっておれば、みつけられない、ってでてくると思います。) すると、暗黙の #define が unix(posix) 用になっていないのかもしれません。 gcc -v ソース.c 2> mes.txt として、mes.txt の内容をください。 2> がうまくいかないのであれば、その旨書き込んでください。
|

|