1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)] あなたが解けない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++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
2 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:16:54 ] >>1 乙
3 名前:前スレ978 mailto:sage [2007/06/23(土) 23:26:29 ] 前スレ>>979 、>>981 さんレスどうもです。無事動作しました。 [1] 授業単元:プログラム技術3 [2] 問題文(含コード&リンク): main(int argc char , *argv[]){ int i; printf("%d argument(s).Yn" , argc -1); for(i=0; i<argc; i++){ printf("argv[%d] : \"%s\"\n", i , argv[i]); } } 引数の順序を入れ替えてた後(*argv[] , int argc char)、入力した文字を逆順に出力するようにしたいのですが、変数以外 何処を変更したらいいのでしょうか?for文あたりを弄っても上手くいきませんでした。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 6月26日 [5] その他の制限: (ポインタを習ってるレベルです)
4 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:48:33 ] >>3 文字を逆順の意味がはっきりせん。複数の文字列をそれぞれ入力した順番から逆にするのか それぞれの文字列の文字を逆順にするのか。それから、引数間違っているから ちゃんと覚えてくれ。 int main(int argc , char *argv[]) やで
5 名前:デフォルトの名無しさん mailto:sage [2007/06/23(土) 23:55:14 ] c0x.coding-guidelines.com/5.1.2.2.1.html 160 The function called at program startup is named main. 161 The implementation declares no prototype for this function. 162 It shall be defined with a return type of int and with no parameters: int main(void) { /* ... */ } 163 or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared): int main(int argc, char *argv[]) { /* ... */ }
6 名前:デフォルトの名無しさん [2007/06/24(日) 06:08:18 ] [1] 授業単元:プログラム [2] 問題文(含コード&リンク): 図書カードカタログ: 1.入力 2.著者名による検索 3.書名による検索 4.終了 選択項目を入力して下さい: ユーザーが1を選んだら書名、著者名、出版社の順に書名先頭に空白行が入力させるまで繰り返し入力させ続ける。 2,3を選んだ場合は特定の著者か書名を入力させ一致するものがあればその残りの情報も出力させる。 4.で終了 [3] 環境 [3.1] OS: (Windows/Linux/等々)WinXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可 のいずれか)cのみ [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)無期 [5] その他の制限:ループ、if、switch、ポインタ、配列、自作関数まで習った、 使用可能なライブラリ stdio.h string.h conio.h stdlib.h ctype.h 自分で書いたコードです ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4365.txt なんかごちゃごちゃしてわかりにくくなってしまいました あと、なんども検索してるとバグっておかしくなってしまいます もっとキレイにうまく改善できませんか?
7 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 07:46:14 ] [1] 授業単元:アルゴリズム [2] 問題文:10リットル、8リットル、3リットルの容器があり、10リットルの容器に水がいっぱい入っている。 この3つの容器を用い、3リットルの容器に1リットルの水を取り出す最小の手順を答えよ。ただし、水を移す時は、移す側が空になるか、移す側がいっぱいになってときとする。 幅優先探索と言うのを用いるそうです。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 5.5.1 [3.3] 言語: C [4] 期限: 6月25日の2400まで [5] その他の制限:バケツの水の入り方を、座標に見立て、その座標に番号をつけ、広がり優先探索を用いる。 どうしたら良いかわからず、焦っています。 似たような問題が89代目のスレッドにありましたが、制限が違っていて対処できませんでした。 急ですがよろしくお願いします
8 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 07:52:31 ] >>7 状態は 8L 容器に入っている水の量 0-8 3L 容器に入っている水の量 0-3 9*4=36 種の状態を取り得るってことで解くのでおk?
9 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 07:52:43 ] これって 10Lから3L汲み出す&捨てる×3回繰り返す、残った1Lを3Lの容器に入れる のが最短?
10 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 08:15:03 ] pc11.2ch.net/test/read.cgi/tech/1181802185/1000 pc11.2ch.net/test/read.cgi/tech/1180856695/151
11 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 08:23:39 ] 前スレ>>983 (2) #include <stdio.h> int foo(int input[5][5], int ii, int jj){ int i, j, total = 0; if(input[ii][jj] == 1) return 0; for(i = ii + 1; i < 5 && input[i][jj] == 0; i++) total++; for(i = ii - 1; i >= 0 && input[i][jj] == 0; i--) total++; for(j = jj + 1; j < 5 && input[ii][j] == 0; j++) total++; for(j = jj - 1; j >= 0 && input[ii][j] == 0; j--) total++; return total; } int main(void){ int input[5][5], i, j; for(i = 0; i < 5; i++) for(j = 0; j < 5; j++) scanf("%1d", &input[i][j]); for(i = 0; i < 5; i++){ for(j = 0; j < 5; j++) printf("%d ", foo(input, i, j)); putchar('\n'); } return 0; }
12 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 09:15:59 ] >>6 とりあえず制限事項に外れる入力が無ければ大丈夫に見えるけど、 どういう風に入力したら、どうおかしくなったのか、詳しくヨロシク。
13 名前:前スレ978 mailto:sage [2007/06/24(日) 09:16:00 ] >>4 スマソ。複数の文字をそれぞれ入力した順番から逆に出力したいんです。 現状ですと、./a.out a b c と入力すると、[1]a [2]b [3]cと出力されます。 それを、./a.out a b c と入力して、[1]c [2]b [3]aと出力される ようにしたいんです。どうしたら良いでしょうか? それと、mainの前のintって必要なのでしょうか? 授業で習ったサンプルの文にはintは無かったのですが・・・。 main(ここでintの宣言をしてるので必要ないような気がするのですが) お手数ですが、回答よろしくお願いします。
14 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 09:29:48 ] >>3 >>13 習った習わないはともかく、国際的な標準スタイルってことで それくらい知っておくべきだと講師に言っておきんしゃい。 #include <stdio.h> int main(int argc , char *argv[]) { int i; printf("%d argument(s).\n" , argc -1); for(i=argc-1; i>=1; i--){ printf("argv[%d] : \"%s\"\n", i , argv[i]); } return 0; }
15 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 09:32:14 ] >>5 にISO準拠におけるC言語の、プログラムの開始の関数と mainが返す値について書かれているから。まさか、この程度の 英語も理解できんとは言わせないよん。
16 名前:前852 [2007/06/24(日) 09:37:38 ] 前992さん (1),(2)です
17 名前:前スレ978 mailto:sage [2007/06/24(日) 10:15:18 ] >>14 レスどうもです。上手く動きました。どうもです。 >>15 あれ、漏れへのレスだったのですね。気付きませんでしたorz それにしてもmain関数手前にintを置くのが正しいスタイルだったんですねorz 授業ノートを見返してみましたが、書かれてるソースには一つもmain手前にintが ありませんでした・・・。 次週の講義の際に講師に質問してみます。
18 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 10:19:24 ] 2ch の宿題丸投げスレで宿題解いて貰ったんですが、 main の前に int がついています。どういう意味でしょうか? もしこんなことも分からないようなら 勉強不足な講師だな ププッ って言ってました
19 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 10:29:51 ] 前スレで修正後プログラムがまだでして、再書き込みさせてもらいます。 [1] 授業単元:C++研究 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4218.txt (問題文) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt (修正前プログラム) 上記のプログラムと、その上記のプログラムを修正した、↓(修正プログラムの問題文) 値の決定を自分だけランダム値からキーボードからの入力値になるようプログラムを修正して、 ある値が出た場合のみポイントが復活する機能を追加しなさい (ある値は,初期段階で設定できるものとする)。なお復活するポイント値はランダムとする。 自分とは男を指します。キーボードから自分1〜20の値を任意に決めれるようにします。 ある値が出た場合、そのある値が15の場合、15がでたときに、その勝負が行われた直後に 1〜20ポイントランダムでポイントが自分の持ちポイントに加算される。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年6月26日12:00まで] [5] その他の制限:特になし 内容がややこしいですが、どうかよろしくお願いします
20 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 10:30:52 ] >>17 くどいようだが、あくまでも 標準スタイル、ANSI、ISO準拠によるものであって そのスタイルを無視しても問題ない環境では本当に問題はないぞな。 あくまでも幅広い環境で通用する標準スタイル。
21 名前:前852 [2007/06/24(日) 10:43:05 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4366.c 表示もうまく出るようになったのですが 出力結果を見るとソートがうまくいっていないような感じです。 (ちゃんと合計点降順になっていません) もともとクイックソートは昇順で作っていたので、 条件分岐を逆にしただけなのですが、 これが原因でしょうか?(コメント行は書き換えてないです。)
22 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:11:26 ] >>7 やってみたが解なしになってしまった。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4368.txt なんか間違ってんのかな。
23 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 12:46:15 ] >>7 幅優先むずいな
24 名前:984 [2007/06/24(日) 13:01:15 ] >>21 quick()の再帰呼出しを、whileブロックの外に出す。 quick_sub()もそうだな。 input()の while(fgets(buf,sizeof(buf),fin) > 0){ を while(fgets(buf,sizeof(buf),fin) != NULL){ に訂正してくれ
25 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 13:22:29 ] [1] 授業単元: [2] 問題文(含コード&リンク): 2次方程式 ax^2 + bx + c = 0 は,判別式 Δ^2 = b^2 - 4ac により,(a)2つの実数解をもつ,(b)1つの実数解(重解)をもつ,(c)2つの虚数解をもつ,の3つの場合に分けられる. 3つの正整数a,b,cを引数とし,実数値sqrt(b2-4ac)を戻り値とし,b2-4acが負の場合はエラーを示す値を戻り値とするユーザ定義関数delta()を作成せよ. 作成したユーザ定義関数を用いて,3つの正整数a,b,cをキーボードから入力し,2つの実数解を表示するプログラムを作成せよ. ただし,重解をもつ場合と虚数解をもつ場合はその旨表示したうえで,再度a,b,cの入力を促すようにし,2つの実数解をもつ方程式が入力されるまで繰り返すようにすること. [実行結果] 3つの係数を入力して: 1 2 1 重解を持つよ!入力し直して。 3つの係数を入力して: 1 1 1 虚数解を持つよ!入力し直して。 3つの係数を入力して: 2 9 3 2x^2 + 9x + 3 = 0 の2つの実数解は x = -0.362541 と x = -4.137459 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C [4] 期限: 2007年6月29日まで [5] その他の制限: ポインタは禁止。制御構文はfor・while・ifのみ。break・continueは禁止。キーボードからの入力はscanfで拾うこと。
26 名前:22 mailto:sage [2007/06/24(日) 13:55:53 ] >>7 うーん。条件もう一度確認してみて。 > 移す側がいっぱいになってとき じゃなくて、「移される側がいっぱいになるとき」 と読みかえると、解が出るんだが。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4369.txt canmove() の中の #if 0 を #if 1 に変更すると、>>7 に書いてある通りの動作になるが、 解なしになる。 main() の中の #if を同様に変更すると、探索の途中経過を表示する。
27 名前:デフォルトの名無しさん [2007/06/24(日) 14:48:59 ] [1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある (kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt ) 次の手順で動作するプログラムheapsort.cを作成し,その動作を確認せよ. まずファイルから保存されているデータ数nを読み込む. データを1つ読み込み,ヒープを構成する. これをn回繰り返し,その度にヒープを構成する. すべてのデータを挿入し終ったらヒープが完成するので,データを木構造がわかるようにディスプレイ上に表示する. 次に,deletemax()関数をn回呼び出し,ソート処理を進める. 最後に,整列されたデータをディスプレイ上に表示しプログラムを終了する. [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005 [3.3] 言語: C [4] 期限: 6月26日 夜まで [5] その他の制限:木構造のディスプレイ表示方法は各自に任せる. 結果がソートされていることをそれぞれのデータについて毎回確認すること. どなたか解る方、解いていただけるとありがたいです。
28 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 14:49:25 ] >>25 それ前スレに同じ問題あったぞ 回答は954かな
29 名前:前852 [2007/06/24(日) 14:54:02 ] >>24 コンパイルが通らなくなりました。 In file included from /usr/include/stdlib.h:33, from seiseki.c:19: /UNIONFS/usr/bin/../lib/gcc/i486-linux-gnu/4.0.4/include/stddef.h:214: error: syntax error before 'typedef'
30 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 15:10:00 ] >>6 斜め読みしただけだが。 search1() > while(p[i] != ' '){ → while(1) { に。 search2()も同様の変更。
31 名前:前852 [2007/06/24(日) 15:16:17 ] quickの再起をwhileの外にした時点で実行すると 処理中 を表示する前に[SegmentationFault] != NULLにしても同上 です。
32 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 15:33:46 ] >>26 多分>>7 のタイプミスと思われ
33 名前:984 [2007/06/24(日) 15:34:52 ] >>31 >条件分岐を逆にしただけなのですが この修正が怪しい。 quick()内の判定条件を見直せ。 3,4件の小さなデータを使い、 処理を追いかけてみるといい。 これは自力でできると思う。
34 名前:前852 [2007/06/24(日) 15:44:08 ] >>33 > < を逆にして < > にすべきところを <= >= にしていたのが原因だったみたいです。 無事完成しました。 今までご協力してくださったみなさま、 本当にありがとうございます!
35 名前:984 [2007/06/24(日) 15:59:27 ] ソートのロジックは何か変だなと思います。 何かを参考にしたのでしょうか。 一度見直した方が良いようです。
36 名前:前852 [2007/06/24(日) 15:59:48 ] //データを構造体配列に取り込んでいく while(fgets(buf,sizeof(buf),fin)>0){ p = buf; field[0] = buf; j = 1; if(buf[strlen(buf)-1] == '\n'){ buf[strlen(buf)-1] = 0; } while(*p != 0){ if(*p == ','){ *p = 0; field[j++] = p+1; } p++; } ここの流れ(挙動?)がよく分からないのですがどういう感じでよみこんでいってるんでしょうか?
37 名前:前852 [2007/06/24(日) 16:01:01 ] ソートですが、書籍に載っていた物をそのまま使い昇順ソートを作った物を 大小の判別っぽいところを逆にして降順ソートにしました。
38 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:06:14 ] あんた甘えすぎ
39 名前:前852 [2007/06/24(日) 16:08:36 ] >>38 うっせーよ、カス
40 名前:デフォルトの名無しさん [2007/06/24(日) 16:21:08 ] 甘えん坊にカスと言われた>>38 、可哀想っす >>36 きっとね、いい感じに読み込んでると思うよ、テヘ
41 名前:前852 [2007/06/24(日) 16:35:51 ] 39は偽物ですよ
42 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:42:36 ] 以下のプログラムを書いたんですが データ数が多いせいかSystem.StackOverflowException'のハンドルされていない例外 となってしまいます。 解決方法を教えてください。 お願いします。 /*畳み込み和を求めるプログラム*/ #include <stdio.h> #define FMAX 1000000 /*関数f(τ)のデータ数 「100万個」 */ #define GMAX 1000000 main() { int f[FMAX]; /*関数f(τ)*/ int g[GMAX]; /*関数g(τ)*/ int sum[FMAX+GMAX-1] = {0}; /*畳み込みの結果を入れる変数*/ int i,t; /*関数f,gの初期値の代入(全て1)*/ for (i=0;i<FMAX;i++ ) f[i]=1; for (i=0;i<GMAX;i++ ) g[i]=1; /*畳み込み和の計算*/ for (t=0; t< FMAX+GMAX-1; t++){ for( i=0 ; i<GMAX; i++){ if ( t-i >= 0 && t-i < FMAX) sum[t] += f[t-i]*g[i]; } } /*計算結果の表示*/ for (t=0 ; t<FMAX+GMAX-1; t++) printf("%d,",sum[t]); }
43 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:46:33 ] >>42 一気にやろうとしないで小分けにすれば?
44 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:46:55 ] 配列宣言の頭に static をつける
45 名前:ぴっころ [2007/06/24(日) 16:48:52 ] 初めまして。これから度々お世話になるかもしれませんが宜しくお願いします。 今はC言語で0をある数で割るとどうなるのかが分かりません。 ある数を0で割るとエラーになる事は調べて分かったのですが。
46 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:50:57 ] >>45 いや、0だと思うんだが・・・
47 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:52:05 ] c言語に限らず0だろ
48 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 16:54:17 ] >>45 は0ではなく'0'を割ったんだろ
49 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:00:21 ] >>45 グダグダ言ってないで、無料のCコンパイラ拾ってきてやってみろ 頭で考えたり、誰かに聞くよりより、実際にやってみた方が身に付く 少数点に','使う奴がいたり、0をある数字で割るとどうなりますかと 聞く奴がいたり、この国の教育はどうなってるんだよ。
50 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:04:21 ] 小数点にカンマを使うのは、ヨーロッパのどこかだったような
51 名前:ぴっころ [2007/06/24(日) 17:05:24 ] >>49 どんなコードを書けば、y = x / 0; のyの値を確認できますか? エラーで終わってしまうんです。すみませんが教えてくださいお願いします。
52 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:08:12 ] 自動配線ツールをCで書こうと思ってるんですけど。 アルゴリズムはmazeをベースで。 書くときに参考になるソースコードとかってどっかに落ちてるものなんでしょうか? アルゴリズム分かっても、書くのが素人なので、どれ位の規模(行数)になるかとか、必要な関数が予想つきません。 サンプルなどがあればと思って質問させていただきました。 誘導していただければ幸いです。
53 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:09:53 ] >>51 その処理は未定義。どうしても確認したければ int x = 3; int y; x -= 3; y = 3 / x; printf( "%d", y ); ちなみに、VC++6.0では実行時エラー。
54 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:12:57 ] >>52 スレ違い
55 名前:ぴっころ [2007/06/24(日) 17:14:14 ] 確かに。 次に来た時にはもう少しマシな質問をしたいと思いますので、よろしく お願いします。 ありがとうございました。
56 名前:ぴっころ [2007/06/24(日) 17:19:42 ] >>53 確認有難うございます。やっぱりエラーでますか >>49 の >グダグダ言ってないで、無料のCコンパイラ拾ってきてやってみろ から、確認する方法がある(少なくとも>>49 サンは知ってる)と思ったのですが..
57 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:26:34 ] もうくんな
58 名前:984 [2007/06/24(日) 17:28:17 ] >>36 fgetsはファイルから1行ずつ読み込む。読めなくなったらNULLを返す。 if...でしていることは、行末の改行コードを取り除く事。 内側のwhileでは、行の先頭から','を見つけ、文字列の分割をしている。 処理を終わると、bufの中はNULLで区切られた複数の文字列となり、 ポインタ配列には各文字列の先頭が格納される。
59 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:28:34 ] >>56 エラーが出るって事で確認した事にはならんのか?
60 名前:42 mailto:sage [2007/06/24(日) 17:33:36 ] >>44 教えていただいたように static int sum[FMAX+GMAX-1] ; としてみたら、動作しました。(よく分かってませんがw) ありがとうございましたー
61 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:36:37 ] >>56 0除算時の動作は未定義。よって、どんな動作をしても規格上問題ない。 プログラムがランタイムエラーになっても、演算結果が0になっても、そこで無限ループに陥ってもOK。 www.st.rim.or.jp/~phinloda/cqa/cqa7.html 宿題スレよりこっちのほうがいいと思う。 C言語なら俺に聞け(入門篇) Part 14 pc11.2ch.net/test/read.cgi/tech/1181735298/ くだすれC言語(初心者用) Part.2 pc11.2ch.net/test/read.cgi/tech/1172099763/
62 名前:前852 [2007/06/24(日) 17:38:03 ] >>58 ということは、fgetsのところで処理をすれば、 1行がどれくらいの文字数あるかとかも判別できると言うことですか?
63 名前:ぴっころ [2007/06/24(日) 17:41:08 ] printf("%d\n",data) でdata=-600の場合に-600と出力されるのでしょうか? 実際にやってみろと言われそうですが、コンパイラのダウンロードの仕方 とかが良く分からないもので
64 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:42:02 ] 帰れ
65 名前:984 [2007/06/24(日) 17:42:47 ] >>62 そういう処理を加えれば出来るでしょうが。 文字数が想定以上に長いときの事も考慮する必要がありますね。
66 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:43:41 ] >>63 コンパイラのダウンロードがわからないならまずはそこから試したほうがいい。 ネットでちょっと検索すれば導入をわかりやすく解説しているサイトなんて山ほどある。 手コーディングが悪いとは言わんが、時代にあってないと思う。 あ、あと質問の答えはそのとおり。-600って表示される。 けどココは宿題スレだからすれ違い。
67 名前:ぴっころ mailto:sage [2007/06/24(日) 17:43:58 ] >>59 エラーだよっていうのは >>45 で聞く前から確認済みです。 >>45 の調べた=>自分でコードを書いて調べてみたということです。 それを踏まえてココで聞いたのでが..そしたら>>49 のレスです
68 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:50:26 ] 手コーディングって、コードの自動生成と比べて、手作業でソースを書いていく作業という意味でOK?
69 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:51:06 ] >>63 ぴっころ ココは宿題回答スレだから C言語については、こっちで聞け! pc11.2ch.net/test/read.cgi/tech/1181735298/l50
70 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:52:29 ] >>68 ごめん、そういうつもりで手コーディングって言ったんじゃないw 紙とペンでコーディング、デバッグとかをするって意味で使った。 わかりづらい上に時代遅れでスマソ
71 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:53:22 ] あえて言うなら、机上コーディングか
72 名前:ぴっころ [2007/06/24(日) 17:55:30 ] スレ住民の方々お騒がせしてすみません。 紹介して貰ったスレに移ります。 応えてくれた方々ありがとうございました。 失礼します。
73 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 17:58:01 ] 個人的には「ペーパーコーディング」と「机上デバッグ」
74 名前:デフォルトの名無しさん mailto:sageN+が大変なことにw [2007/06/24(日) 18:10:57 ] 手コーディングの“手”が紛らわしいな
75 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:14:23 ] 若い人はハンドアセンブルなんて知らないだろな〜
76 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:32:29 ] 知らないけど、聞くだけでもめんどくさそうだなw
77 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:38:28 ] 簡単だよ、ニモニック表が頭に入っていれば。 多少の暗算も必要になったりはするけどね。
78 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 18:41:52 ] >>27 表示が超手抜きだが(配列をそのままベタで表示するだけ) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4370.txt
79 名前:デフォルトの名無しさん [2007/06/24(日) 18:56:25 ] [1] 授業単元:C言語 [2] 問題文:次の計算を行うプログラムを作成せよ。 C=B/X Bは三行三列の行列 B 5 -2 2 2 3 1 1 2 2 X=3 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: 2007年6月24日pm:11:00 です。よろしくおねがいします。
80 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:02:56 ] 初めて1ヶ月少々なのですが自分で数当てゲームを作ってみました 一応動作し、正解の数もランダムで取得できるようにはなっていますが ここはこうしたらよい、とかあったらありがたいな、と思い カキコしてみました。不具合、というか汚い書き方だとは思いますがヨロシクお願いします。 長いので次のレスで書きます
81 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:10:24 ] >>1 を読め。
82 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:10:35 ] >>80 ロダにUp汁
83 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:20:44 ] >>80 次のレスまだ〜〜〜?もしかして、次の スレ ってオチ?w
84 名前:依頼者 [2007/06/24(日) 19:31:12 ] [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク): 変数xのyビット目の値を返す関数int bit_test(int x,int y)の作成。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio.net [3.3] 言語:C++ [4] 期限: 07年6月25日まで [5] その他の制限:特になし 演算子の問題ですがまったくわかりません。どなたかお願いします。
85 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 19:34:22 ] 前スレにも他のスレにもあったな。 >>84 int bit_clear(int x,int y){return x&~(1<<y);} int bit_test(int x,int y){return (x&(1<<y))>>y;}
86 名前:42 mailto:sage [2007/06/24(日) 19:46:42 ] >>44 さんに教えて頂いたとおりで、動いたのですが。 配列宣言の頭にstaticをつける意味が分からなかったので、教えていただきたいです。 そもそも、なんでエラーになってるのかも分からない始末ですorz 少し調べたんですが、malloc というのを使えば領域確保?できるんでしょうか?
87 名前:デフォルトの名無しさん [2007/06/24(日) 19:49:45 ] [1] 授業単元: 2年プログラミング実習 [2] 問題文(含コード&リンク): 電卓計算のための、数式変換プログラムを作成せよ。 逆ポーランド法へと変換し、それを要素ごと配列へと格納せよ。 [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6.25 [5] その他の制限: 最終的に、配列に文字型で式が格納されていること。 演算子の判別にはswitchを用いて、関数を作成する事。 switchの部分がわからんのだが、多分+なら1、-なら2と返す関数を作れって事だとおも。 最初の数式はargvは使わず、プロンプトメッセージの後にfgetsで読み込んでます。
88 名前:デフォルトの名無しさん [2007/06/24(日) 20:08:35 ] >>79 #include <stdio.h> int main(void) { int i,j,X=3,c[3][3]={0}; int b[3][3]={{5,-2,2}, {2, 3,1}, {1, 2,2}}; for(i=0;i<3;i++){ for(j=0;j<3;j++){ c[i][j]=b[i][j]; } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%3d/%d",c[i][j],X); } printf("\n"); } return 0; } 私も初心者なんですが、書いてみました。 問題の意図にそくして無いかも。 それに配列cは用意する必要は無い気がするんだけどね…。
89 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:18:49 ] [1] 授業単元:プログラミング技術3 [2] 問題文(含コード&リンク): /*(1)date.txtというファイルを用意し、次のプログラムを実行せよ。 (2)このプログラムを書き換え、ファイル名をコマンドラインから指定出来るようにせよ。*/ #include<stdio.h> #include<stdlib.h> int main(void){ char c; char filename[] = "date.txt";//ファイル名 FILE *fp; //ファイルポインタ //ファイル「読み込み」で開く if ((fp == fopen(filename "r")) == NULL){ printf("File dose not exist. \n"); exit(1); } //ここからファイルを読み込んで処理 //例 一文字入力し表示 wile((c=getc(fp))!=EOF){ printf("%d\n" , c); } //開いたファイルを閉じる fclose(fp); } [EOF] ↑ 全くと言って分かりません。完全にお手上げです。 少々の解説も付加してくださると助かります。 よろしくお願いします。
90 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:20:25 ] >>87 switchの部分は↓的なことだと思う。 switch( ope ) { case '+': iAns += iNum; break; case '-': iAns -= iNum; break; (以下略)
91 名前:89 mailto:sage [2007/06/24(日) 20:20:27 ] 続きです。 [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限: 07年6月26日まで [5] その他の制限:ポインタを少々習った程度です。
92 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:20:29 ] >>87 前スレの回答ではお気に召さなかったということかな? それっぽく直したよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4373.txt
93 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:25:42 ] >>86 配列は領域を連続で確保できなければいけない。 mallocを使ったところで、確保できる保証は無い。 staticをつけた場合は、確保するために使用する領域が異なるため上手く行っているだけ。 (staticウンヌン部分について自信なし。詳しい人補足plz)
94 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:28:17 ] >>93 取り敢えず間違ってはいないよ。
95 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:29:14 ] >>89 変更部分だけ int main(int argc, char *argv[]) { char c; FILE *fp; if(argc<2) { printf("ファイル名の指定がねぇ〜ぞゴルァ!\n"); return 1; } if((fp=fopen(argv[1],"r"))==NULL){
96 名前:デフォルトの名無しさん [2007/06/24(日) 20:52:01 ] >>97 ・・・?前スレ?重複質問だったのか? とりあえず見てみた。マジ有難い。 提出用に少し変更してみて、不明な所があれば聞くかも知れないが、大丈夫かな。
97 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 20:52:16 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 以下のコマンドを実行可能な名簿管理システムを作成せよ。 1. メンバの追加 2. メンバの削除 3. メンバリストを名前順(アルファベット昇順)で表示 4. メンバリストのファイル出力 5. 引数として"-f ファイルパス"を指定することによるメンバ初期データの読込 メンバ情報としては、最低限、名前と学生番号を持つこと。システムの拡張は自由に行ってよい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:無期限 [5] その他の制限:構造体、ポインタがつかえるとよい どうかよろしくおねがいします
98 名前:デフォルトの名無しさん [2007/06/24(日) 20:52:40 ] >>96 >>92 で
99 名前:89 mailto:sage [2007/06/24(日) 20:54:06 ] >>95 レスどうもです。 え〜と、main関数内の変更とファイルポインタの下にif(argc<2) { を printfの下にリターン文を、書けって事でいいんですか? また、if((fp=fopen(argv[1],"r"))==NULL){ は return1 exit(1); } if((fp=fopen(argv[1],"r"))==NULL){ のようにすればいいのでしょうか?
100 名前: ◆sJh8mwqDUo [2007/06/24(日) 20:58:03 ] [1] 授業単元: C言語入門(配列・関数) [2] 問題文: 1. 0からN-1の間の擬似乱数整数を返す関数(myrandと名前をつける)を作成しなさい。 2. myrandでm×N個の擬似乱数を発生させて、出現しなかった整数の個数を、N個発生させる毎に求めなさい。 ただし、Nは1000以上に#defineし、mは実行時にキー入力するものとする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 6月27日夜 [5] その他の制限: main関数にすべての処理を書くこともできるが、そうしないで関数に分割すること。 乱数発生関数の初期化を忘れないこと。 上記の通りです。どなたかできる方、よろしくお願いします。
101 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:03:10 ] 101
102 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:11:30 ] >>100 関数に分割するって、どこをすればいい? 無理矢理関数にしたほうがいいか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4374.c
103 名前: ◆sJh8mwqDUo [2007/06/24(日) 21:15:24 ] >>102 レスありがとうございます。 用はmyrandの関数をちゃんと作れって事ですかね。 実行結果がよければOKなのでどう解釈してもいいと思います。
104 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 21:26:37 ] >>96 うん重複だけど、注文のつきかたで、てっきし同じ人かと思った 質問は別にいいけど、あんまりしつこくはしないでね めんどくさいからw
105 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:02:39 ] [1] 授業単元:プログラム [2] 問題文(含コード&リンク): 右利きの奴が左曲がりであることを検証するプログラムを作成せよ。 [3] 環境 [3.1] OS: (Windows/Linux/等々)WinXP [3.2] コンパイラ名とバージョン: gcc 3.4 or VC5以降 [3.3] 言語: C/C++/どちらでも可 [4] 期限: 6/24中 [5] その他の制限:使用可能なライブラリ stdio.h string.h stdlib.h memory.h
106 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:12:08 ] [1] 授業単元: 複雑学 [2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: 特にナシ
107 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:14:34 ] > ところどころ■で隠してあります どうでもいいけど ちょっとエロいな
108 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:17:13 ] [1] 授業単元: 複雑学 [2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: 特にナシ よろしくお願いします。
109 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:21:36 ] >>107 でしょww お願いします。
110 名前:デフォルトの名無しさん [2007/06/24(日) 22:35:17 ] #include <stdio.h> main() { FILE *fpin,*fpout; char c; int i,j; int B[3][3]; fpin = fopen("in-1.txt","r"); fpout = fopen("out-1.txt","w"); while(fscanf(fpin,"%c",&c)!=EOF) if(c == 'B') {for(i=0;i<3;i++) {for(j=0;j<3;j++) {fscanf(fpin, "%d", &B[i][j]); }}} for (i=0; i<3; i++) { for (j=0; j<3; j++) fprintf(fpout,"%3d",B[i][j]/3); fprintf(fpout,"\n"); } fclose(fpin); fclose(fpout); return(0); } 三行三列行列を3で割るというものなんですが、上のソースでやってもint型なんで 少数点以下がでません。float型にしてみても、うまく答えがでません。どこを直せば いいでしょうか。 B 5 -2 2 2 3 1 1 2 2 です。
111 名前:89 mailto:sage [2007/06/24(日) 22:44:22 ] 89です。 >>95 氏のアドバイスを参考にやってみましたが、上手く動作しません。 #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]){ char c; char filename[] = "date.txt";//ファイル名 FILE *fp; //ファイルポインタ if(argc<2) { //ファイル「読み込み」で開く if((fp=fopen(argv[1],"r"))==NULL){ printf("File dose not exist. \n"); return 1; exit(1); } } //ここからファイルを読み込んで処理 //例 一文字入力し表示 wile((c=getc(fp))!=EOF){ printf("%d\n" , c); } //開いたファイルを閉じる fclose(fp); } [EOF] 何処が違うのでしょうか?
112 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:45:51 ] なんでおまえら、「うまくいきません」とか「うまく答えが出ません」とか、 糞の役にも立たない報告しかできないの? 無能なの?
113 名前:89 mailto:sage [2007/06/24(日) 22:49:58 ] smp3.c(17) : error C3872: '0x3000': この文字を識別子で使用することはできません smp3.c(17) : error C3872: '0x3000': この文字を識別子で使用することはできません smp3.c(17) : error C2065: ' ' : 定義されていない識別子です。 smp3.c(17) : error C2143: 構文エラー : ';' が '}' の前にありません。 smp3.c(21) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(27) : error C3409: 空の属性ブロックは認められません。 smp3.c(27) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(27) : error C2059: 構文エラー : '-' smp3.c(27) : error C2059: 構文エラー : ')' ↑そまそ。こんな感じにエラーが出ます。 因みに、この確認はコマンドプロンプトで出したものです。
114 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:51:34 ] >>113 ソースに全角のスペース含まれてないか?
115 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:54:34 ] typo多過ぎだし、人間やめるといいよ。
116 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 22:55:12 ] wile → while あとはわからん。 そもそもこのプログラム22行しかないのに、なんで27行目のエラーが出てるんだ?
117 名前:89 mailto:sage [2007/06/24(日) 22:58:15 ] >>114 全角のエラー修復できました。 smp3.c(21) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(27) : error C3409: 空の属性ブロックは認められません。 smp3.c(27) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(27) : error C2059: 構文エラー : '-' smp3.c(27) : error C2059: 構文エラー : ')'
118 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:01:09 ] >>89 ほれ。 #include <stdio.h> int main(int argc, char **argv) { int c; if (argc > 1 && !freopen(argv[1], "r", stdin)) return perror(argv[1]), 1; while ((c = getchar()) != EOF) printf("%d\n", c); return 0; }
119 名前:89 mailto:sage [2007/06/24(日) 23:01:55 ] >>116 レスどうもです。 smp3.c(17) : error C2143: 構文エラー : ';' が '{' の前にありません。 smp3.c(23) : error C3409: 空の属性ブロックは認められません。 smp3.c(23) : error C2143: 構文エラー : ']' が '(' の前にありません。 smp3.c(23) : error C2059: 構文エラー : '-' smp3.c(23) : error C2059: 構文エラー : ')' また一つエラーが減りました。 問題文も含めた場合の最終行が27行目です。 今回は問題文を消しました。
120 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:03:39 ] まさかとはおもうが [EOF] ← これもソースにタイプしてるのか?
121 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:06:24 ] >100 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 int myrand(void) { return (int)(rand() / (RAND_MAX + 1.0) * N); } int main(void) { int i, j, m; char check[N] = {0}; srand(time(NULL)); scanf("%d", &m); for(i=0; i<m; i++) { int cnt = 0; for(j=0; j<N; j++) check[myrand()] = 1; for(j=0; j<N; j++) if(!check[j]) cnt++; printf("出現しなかった整数の個数:%d\n", cnt); } return 0; }
122 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:13:23 ] >>110 - int B[3][3]; + double B[3][3]; - fscanf(fpin, "%d", &B[i][j]); + fscanf(fpin, "%lf", &B[i][j]); - fprintf(fpout, "%3d", B[i][j] / 3); + fprintf(fpout, "%g", B[i][j]/3); とりあえずこんなところでどうよ。
123 名前:デフォルトの名無しさん [2007/06/24(日) 23:27:56 ] >>122 さん! 計算できました!ありがとうございます! そこでまた質問で申しわけないんですが答えが 1.66667-0.6666670.666667 0.66666710.333333 0.3333330.6666670.666667 のように表示されてしまうんですが、1.66667と1とかの間にスペースを設けたいん ですが何か手はありませんか?無知ですいません。
124 名前:デフォルトの名無しさん [2007/06/24(日) 23:32:44 ] [1] 授業単元:プログラミング C [2] 問題文(含コード&リンク): 以下のPADとプログラムを作成しなさい≪面白いプログラム≫ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:C [4] 期限: 6/25の9時まで [5] その他の制限: switch文を習った後の課題です。 他の課題は終わらせましたが、どうしても面白いと思えるものを作ることが出来ませんorz 力を貸してください。お願いします。
125 名前:デフォルトの名無しさん mailto:sage [2007/06/24(日) 23:50:54 ] >>123 - fprintf(fpout, "%g", B[i][j]/3); + fprintf(fpout, "%g ", B[i][j]/3); これでおk
126 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:04:04 ] >>97 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4377.txt
127 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:30:14 ] [1] 授業単元:プログラミングU [2] 問題文リンク:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4379.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語のみ [4] 期限: 2007年06月26日AM01:00まで [5] その他の制限: 特にないです。 自力ではどうしてもできませんでした。 どうかよろしくお願いします。
128 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:30:57 ] 【質問テンプレ】 [1] 授業単元: プログラミング言語 [2] 問題文: 数値の列を入力し,それをリスト構造にデータを 格納せよ.その際,数値が大きさの順に並ぶよう にせよ. - 入力する数値の数を限定してもよい - たとえば5個 • リストの内容を先頭から出力せよ. - 結果として入力された数値の列が,大きさ順 に並び替えられて表示されることになる. • リスト構成する要素(セル)はmalloc関数でヒー プ領域から確保するものとする. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio2005 [3.3] 言語:C++ [4] 期限:6月28日まで [5] その他の制限:ポインタの練習です。一応、こんな感じらしいです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4380.txt どなたかご教授お願いします
129 名前:デフォルトの名無しさん [2007/06/25(月) 00:46:17 ] | | ∧ ∧ |/ ヽ ./ .∧ | `、 / ∧ |  ̄ ̄ ̄ ヽ | ̄ ̄月曜日 ̄ ̄ ̄ ̄) | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ |ヽ-=・=-′ ヽ-=・=- / |:: \___/ / やぁ・・・・ |::::::: \/ /
130 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:52:10 ] 鬱入った。 寝る。
131 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 00:57:49 ] >>19 適当。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt
132 名前:デフォルトの名無しさん [2007/06/25(月) 01:33:09 ] >>125 さん できました!ありがとうございました!
133 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 02:53:58 ] >>131 ありがとうございました
134 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:06:59 ] [1] 授業単元:C++研究 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt (プログラム1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt (プログラム2) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4383.txt (プログラム3) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4384.txt (プログラム4) 上記1〜4のプログラムを下記のように修正します。 クラス(設計図)部分を概要部分(ヘッダファイル)と実装部分(ソースファイルに分け) そしてメイン部分も分け、4つのプログラムを新しく作り直しなさい。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年6月26日12:00まで] [5] その他の制限:特になし どうかよろしくお願いします
135 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:17:42 ] >>134 単にソースをclass.cpp class.h main.cppとかってファイル作って にコピペしまくるだけで終了しない?
136 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 03:51:42 ] >>124 これは難問だ 何をもって面白いとするかがわからんことには作りようがない 技術的には>>124 は全然問題なさそうだから、こんなのはどうだ? 怪しいswitch文だが、ちゃんとコンパイルは通る 実行結果が予想できるかい? プログラムの挙動的には面白いと思うんだが int main(){ switch(1){ while(1){ case 0: printf("0"); break; default : printf("default"); case 1: printf("1"); } } return 0; } 良い子はマネしないようにな
137 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:06:16 ] もう一つ怪しいswitch文 01default って出力されそうだけど、実行結果は case 1: のところで無限ループになる int main(){ int i = 0; switch(i){ while(1){ case 1: printf("1"); i++; continue; case 0: printf("0"); i++; continue; default : printf("default"); break; } } return 0; }
138 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:10:19 ] [1] 授業単元: プログラミング基礎A [2] 問題文(含コード&リンク): n乗の数を求める関数を、作成しなさい。 ◎以下を参考の事 ・n乗値を求める関数 n乗値 数字iのn乗値を返す関数 関数定義 double myPow(double i, int n) 例1:i=1.2,n=3の場合,1.728になる 例2:i=1.2,n=-3の場合,0.5787[037]になる 例3:i=1.2,n=0の場合,1.0になる 正,0,負の3つの場合があることに注意 [3] [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限:2007年6月25日10時30分 [5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。 よろしくおねがいします。
139 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:27:21 ] >>137 コンパイラ何? もしかしてBCCじゃね?w
140 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 04:35:55 ] BCCでもよく見たら01111…ってなってた てっきり11111…と怪しい動作するもんだと思った BCCを疑ってごめんなさい。
141 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:37:21 ] >>137 こんなコードは出来ればごめん被りたいが、 「switchはラベルに飛ぶだけ」てのが良く分かる例かもね。
142 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 05:43:33 ] [1] 授業単元: 複雑学 [2] 問題文(含コード&リンク): 次のH´enon 写像(エノン写像) のボックスカウンティング次元を考える. (Xn,Yn)→(Xn+1,Yn+1)=(Yn+1-a*X^2*n, b*Xn) :a = 1.4, b = 0.3 に固定する. 10×10分割したマス目内にアトラクタの点が入っているかどうか調べる.点が入っているマス目の数を数えよ サンプルプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4376.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 25日正午 [5] その他の制限: プログラムをリザイレクションしてdatファイルにしてGNUPLOTでグラフを表示させる。 グラフ vista.jeez.jp/img/vi8271774448.jpg よろしくお願いします。
143 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 07:23:55 ] >>138 double myPow(double i, int n) { double a=1.0; if(n<0){ n=n*-1; i=1/i; } if(n != 0){ while(n-->0) a*=i; } return a; }
144 名前:デフォルトの名無しさん [2007/06/25(月) 09:24:55 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 簡単な絵を書いて画面に出力しろ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 無し [5] その他の制限: printf();などの出力関数のみを使った場合はNGとする
145 名前:124 [2007/06/25(月) 10:02:36 ] >>136 2つもレスしていただいて、本当にありがとうございます。 早速試してみます。 教授の面白いというのはどうもお笑い系のようです。 関西出身のようで、講義に使うプログラムもがんばって笑いを誘おうとしていますので。
146 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 10:34:26 ] >>142 nS hist[i][j] printf("%f %f\n", x, y), hist[px][py]++;
147 名前:デフォルトの名無しさん [2007/06/25(月) 10:56:51 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): テキストファイルを読み込み、A〜Zまでの文字がそれぞれ何個現れたかを数えろ。大文字と小文字は区別しないもとする。 [3] 環境 [3.1] OS: (Windows/Linux/等々) WinXP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限: 自分で書いたコード ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4386.txt 上記のコードの中の /* ファイルに含まれているアルファベットの個数をカウント */ この部分がうまく働きません 何がいけないんでしょうか?
148 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:01:39 ] >>147 なんだこれ。 -- if('a' <= ch && ch >= 'z') -- やりたいことは、if (ch >= 'a' && ch <= 'z')かif ('a' <= ch && ch <= 'z')じゃないのか?
149 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:03:11 ] if('a' <= ch && ch >= 'z') else if('A' <= ch && ch >= 'Z') if('a' <= ch && ch <= 'z') else if('A' <= ch && ch <= 'Z') chと文字の位置を変えるから(略
150 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:04:41 ] >>148 ああああああああああ、、、 アホみたいなミスしてました・・・ 恥ずかしい
151 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:07:42 ] [1] 授業単元: プログラミング [2] 問題文: 1、英大文字は小文字に英小文字は大文字に変えて出力するプログラムを作りなさい 2、テキストの中に現れる0から9までの数字の頻度を調べるプログラムを作りなさい [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: ([2007年06月25日14:20まで [5] その他の制限:特にありません 時間があまりありませんが、できるところまででも よろしくお願いします
152 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:15:41 ] >>151 1 #include <stdio.h> #include <ctype.h> #include <conio.h> int main(void) { char ch; ch = getche(); if('a' <= ch && ch <= 'z') printf(" -> %c\n",toupper(ch)); else if('A' <= ch && ch <= 'Z') printf(" -> %c\n",tolower(ch)); return 0; } 2 >>147 のアルファベットのとこを数字に変える
153 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:21:14 ] is関数使っとけ
154 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:34:14 ] <ctype.h>使ってるんならis関数使わないほうが不自然だよな。
155 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:39:39 ] isalpha( ) か 存在を忘れてた
156 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 11:41:20 ] >>151 1. #include <stdio.h> #include <ctype.h> int main(void){ int ch; while((ch = getchar()) != EOF){ if(islower(ch)) putchar(toupper(ch)); else if(isupper(ch)) putchar(tolower(ch)); else putchar(ch); } return 0; } 2. #include <stdio.h> #include <string.h> #include <ctype.h> int main(void){ int i, count[10] = {0}; char buf[2] = {0}, *p = buf; while((*p = getchar()) != EOF) if(isdigit(*p)) count[atoi(buf)]++; for(i = 0; i < 10; i++) printf("%d : %d\n", i, count[i]); return 0; }
157 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:26:34 ] >>128 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4389.txt 悪い。元のがちょっとアレだったんでコマンドライン引数から入力拾うように勝手に仕様変えちった 要点を掴んでほしい
158 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 12:47:34 ] 152ー156の方々非常に迅速な解答ありがとうございました
159 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:15:49 ] [1] 授業単元: プログラミング [2] 問題文: 成績を管理するプログラムを作成する.一人一人の学生には,学籍番号(整数)がつけられているの で,学籍番号と成績(実数)の組みで管理することとする.本問題で作成するプログラムは,4人の学生について, 英語と数学の成績を入力すると,英語と数学の合計点で最高点を取った学生を出力するものとする. 成績を管理する構造体の名前をstudent_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを, 学籍番号はint型とし,名前をidとする 英語の成績はdouble型とし,名前をengとする 数学の成績はdouble型とし,名前をmathとする とする.また,以下の関数を作成し,それを利用すること. n人のデータを入力する関数:void InputData(student_t s[], int n) 第一引数は学生の配列 第二引数は学生の人数 関数自体は,何人でも扱えるように作成すること 課題実行においては以下の点に注意すること. プログラム名は「score」とすること. 結果の表示は小数点以下3桁で表示すること. 各教科の得点は,正の数に限定してよい. 最高点が複数人いた場合は,最高点を取った中で最初に入力された人を表示すること. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C 期限はいつでもいいです。よろしくおねがいします。
160 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:21:04 ] [1] 授業単元: プログラミング [2] 問題文: 数字の書かれているテキストファイルを読み込んで、その数字に1を加えた数をテキストファイルに出力するプログラムを作成しなさい. 読み込むテキストファイルには1行目に整数が書かれており、2行目以降には何も書かれていないとする. 課題実行においては以下の点に注意すること. プログラム名は「count」とすること. 読み込むテキストファイル名はcount.txtとする. 出力するテキストファイル名はcount.txtとする. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C これもわかりません。よろしくおねがいします。
161 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:23:20 ] >>159 #include <stdio.h> main() { FILE *fpin,*fpout; char c; int i,j; int B[3][3]; fpin = fopen("in-1.txt","r"); fpout = fopen("out-1.txt","w"); while(fscanf(fpin,"%c",&c)!=EOF) if(c == 'B') {for(i=0;i<3;i++) {for(j=0;j<3;j++) {fscanf(fpin, "%d", &B[i][j]); }}} for (i=0; i<3; i++) { for (j=0; j<3; j++) fprintf(fpout,"%3d",B[i][j]/3); fprintf(fpout,"\n"); } fclose(fpin); fclose(fpout); return(0); }
162 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:26:54 ] >>127 #include <iostream> #define STACK 10 #define QUEUE 10 typedef int stack; typedef int queue; static int sfirst = 0, slast = 0, qfirst = 0, qlast = 0, qcount = 0; int push(stack *s, int i){ return slast == STACK ? -1 : (s[slast++] = i);} int pop(stack *s){ return slast == sfirst ? -1 : s[--slast];} int enqueue(queue *q, int i){ if(qlast == qfirst && qcount) return -1; q[qlast] = i, qcount++; qlast = (qlast + 1)%QUEUE; return i; } int dequeue(queue *q){ int ret; if(qlast == qfirst && !qcount) return -1; ret = q[qfirst], qcount--; qfirst = (qfirst + 1)%QUEUE; return ret; } int main(){ stack s[STACK]; queue q[QUEUE]; std::cout << "push" << std::endl; for(int i = 0; i < 13; i++) std::cout << push(s, i) << std::endl; std::cout << "pop" << std::endl; for(int i = 0; i < 13; i++) std::cout << pop(s) << std::endl; std::cout << "enqueue" << std::endl;for(int i = 0; i < 13; i++) std::cout << enqueue(q, i) << std::endl; std::cout << "dequeue" << std::endl;for(int i = 0; i < 13; i++) std::cout << dequeue(q) << std::endl; return 0; }
163 名前:デフォルトの名無しさん [2007/06/25(月) 16:29:50 ] >>126 さんありがとうございます 自分自身でも理解できるように勉強してみます
164 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:31:20 ] >>162 > [3.3] 言語: C言語のみ
165 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:32:25 ] >>160 #include <stdio.h> int main(void) { int n = 0; FILE *fp; if ((fp = fopen("count.txt", "r+")) == NULL) return 1; fscanf(fp, "%d", &n); rewind(fp); fprintf(fp, "%d\n", ++n); fclose(fp); return 0; }
166 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:41:16 ] >>144 $ cat vitamin.c #include <stdio.h> int main(int argc, char **argv) { if (argc < 2 || argv[1][0] == 0) return 0; putchar(argv[1][0]); ++argv[1]; return main(argc, argv); } $ cc vitamin.c $ ./a.out "簡単な絵"
167 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:50:21 ] >>165 ありがとうございました。
168 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:54:15 ] >>160 #include <stdio.h> int main(void){ FILE *fp = fopen("count.txt", "r"); size_t len; int i, flag = 1; char buf[1023], ret[1024] = {0}, *p; if(!fp) exit(1); fgets(buf, sizeof(buf), fp); if((p = strchr(buf, '\n')) != NULL) *p = '\0'; len = strlen(buf); for(i = 0; i < len; i++){ if(flag && (buf[len - i - 1] == '9')) ret[len - i] = '0', flag = 1; else if(flag) ret[len - i] = buf[len - i - 1] + 1, flag = 0; else ret[len - i] = buf[len - i - 1]; } if(flag) ret[0] = '1', p = ret; else p = ret + 1; if((fp = freopen("count.txt", "w", fp)) == NULL) exit(2); fputs(p, fp); fclose(fp); return 0; }
169 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:42:43 ] >>159 #include <stdio.h> typedef struct tag_student_t{ double eng, math; int id; }student_t; void InputData(student_t s[], int n){ int i; for(i = 0; i < n; i++){ printf("student %d\ninput data (id, eng, math) : ", i + 1); scanf("%d%lf%lf", &s[i].id, &s[i].eng, &s[i].math); } } int main(void){ student_t s[4]; double max = -1; int i, i_max = 0; InputData(s, 4); for(i = 0; i < 4; i++) if(max < s[i].eng + s[i].math) i_max = i, max = s[i].eng + s[i].math; printf("id : %d eng : %.3f math : %.3f sum : %.3f\n", s[i_max].id, s[i_max].eng, s[i_max].math, s[i_max].eng + s[i_max].math); return 0; }
170 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:48:10 ] >>162 #include <stdio.h> #define STACK 10 #define QUEUE 10 // <中略> int main(void){ stack s[STACK]; queue q[QUEUE]; int i; puts("push"); for(i = 0; i < 13; i++) printf("%d\n", push(s, i)); puts("pop"); for(i = 0; i < 13; i++) printf("%d\n", pop(s)); puts("enqueue"); for(i = 0; i < 13; i++) printf("%d\n", enqueue(q, i)); puts("dequeue"); for(i = 0; i < 13; i++) printf("%d\n", dequeue(q)); return 0; }
171 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:52:09 ] >>162 すいません。C言語までしか習っていないのでC言語のみでお願いします。
172 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:53:48 ] >>170 できればでいいのですが問1と問2にわけて頂けないでしょうか
173 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:15:22 ] >>172 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4390.txt
174 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:29:03 ] >>128 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4391.txt
175 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:18:34 ] [1] 授業単元:データ構造とアルゴリズム [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4394.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 10:30 [5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。 どんなに考えてもわかりません。わからないまま前日になってしまいました… よろしくお願いします。
176 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:24:03 ] まいったな……何の問題なのかも分からないや。
177 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:59:11 ] [1] 授業単元:プログラム技術 [2] 問題文: (2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。*/ main(int argc , char *argv[]){ int i; printf("%d argument(s).\n" , argc -1); for(i=argc-1; i>=0; i--){ printf("argv[%d] : \"%s\"\n", i , argv[i]); } } 引数の順番を入れ替えると(char *argv[] , int argc)入力した文字は反映されず、argument(s).の前に 意味不明の数字が表示されて動作を終了してしまいます。 C:\c>smp2 a b c 3616655 argument(s). ちなみに、引数を入れ替えなければ、逆に表示されます。 回答、よろしくお願いします。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 [5] その他の制限:
178 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:02:43 ] >>173 ありがとうございました! いろいろ注文多くすいませんでした。
179 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:05:55 ] >>177 argumentでスレを検索汁
180 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:07:42 ] >>177 >>14
181 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:11:23 ] >>177 > 引数の順番を入れ替えると(char *argv[] , int argc) っつか吹いたっw
182 名前:177 mailto:sage [2007/06/25(月) 20:16:15 ] >>179 >>180 検索しましたが、何の参考にもなりませんでした。 まだ習い始めたばかりでよく分からないんです・・・ >>181 なにか根本的に間違っていたりしますか? いや、冗談抜きでこの授業分からないんです・・・
183 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:18:02 ] >>182 言葉の意味を勘違いしているだけでしょ。main関数の中の引数の変数の定義を逆にしてどーすんだと。 仕様からして不適切だし、もしそれで答えろっていうなら、そんな講師は全世界レベルで非難を浴びますw
184 名前:デフォルトの名無しさん [2007/06/25(月) 20:22:35 ] [1] 授業単元:情報処理 [2] 問題文: 3つのベクトルA=(a1,a2,a3),B=(b1,b2,b3),c=(c1,c2,c3)がある。次のベクトル三重積に関する等式を示すプログラムを条件にしたがって作成せよ。 (A×B)×C=-(B,C)A+(A,C)B ここにA×Bは外積(A,B)は内積を示す。 データの入出力はファイルを使用 ファイル入出力に関してもサブルーチン化 ベクトルはそれぞれ一次元配列化 外積、内積ともにサブルーチンを作成し、外積は左辺、内積は右辺を計算できるようにすること [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:g77 fortran [3.3] 言語:fortran [4] 期限:2007/6/26 ぜひともおねがいします><
185 名前:177 mailto:sage [2007/06/25(月) 20:24:28 ] >>183 レスどうもです。なるほどorz >次に引数の順番を入れ替えて ↑では、これは何をしろと言っているのでしょうか・・・。 う〜ん、ますます分からなくなってきたorz
186 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:24:50 ] >言語:fortran ( ^ω^)・・・
187 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:26:37 ] >>185 問題文を全て一字一句違わず書けばいいよNE☆
188 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:28:15 ] >>160 #include <stdio.h> #include <stdlib.h> int main() { char *p; long l; char buff[128]; FILE *fop = fopen("count.txt","r"); fgets(buff,sizeof(buff),fop); l =strtol(buff,&p,10); fclose(fop); fop =fopen("count.txt","a+"); fprintf(fop,"\n%d",l+1); return 0; }
189 名前:177 mailto:sage [2007/06/25(月) 20:29:13 ] >>187 /*(1)次のプログラムを実行し結果を確認せよ。 (2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。*/ 問題文はコレで全てですorz
190 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:33:31 ] >>189 だから、受け継いだ値を逆から表示しろって問題なんでしょ?そういうこと。 括弧の中を逆にして受け継げって問題だったら全世界レベルで爆笑もんだよw スイスのジュネーブにあるISO団体が、んだごるぁ?てめぇんとこは俺らが決めた標準はおろか C言語の基本も理解していないおかしな授業をしてんのかと?国際的な裁判にかけられちゃいますよ?
191 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:35:29 ] >>177 まぁ、もし 入れ替え っていうなら、例えば引数を3つ受け継いだのなら 1番目と3番目を入れ替えるコードを書けと?そして argv[1] から順に表示しろと? そういう問題ならそうすべきだが、そんなことせずに単純に逆から表示すりゃ良いでそ。
192 名前:177 mailto:sage [2007/06/25(月) 20:41:53 ] みなさんどうもです。そうですね、main()の中を入れえ変えるってのは いくらなんでも無さそうですね。 有難うございました。
193 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:41:56 ] >>177 mainに関して、いろいろ実験してみるといい。 例えば、こんなのも駄目だ。 #include <stdio.h> int main(char *argv[]) { printf("%s\n", argv[0]); return 0; }
194 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:42:00 ] >>189 ほれよ。無駄な上に君の環境で動くかどうか分からないソース (多分大丈夫だろうけど) #include <stdio.h> int main(int argc, char **argv) { int i, j; char *tmp; printf("%d argument(s).\n" , argc -1); printf("argv[0] : \"%s\"\n", argv[0]); for (i = 1, j = argc - 1; i < j; ++i, --j) { tmp = argv[i]; argv[i] = argv[j]; argv[j] = tmp; } for (i = 1; i < argc; ++i) printf("argv[%d] : \"%s\"\n", i, argv[i]); return 0; }
195 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:49:58 ] 乱数を発生させて、1〜100までを網羅するように表示せよ。(順番は問わない) まったく、わからんよ。見かけによらず重い
196 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:55:07 ] >>195 日本語でおk
197 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:59:13 ] #include <stdio.h> #include <stdlib.h> #include <time.h> #define swap(type, x, y) do{ type temp = x; x = y; y = temp;}while(0) int main(void) { int x[100], i, j, k; srand((unsigned int)time(NULL)); for(i = 0; i < 100; i++) x[i] = i + 1; for(i = 0; i < 1000; i++){ j = (int)(((double)rand()/(RAND_MAX + 1))*100); k = (int)(((double)rand()/(RAND_MAX + 1))*100); swap(int , x[j], x[k]); } for(i = 0; i < 100; i++) printf("%3d ", x[i]); return 0; }
198 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:04:26 ] >>195 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int a[100],i,tmp,pos; int a_sz=sizeof(a)/sizeof(a[0]); srand((unsigned)time(NULL)); for(i=0; i<a_sz; i++) a[i]=i+1; for(i=0; i<a_sz; i++) { pos=rand()%a_sz; tmp=a[pos]; a[pos]=a[i]; a[i]=tmp; } for(i=0; i<a_sz; i++) printf("%d ",a[i]); return 0; }
199 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:07:18 ] [1] 授業単元:プログラミングT [2] 問題文(含コード&リンク): ・ポインタを説明せよ。(Wikipedia,Google等参照不可。また書籍の参照も不可。自分の文章で答えること) ・構造体を説明せよ。(同上) [3] 環境 [3.1] OS:NULL [3.2] コンパイラ名とバージョン:NULL [3.3] 言語:C [4] 期限:2007年06月25日(本日) [5] その他の制限:同じ文章を見つけた場合は成績評価「不可」とする。 よろしくお願いします。
200 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:08:14 ] そっか、配列の要素を一回ずつ交換してやればいいんだな。
201 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:09:29 ] >>199 同じ学校の学生が見てたら終わりじゃん
202 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:09:52 ] >>199 ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E4%BD%93 ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29 何も丸々言葉を写さなきゃおk。自分が理解して自分の言葉で書けばええやん。
203 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:10:22 ] OS NULLって何?
204 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:10:59 ] >>203 Oナニー Siてたら NULLヌルしちゃった、てへっ ♥
205 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:11:53 ] むずいね。
206 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:12:03 ] >>199 先生がこのスレを見ている可能性は考えなかったのか
207 名前:199 mailto:sage [2007/06/25(月) 21:16:56 ] >>206 先生、にちゃんねる大嫌いそうだったから、つい書いてしまいました。
208 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:19:10 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): Mission 1 で作成した「Projection1.java 」は「0 列目」と, 「引数で指定した列」をCSV 形式で出力しましたが, 今度は 「0 列目」と「引数で指定した列以外の全ての列」をCSV 形式で 取り出すプログラムに変更せよ. それを「Quiz6.java 」というファイルとして作成し, いつもの要領で,WebCT に添付ファイルとして提出. 「CSV.java 」または「Projection1.java 」をコピーして作 ると良い. クラス名は「Quiz6 」としてください [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Java? [3.3] 言語: C [4] 期限: 今日中に提出 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
209 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:20:17 ] class Quiz6{ public static void main(String[] args){ String[][] seiseki = { {"名前"," 国語"," 算数"," 英語"}, {"あべ","45","56","98"}, {"いいだ","70","45","30"}, {"いしかわ","32","70","75"}, {"おがわ","90","10","42"}, {"かご","85","32","80"}, {"かめい","75","92","40"}, {"こんの","30","30","100"}, {"たかはし","85","20","50"}, {"たなか","80","38","68"}, {"つじ","20","60","75"}, {"にいがき","82","42","75"}, {"ふじもと","18","70","78"}, {"みちしげ","60","46","88"}, {"やぐち","28","99","82"}, {"よしざわ","76","45","80"} }; int col = Integer.parseInt( args[0] ); quiz6(seiseki,col); }
210 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:26 ] public static void Quiz6(String[][] table,int col){ int i,j; for(i=0; i<table.length; i++){ System.out.println(table[i][0]+","+table[i][col]); } } public static void printTable(String[][] table){ int i,j; for(i=0; i<table.length; i++){ System.out.print(table[i][0]); for(j=1; j < table[i].length; j++){ if( ★指定した列でなければ ){ System.out.print(★); } } System.out.print( "\n" ); } } } ★の箇所がわかりません。お願いします。
211 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:26 ] >>208 スレ違い
212 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:35 ] >>208 スレタイ100回読み直せ ついでに>>1 も
213 名前:128 mailto:sage [2007/06/25(月) 21:28:26 ] >>157 さん、>>174 さんありがとうございました 参考にさせていただきます
214 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:29:58 ] こいつCとJAVAの区別ついてないんじゃないの?
215 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:31:07 ] なるほど > [3.2] コンパイラ名とバージョン: Java? > [3.3] 言語: C だものな
216 名前:デフォルトの名無しさん [2007/06/25(月) 21:32:59 ] [1] 授業単元:情報数理 [2] 問題文(含コード&リンク): 複素数型を扱うライブラリcomplex.cを後述するヘッダ ファイル complex.hに基づいて作ってください。 さらにmain.cというファイルで適当な計算のサンプル を作り#include “complex.h”として作成したライブラリ が適切に動作するか検証してください。 typedef struct complex complex; /* complex 型の宣言 */ struct complex { double real; /* 実部 */ double imag; /* 虚部 */ }; /* プロトタイプ宣言 */ complex cAdd(complex, complex); /* 複素数の加算 x+y */ complex cMult(complex, complex); /* 複素数の乗算 xy */ complex cDiv(complex, complex); /* 複素数の除算 x/y */ double cAbs(complex); /* 複素数の絶対値 |x| */ complex cSub(complex, complex); /* 複素数の減算 x-y */ void printComplex(complex); /* 複素数型データのstdoutへの表示出力 */ [3] 環境 [3.1] OS:WindowsXP [3.2] bcc32 [3.3] C [4] 期限:無期限
217 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:37:10 ] sageし忘れました・・・。
218 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:09:55 ] >>134 どうかお願いしますー
219 名前:デフォルトの名無しさん [2007/06/25(月) 22:12:28 ] >>216 加算と乗算と除算と表示。 あとは他の人に任せた。 complex cAdd(complex x, complex y){/* 複素数の加算 x+y */ complex ret; /*戻り値*/ ret.real = x.real + y.real; ret.imag = x.imag + y.imag; return(ret); } complex cMult(complex x, complex y){ /* 複素数の乗算 xy */ complex ret; /*戻り値*/ ret.real = (x.real * y.real) - (x.imag * y.imag); ret.imag = (x.real * y.imag) + (x.imag * y.real); return (ret); } complex cDiv(complex x, complex y){/* 複素数の除算 x/y */ complex ret;/*戻り値*/ ret.real = ((x.real * y.real) + (x.imag * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag)); ret.imag = ((x.imag * y.real) - (x.real * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag)); return (ret); } void printComplex(complex x){ /* 複素数型データのstdoutへの表示出力 */ printf("実部 = %lf, 虚部 = %lf", x.real, x.imag); }
220 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:19:12 ] >>218 何ゆえ>135は無視?
221 名前:デフォルトの名無しさん [2007/06/25(月) 22:21:23 ] 途中までってのも気持ち悪いから、全部やるか…。 >>216 math.hは使ってもいいの? 使っていいのなら平方根の計算が楽なんだけど…。
222 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:25:10 ] 216です。はい、math.hを用いていただいても大丈夫です。ありがとうございます。
223 名前:デフォルトの名無しさん [2007/06/25(月) 22:32:24 ] 絶対値と減算。 math.hを使っていいのなら、累乗もpow()で表現すればよかったか…。まあいいや、合ってれば。 気に入らない箇所があったら適当に直しておいて。 とりあえず、x(4,2)とy(-2,3)で検証した。 よく分からないけど、これは学部一回生レベル? double cAbs(complex x){ /* 複素数の絶対値 |x| */ return(sqrt((x.real)*(x.real) + (x.imag)*(x.imag))); } complex cSub(complex x, complex y){ /* 複素数の減算 x-y */ complex ret; /*戻り値*/ ret.real = x.real - y.real; ret.imag = x.imag - y.imag; return(ret); }
224 名前:デフォルトの名無しさん [2007/06/25(月) 22:46:01 ] あ、もう答えのソース出たんだ。 ソース書いてて、「公式のコピーをC言語として写してるだけでちょうどだるくなったところだった」
225 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:03:32 ] どうか>>175 お願いしますー。 グラフにおける深さ優先探索です。
226 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:22:48 ] >>225 問1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4395.txt dfs.exe -r のようにして起動すると再帰版 引数なしだとスタック版として動作する 見ればわかると思うが dfs_recurse()が再帰版の関数 dfs_stack()がスタック版の関数な 超適当に作ったから確認は自分でやってくれ
227 名前:デフォルトの名無しさん [2007/06/26(火) 01:48:12 ] [2] 問題文(含コード&リンク): 指定されたテキスト(data.txt)から1行ずつデータを取り込んでいき、 1行のデータが300文字以上の時はその行数と共にエラーメッセージを表示し終了。 また行頭に#が付いた行をコメント行として読み飛ばす。 [3] 言語: C [4] 期限:6.26 よろしくおねがいします
228 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 01:57:42 ] >>227 data.txt の中身の例を詳しく
229 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:07:37 ] >>226 ありがとうございました!
230 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:12:06 ] >>227 #include<stdio.h> #include<string.h> #define N 300 int main() { FILE *fp; int i = 0; char data[N+1]; fp = fopen("data.txt","r"); while(fgets(data,N+1,fp) != NULL) { i++; if(strlen(data) > N) { printf("行数:%d エラーメッセージ\n",i); break; } if(data[0] != '#') { ; } } return 0; } てきとー。質問がてきとーなんだから回答もてきとーでおkだよな?
231 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:14:28 ] if(strlen(data) > N) ↓ if(strlen(data) >= N) 300より上を300以上に変えたときにミスった
232 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 03:55:32 ] [1] プログラミング実習 [2] 問題文(含コード&リンク): 要素数nの整数型配列からk個の要素を選んで足し合わせ bを超えない範囲での最大数を求めるプログラムを書け ただしnは100程度、kは3程度、配列とbの値は適当に設定すること [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: BCC5.5 [3.3] 言語: C [4] 期限: 7月20日 [5] その他の制限:特にありません よろしくお願いします
233 名前:232 mailto:sage [2007/06/26(火) 03:57:41 ] すいません >>232 のkは95程度の間違いです
234 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 04:07:13 ] >>232 > 最大数 何の最大数?合計?範囲を超えないbの要素の個数k?
235 名前:232 mailto:sage [2007/06/26(火) 05:35:30 ] >>234 足し合わせた合計です。 kは自分で適当に設定してください。
236 名前:デフォルトの名無しさん [2007/06/26(火) 08:07:25 ] >>232 問題文はちゃんと書きましょう。 >要素数nの整数型配列からk個の要素を選んで足し合わせ >bを超えない範囲での最大数を求めるプログラムを書け >ただしnは100程度、kは3程度、配列とbの値は適当に設定すること 要素数を100として、その配列の中身は何? どうやって設定するの?rand()で良いの? >kは95程度の間違いです >kは自分で適当に設定してください。 せめてお前が設定しろよ
237 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:59:09 ] [1] 授業単元: プログラミング [2] 問題文: テキストファイルを読み込んで、"{"の数と"}"の数を数え、テキストファイルに出力するプログラムを作成しなさい. 課題実行においては以下の点に注意すること. プログラム名は「chkpair」とすること. ここで指定するデータ(ファイル),は存在するものとして仮定してよい. 読み込むテキストファイル名はプログラムを実行後にキーボードから指定する. ファイル名の長さは最大で(マクロ定数)FILENAME_MAX文字までとしてよい. 出力するテキストファイルはchkpair.outとする.すでにchkpair.outがあり書き込み権限がある場合は、出力を上書きすること. 入力ファイルによって結果が異なるので、必ずしも実行例と同じ出力になる必要はない. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C
238 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:01:19 ] [1] 授業単元: プログラミング [2] 問題文: 商品の在庫を管理するプログラムを作成する.在庫を扱う場合,在庫の平均単価(実数), 在庫数(整数)を管理する必要がある.本問題で作成するプログラムは,4回商品を入荷した時の平均在 庫単価と在庫総数を出力するものとする.商品入荷の時は,商品の単価と入荷数を順に入力していくものとする.このとき,平均単価と在庫数をひとつの構造体で管理するものとする. 変数を管理する構造体の名前をstock_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを, 平均単価はdouble型とし,名前をpriceとする 在庫数はint型とし,名前をquantityとする とする. 課題実行においては以下の点に注意すること. プログラム名は「stock」とすること. プログラム実行開始直後の在庫数は0とする [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C ./stock 100.0 10 200.0 10 300.0 10 555.0 30 377.5 60/*←出力*/
239 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:21:46 ] >>237 #include <stdio.h> #define FILENAME_MAX 128 // 環境によってはマズイ int main(void) { FILE *fpin, *fpout = fopen("chkpair.out", "w"); int ch, count1 = 0, count2 = 0; char filename[FILENAME_MAX], buf[128]; printf("filename for input : "); scanf("%s", filename); if((fpin = fopen(filename, "r")) == NULL) perror(filename), exit(1); while((ch = fgetc(fpin)) != EOF){ if(ch == '{') count1++; else if(ch == '}') count2++; } sprintf(buf, "{ : %d\n} : %d\n", count1, count2); fputs(buf, fpout); fclose(fpin); fclose(fpout); return 0; }
240 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:30:48 ] >>238 #include <stdio.h> typedef struct tag_stock_t{ double price; int quantity; }stock_t; int main(void) { stock_t x[4]; double price_sum = 0, price_ave; int i, num = 0; for(i = 0; i < 4; i++) scanf("%lf%d", &x[i].price, &x[i].quantity); for(i = 0; i < 4; i++){ price_sum += x[i].price*x[i].quantity; num += x[i].quantity; } price_ave = price_sum/num; printf("%.1f %d\n", price_ave, num); return 0; }
241 名前:227 [2007/06/26(火) 10:43:16 ] data.txtはこんなかんじです。 #正の数 133 535 846 167 335 #負の数 -647 -673 -384 -384 -373
242 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:47:29 ] >>239 > #define FILENAME_MAX 128 // 環境によってはマズイ うむ、かなりまずい。stdio.h にマクロ定義されていると思われるんで 敢えてそこで定義しない方が良いかも
243 名前:デフォルトの名無しさん [2007/06/26(火) 10:56:24 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 3d^2x/dt^2+dx/dt+2x=4 x(t=0)=0 dx/dt(t=0)=0 上記の微分方程式をルンゲークッタ法を用いて解け [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C言語 [4] 期限: ([2007年6月25日まで [5] その他の制限: なし お願いします
244 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:16:50 ] [1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): 年と月を入力すると、カレンダーを表示するプログラムの作成。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.3 [3.3] 言語: C [4] 期限: 6月27日 [5] その他の制限:入門者らしいつくりでお願いします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4399.c 此所まではやってみたのですが、実行したときに" 日 月 火 水 木 金 土" の部分しか表示されないので困っています。
245 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:41:21 ] >>244 曜日を得るのは標準関数を使えばいいのに…… それはさておき、 ・monthは1〜12なのに[0〜11]の配列をそのまま参照している。 ・「土」の後に改行していない。 のは問題かな。 後はもっと細かく見ないと判らん。
246 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:49:09 ] if(month==2&&(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) return(day[2]+1); これねぇ、本当は良くない。できればうるう年なら day[2] = 29; そうでないなら day[2]=28; にした方が良い。ここでは問題ないけど、何回か呼び出しをした場合 これだとうるう年に該当するたびに2月の日数が1ずつ加算されていくから。
247 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:01 ] 何を言ってるんだ
248 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:24 ] >>246 もしもーし、脳味噌入ってますか〜?
249 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:59:00 ] >>247 >>248 理解力のない馬鹿は視ねよw
250 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:00:26 ] >>245 ,246返信ありがとうございます。 指摘頂いた部分やその他修正したらカレンダーらしいものは表示が出るようになりました。 あとは1月2月3月らへんが多少ずれてるのですがこれはどう直したら良いでしょうか。
251 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:01:34 ] >249 頭が腐ってるのか目が腐ってるのか知らんが、もう一度よく見直せ。
252 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:03:51 ] >>249 マジで言ってるなら医者に行くか、取り敢えず寝てきたら? 100年くらい。 >>250 エスパーじゃないからどうずれるのか判らんし、そこがデバッグの楽しみだろう。 つーか、曜日の計算と改行する条件判断はあってる? youbiが1のときは何曜日のつもり?
253 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:05:23 ] やった!おまいら釣られてやんのっ(プ コードを見りゃ加算されるわけねーってバレバレじゃんw
254 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:08:09 ] いや、顔真っ赤にして後釣り宣言しなくていいから。
255 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:12:20 ] プププッ、ネタでボケて書いたことをマジに受けて茶化し、煽りレス入れている こんな時間にいる引きこもりニーツがきめぇ〜〜んだよ(プ 俺?俺は大学の研究室からやw
256 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:14:46 ] どこの脳内研究室なんだか。
257 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:15:18 ] 都内の某ランクSの大学ですが何か?
258 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:16:38 ] それじゃ、次のボケをお願いします。もうちょっと判り難いのがいいかな。
259 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:19:03 ] >257 本当にSランクなら、そもそも釣りなんて無駄なことはしない
260 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:20:19 ] >>244 を実行してみたけど、1日の表示がおかしい、曜日がきちっと算出されていない。 もうこんなんじゃ、月(付き)合ってらんね〜
261 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:21:39 ] >>259 Sランク級の釣りにビビッてんだろぉ?Sランク級の釣りにお前がチビッているのがわかるぜ?
262 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:25:59 ] ランクSAITEIのランクSだなw
263 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:28:03 ] ちっちっち、違うぜ?Sugoi、Super、SutekiのSだぜ?お前らとは質が違うよ、質が。
264 名前:デフォルトの名無しさん [2007/06/26(火) 12:31:44 ] [1] プログラミング基礎 [2] 以下のプログラムは,都道府県名(ローマ字)を入力すると,各都道府県の人口(人)と面積(km2)が列挙されたファイル prefectures.dat からデータを読み込み,指定した都道府県の人口,面積およびそれらの比である人口密度を表示するプログラムである. このプログラムを以下の例のように,人口,面積について 日本全体の総和に対する比率(百分率) も表示されるように書き換えよ. 実行例: nodabls?% ./a.out[Enter] chiba[Enter] Statistics of the Chiba Population = 6056159 (4.7 %) Area (km^2) = 5156.19 (1.4 %) Density (per km^2) = 1174.54 [3.1] Unix [3.2] gcc [3.3] c [4] 2007年6月29日(金)
265 名前:デフォルトの名無しさん [2007/06/26(火) 12:33:21 ] 続き プログラム /* density.c: calculate population density for the given prefecture */ #include <stdio.h> #include <strings.h> int main(void) { char name[20], query[20]; int pop; double area, den; FILE *fp; fp = fopen("prefectures.dat", "r"); /* ファイルオープン */ if (fp == NULL) { /* オープンに失敗? */ fprintf(stderr, "Can't open file!\n"); return (-1); } scanf("%s", query); /* 都道府県名を入力 */ den = -1.0; /* 1行分の情報を読み込みつつループをファイル末尾まで繰り返し */ while (fscanf(fp, "%s%d%lf", name, &pop, &area) != EOF) { if (strcasecmp(name, query) == 0) { /* 都道府県名が一致? */ den = pop / area; /* 人口密度 = 人口/面積 */ printf("Statistics of the %s\n", name); printf("Population = %10d\n", pop); printf("Area (km^2) = %10.2f\n", area); printf("Density (per km^2) = %10.2f\n", den); break; /* ループから抜ける */
266 名前:デフォルトの名無しさん [2007/06/26(火) 12:35:32 ] } } fclose(fp); /* ファイルクローズ */ if (den < 0.0) { /* 都道府県名が正しくない? */ fprintf(stderr, "No such prefecture (%s)!\n", query); return (-1); } return (0); }
267 名前:デフォルトの名無しさん [2007/06/26(火) 12:38:46 ] 続き prefectures.dat ファイル Hokkaido 5627424 83453.04 Aomori 1436628 9606.33 Iwate 1385037 15278.40 Miyagi 2359991 7285.07 Akita 1145471 11612.11 Yamagata 1216116 9323.34 Fukushima 2091223 13782.48 Ibaraki 2975023 6095.58 Tochigi 2016452 6408.28 Gumma 2024044 6363.16 Saitama 7053689 3797.30 Chiba 6056159 5156.19 Tokyo 12570904 2186.90 Kanagawa 8790900 2415.41 Niigata 2431396 12582.37 Toyama 1111602 4247.22 Ishikawa 1173994 4185.22 Fukui 821589 4188.75 Yamanashi 884531 4465.37 Nagano 2196012 13585.22 Gifu 2107293 10598.18 Shizuoka 3792457 7779.46 Aichi 7254432 5155.84 Mie 1867166 5776.40 Shiga 1380343 4017.36
268 名前:デフォルトの名無しさん [2007/06/26(火) 12:40:30 ] Kyoto 2647523 4612.94 Osaka 8817010 1892.86 Hyogo 5590381 8392.03 Nara 1421367 3691.09 Wakayama 1036061 4725.55 Tottori 606947 3507.17 Shimane 742135 6707.29 Okayama 1957056 7112.13 Hiroshima 2876762 8476.95 Yamaguchi 1492575 6110.45 Tokushima 809974 4145.10 Kagawa 1012261 1875.88 Ehime 1467824 5676.22 Kochi 796211 7104.66 Fukuoka 5049126 4971.01 Saga 866402 2439.23 Nagasaki 1478630 4092.44 Kumamoto 1842140 7403.68 Oita 1209587 6337.97 Miyazaki 1152993 7734.40 Kagoshima 1753144 9186.71 Okinawa 1360830 2271.30 長くなってすみません。よろしくお願いします。
269 名前:デフォルトの名無しさん [2007/06/26(火) 12:44:11 ] 次のjavaのプログラムをcに直してください public class JobShop_EDD{ static int Job=3; static int Machine=2; static int K=30; static int [] duedate={0,7,9,13,14,20}; static int [] [] process={{},{0,3,3,2,},{0,2,3,2},{0,2,3,3},{0,3,2,3},{0,2,2,2}}; static int [] [] route={{},{0,1,2,3},{0,2,1,3},{0,3,1,2},{0,3,2,1},{0,2,1,3}}; static int [] weight={0,2,2,2,2,2};
270 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:45:02 ] >>252 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4401.c 直してみたものですが。 月曜じゃないんですか?人伝えに聞いたので曖昧ですが
271 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:49:23 ] >>270 よくわからんから俺流ツェラーの公式を使ってやんよ int youbi(int year,int month,int day) { if(month<=2) { year--; month+=12; } return ( year + year/4 - year/100 + year/400 + (13*month+8)/5 + day )%7; }
272 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 13:04:56 ] >>239 >>240 ありがとうございました。またなにかありましたらよろしくおねがいします。
273 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 14:56:55 ] >>264 問題が長い時は、ロダにtxtでうpしてリンク貼る 長いソースは拡張子を変えずにロダにうp 複数のレスに別けられると見辛い >>269 メソッドが無くて、変数だけか。それを構造体にすればいいのか?
274 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:37:20 ] day[2]じゃねーだろ
275 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 15:57:25 ] >>264 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4402.txt
276 名前:デフォルトの名無しさん [2007/06/26(火) 16:00:47 ] 264をよろしくお願いします。
277 名前:275 mailto:sage [2007/06/26(火) 16:05:51 ] >>264 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4403.txt
278 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:07:10 ] >>271 有り難うございます。この部分はすり替えておきます。
279 名前:デフォルトの名無しさん [2007/06/26(火) 16:11:48 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): コマンドラインで指定した二つのファイルを交換しろ [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ Compiler 5.5 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4404.txt なんかうまく動きません 助けてください
280 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:16:23 ] 一時ファイル使っちゃ駄目なの?
281 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:21:31 ] while(fputc(*p,fp2) != EOF) ; 多分、*p++なんだろうな
282 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:21:49 ] >>232 題意に沿ってるかワカランが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4405.txt
283 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:22:45 ] 訂正 while(fputc(*p,fp2) != EOF) p++; のがいいか
284 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:24:07 ] >>280 どうやって使うんですか? ファイル入ったばかりでどうしていいのかさっぱりです・・・ >>281 ミスです・・・どうもです
285 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:30:42 ] w+ → r+
286 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:32:01 ] >>279 こんなモンでいいと思うよ #include <stdio.h> int main(int argc, char **argv) { char *tmp; /* 引数の制限 */ if (argc != 3) { printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n"); return 1; } tmp = tmpnam(0); if (!rename(argv[1], tmp)) if (!rename(argv[2], argv[1])) if (!rename(tmp, argv[2])) return 0; perror("rename"); return 1; }
287 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:45:04 ] >>286 名前じゃなくて中身を交換するようにしたいんです できれば>>279 の間違ってる部分を修正してもらえるとありがたいです
288 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:56:08 ] 修正は面倒臭いんだよな 一から作った方がよほど早い
289 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:59:28 ] そこをなんとか・・・
290 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:11:27 ] 名前の交換も中身の交換も結果としては同じなんだから、簡単なほうがいいと思うけど。
291 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:16:30 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):キーボードから2つのファイル名を指定し、1つめのファイルの末尾に2つめのファイルの内容を追加するプログラムを作成せよ. ファイル名は最大15文字とする. ファイルの1行の最大文字数は31文字とする. [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限:
292 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:23:14 ] >>279 ほれ #include <stdio.h> int copy(char *from, char *to) { FILE *fi, *fo; int c; if ((fi = fopen(from, "rb")) == NULL) return perror(from), 0; if ((fo = fopen(to, "wb")) == NULL) return perror(to), fclose(fi), 0; while ((c = getc(fi)) != EOF) putc(c, fo); return fclose(fi), fclose(fo), 1; } int main(int argc, char **argv) { char *tmp; int result; /* 引数の制限 */ if (argc != 3) { printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n"); return 1; } tmp = tmpnam(0); result = (copy(argv[1], tmp) && copy(argv[2], argv[1]) && copy(tmp, argv[2])); remove(tmp); return !result; }
293 名前:286=292 mailto:sage [2007/06/26(火) 17:34:21 ] >>279 モード"r+"で2つのファイル開いて一時ファイルを使わずに内容を交換しようという 志自体は面白いが、読み書きのたびにftell()/fseek()の類で読み書き位置を 移動する必要があるし、ファイルサイズが異なるファイルを交換する場合、 最後にファイルサイズを変更する(切り詰める)手段が必要だ。 大抵のシステムにはそうした手段が用意されているが、C標準には存在しない。 まあおとなしく>>286 か>>292 のコードを使っとけ。
294 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:34:42 ] >>291 ほれ。 制約の意味がわからんのだが、ファイル名の最大長とか1行の最大長とかはなんかの縛りなのか? #include <stdio.h> #ifndef EOF #define EOF -1 #endif int main(int argc, char **argv){ char c; FILE *fp1 = NULL, *fp2 = NULL; if( (fp1 = fopen(argv[1], "ab")) == NULL || (fp2 = fopen(argv[2], "rb")) == NULL) return -1; fseek(fp1, 0, SEEK_END); while((c = fgetc(fp2)) != EOF){ fputc(c, fp1); } fclose(fp1); fclose(fp2); return 0; }
295 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:37:02 ] >>293 デカい方のファイルに合わせてバッファ確保して中身入れ替えりゃいいんじゃねぇの
296 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:39:36 ] >>295 ファイルを計4回開く気があるのならそれでいいね。 最初に"rb"で開いて一気読みして次に"wb"ね。 質問者の意図とは異なると思うが。
297 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:44:28 ] なんで4回も開く必要がある r+とfseek()使え
298 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:46:35 ] >>297 だから、それだとファイルを切り詰められないでしょ
299 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:14:18 ] freopenってのがあったような
300 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:23:30 ] >>291 copy /B file1+file2
301 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:25:29 ] >>294 さん テストの過去問題なんで、テストの問題のうちなんだと思います。
302 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:54:38 ] >>301 なるほど、指定のテキストファイル読めとかそーゆう縛りね んじゃ要求通りだとこんな感じかね? #include <stdio.h> #ifndef EOF #define EOF -1 #endif #define LINE_MAX 32 #define FILENAME_MAXLENGTH 15 int main(int argc, char** argv){ char buf[LINE_MAX]; FILE *fp1 = NULL, *fp2 = NULL; if( strlen(argv[1]) > FILENAME_MAXLENGTH || strlen(argv[2]) > FILENAME_MAXLENGTH) return -2; if( (fp2 = fopen(argv[2], "rb")) == NULL || (fp1 = fopen(argv[1], "ab")) == NULL) return -1; while(fgets(buf, LINE_MAX, fp2) != NULL) // 1行が32文字を超えると切り捨てられるけど fputs(buf, fp1); fclose(fp1); fclose(fp2); return 0; }
303 名前:デフォルトの名無しさん [2007/06/26(火) 19:39:19 ] [1] 授業単元: プロC [2] 問題文(含コード&リンク): 1.まず、 pwd を実行し、成功すれば、 ls を実行する。 ただし、コマンドライン引数はすべてls にそのまま渡すものとする。 2.オプション -c があれば、 date を実行し、その後、 cal を実行する。 オプションを指定しなければ、 date だけを実行する。 ただし、オプション -z timezone があれば、 環境変数TZの値をtimezoneに設定して、各コマンドを実行する。 3.findコマンドを呼び出して、指定されたディレクトリ (複数可。指定がない場合は、カレントディレクトリ) 以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。 [3] 環境 [3.1] OS:Vine Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週まで [5] その他の制限:よろしくお願いします。
304 名前:デフォルトの名無しさん [2007/06/26(火) 19:43:44 ] ↑ <サンプルプログラム1> www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager1.c <サンプルプログラム2> www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager2.c
305 名前:デフォルトの名無しさん [2007/06/26(火) 19:45:37 ] ↑ 書き忘れです(汗) pwdを実行し、成功すれば、その後、ls -lを実行するプログラムです
306 名前:デフォルトの名無しさん [2007/06/26(火) 19:56:11 ] >>303-305 日本語でおk
307 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:19:36 ] [1] 授業単元: プログラミング実習 [2] 問題文(含コード&リンク): 学生のデータベースを作成する。 まずは学生の名前と大学名、学科、生年月日(年はintで月日はshortで定義する)、趣味で構成される構造体を作る。 これらは全て実際には存在するような名前にしないこと。 初めに学生5人が与えられている。->kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4408.txt プログラムは、0から3のうちいずれかを入力し0が入力されるまでプログラムを繰り返す。 0を入力したときプログラムを終了する。 1を入力したときすべての学生をバイナリモードでテキストファイルに出力し、画面上にも出力する。 2を入力したとき何番目かの学生(1と入力したら1番目という風に)を画面上に出力する。 3を入力したとき新しい学生を追加する(名前,大学名,生年月日,趣味)。 またメモリーはでいつでも1人分の学生のデータしか保持しない。 [3] 環境 [3.1] OS: WindowsXP [3.2] gcc [3.3] 言語: C [4] 期限: 6/27 [5] その他の制限: 特になし よろしくお願いします。
308 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:36:36 ] [1] 授業単元:プログラム技術 [2] 問題文(含コード&リンク): 1.正整数n を入力し,2 〜 n の範囲にある素数およびその個数を求めるプログラムを作成 しなさい. 2.年(西暦),月,日を入力したとき,入力した年月日の曜日を出力するプログラムを作成 しなさい. 3.下の表のような時間を入力したとき,その総時間を求めるプログラムを作成しなさ い.なお,表のデータは例なので,汎用的に扱えるように,数と 時間は実行時に任意の数を入力すること. 例 1 動画50 分08 秒 2 動画29 分38 秒 3 動画15 分49 秒 4 動画22 分50 秒 5 動画11 分02 秒 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限 来週の火曜辺りまで [5] その他の制限 なし よろしくお願いします
309 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:57:36 ] >>302 さんありがとうございました。テストできるようにがんばります。
310 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:59:31 ] >>308 3は総時間をどう表示すればいい? 合計○○時間△△分□□秒でおk?
311 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:03:40 ] あと3の時間は どう入力させればいいんだ? >>310 における○○、△△、□□をそれぞれ入力してもらう形? それとも、「* 動画** 分** 秒」を全部入力させる形?
312 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:24:41 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 2つのベクトル要素の値をキーボードから読み込み、その内積を計算するプログラムを 作りなさい。要素の値はdouble型であるものとする。 ・ベクトルの要素数の指定はオブジェクト形式マクロ(#define指令)で行う(値は6とする) ・ベクトルの要素の値はキーボードから読み込む ・データの読み込みや内積の計算などの繰返し部分はfor文で行う ・結果は、読み込んだ各ベクトルの値を横ベクトルとして表示した後、その次の行に出力する [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 6月27日まで 全くわかりません 誰か助けてください
313 名前:308 mailto:sage [2007/06/26(火) 22:01:13 ] >>311 ○○、△△、□□をそれぞれ入力してもらう形です。 総時間は△△分□□秒でお願いします。 ○○時間△△分□□秒でも問題はないとは思いますが・・・・
314 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:14:13 ] >>312 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4409.txt
315 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:16:32 ] あー できてから気づいたけど、 ELEMENTを可変にするならprintfでベクトルを出力してるところは もっとちゃんと書けばよかったな カッコとかが汚いと思ったからこんな風に書いたけど
316 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:20:48 ] >>313 まあ時間あるみたいやし ゆっくりやらせてもらうわ 他の人でやったるって人が出てきたら俺にかまわずやってください
317 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:29:24 ] >>314 ありがとうございました ついでに多次元配列をつかったらどんなプログラムができるんですか?
318 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:31:20 ] 見た目がちょっとよくなるだけで プログラム自体はほとんど変化しないからあんまり気にしない方がいい
319 名前:デフォルトの名無しさん [2007/06/26(火) 22:34:25 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): same.cをファイル入出力対応版に変更しなさい。 same.c →kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4410.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 27日正午まで [5] その他の制限: 特にナシ 実行例 [home@***~/home]% cat filesame.in ABC ABC [home@***~/home]% ./filesame filename: filesame.in [home@***~/home]% cat filesame.out yes [home@***~/home]% よろしくお願いします。
320 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:55:27 ] [1] 授業単元: C言語 [2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4412.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限: 27日まで [5] その他の制限:再帰法まで習った よろしくお願いします。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:22:46 ] [1] 授業単元: C言語 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4413.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C [4] 期限: 27日まで よろしくお願いします
322 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:45:03 ] >>306 おいっ、日本語が読めない在日が何こんなところで日本人の相手をしてんだ? とっとと祖国へ帰れよ。お前みたいな役立たずはここには必要はない。
323 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:47:07 ] このスレから役立たずを取り除いたら、何が残るんだっていうんだ
324 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:48:55 ] >>321 キーボードから読み込む方法? それって代入に含まれるんじゃないか? とりあえず ・初期化 int array[] = {0, 1, 2, 3, 4, 5}; 要素数を指定しなくても初期化子の数で勝手に合わせてくれる。 固定的なデータを保持する用途とかが一般的なんじゃないかな。 ・代入 array[0] = 0; 変動的で、同じような系統のデータをまとめて保持するのに使うのが一般的。 ランダムアクセスには強いが、データの追加と削除に弱い。 まぁconstでもつけなきゃ初期化した配列も普通に代入できるから結局あんま差はない希ガス。 こんなんでいいの?
325 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:49:38 ] >>320 目に付いた(2)だけ #include <stdio.h> double pow_f(double x, int p) { double f; if(p==0) return 1; f = pow_f(x, p-1) * (x-p+1); return f; } int main(void) { double x; int p; scanf("%lf %d",&x ,&p); printf("%.1f",pow_f(x, p)); return 0; }
326 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:50:35 ] >>323 宿題にスマートに答える役立つ人材
327 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:52:59 ] 役立たずがいなくなるということは宿題丸投げ自体が無くなるということだから・・・ 人がいるのかいないのか分からないままでdat落ちしてしまうね
328 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:54:30 ] >>327 出題者はスレの維持に役立っていますので 役立たずではありません
329 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:55:57 ] もともとそういう趣旨のスレだしな
330 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:02:10 ] >>320 全部再起なんか使わなくてもできる 非常に悪い再起の例 再起は必要以上にスタック喰い潰すから使わないで済むなら極力使わないほうがいい って、なんの答えにもなっとらんな
331 名前:デフォルトの名無しさん [2007/06/27(水) 00:03:30 ] 綺麗なソースを作ろうと思い、セオリーを守ってる(グローバル変数を極力使わないようにしてる・・・etc)が 実に汚いソースになる。 汚いと分かっていながらどこをどの様に修正すれば良いのか皆目検討つかないから困る。 助けて・・・。
332 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:08:28 ] >>324 ありがとう できればもう少し詳しく説明して欲しいです
333 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:17:42 ] >>331 広域変数は悪じゃない staticで外部モジュールから参照できないようにするとか きっちり管理さえすれば忌み嫌うものではない むしろ広域変数を無理に避けようとして余計マズい設計になることの方が、本来避けるべき >>332 これ以上詳しく説明しろといわれてもな Cで使ってる以上は、constにさえ気をつければ初期化も代入もそんな大層な差はない C++だとまた話が変わってくるんだけど 具体例見るのが一番手っ取り早いから、いろいろ調べてみ
334 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:18:49 ] >>308 1と2をとりあえず先に kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c
335 名前:332 mailto:sage [2007/06/27(水) 00:26:28 ] >>333 わかりました 色々ありがとうございました!
336 名前:331 [2007/06/27(水) 00:28:34 ] >>333 うん。 今日、指摘された。 staticのスコープは定義された箇所のみが有効範囲だよね? でもアドレス渡ししたらスコープ外の場所でも値を書き換えたり出来る? 多分、出来たとしてもやっちゃ駄目なんだろうけど・・・。
337 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:38:00 ] どうでもよいが>>331 よ。それは宿題の話なのか。 C言語に関する一般的な相談事ならスレ違いだぞよ。
338 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:41:11 ] >>336 そう、staticは参照の範囲を同一のファイル内だけに限定できる。 そして、指摘の通り int g_data = 0; // 広域変数 int *getGlobal(void) { return &g_data; } みたいなのも、手法としてはある。 利点は、広域変数をモジュールの中に置ける事で、Cでオブジェクト指向もどきな設計ができること。 反面、C++のgetterと違ってポインタを取得できてしまうから、それを通じて外から値を書き換えてしまうこともできる。 でもgotoと一緒で使いどころさえ間違えなければ大丈夫。
339 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:52:26 ] >>320 再帰で(3) int arr_max_pos(int arr[], int n){return n?arr[n-1]>arr[arr_max_pos(arr,n-1)]?n-1:arr_max_pos(arr,n-1):0;}
340 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:57:16 ] >>320 (1) int div_pow(int n,int p){return n%p?0:div_pow(n/p,p)+1;} int div_quo(int n,int p){return n%p?n:div_quo(n/p,p);}
341 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:59:12 ] >>308 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4416.c
342 名前:デフォルトの名無しさん [2007/06/27(水) 06:44:44 ] 関数内で宣言したstatic変数(下の例ではa__)を自在にいじりたいなら… 下品だけどねw static int a; int hoge(){ static int a__ = 123; a = a__; return(0); } int getglobal(){ a+=10; return(a); } int main(){ hoge(); printf("%d", getglobal()); return(0); }
343 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 06:50:26 ] 意味分らん
344 名前:デフォルトの名無しさん [2007/06/27(水) 07:25:54 ] [1] 授業単元:数値計算 [2] 問題文(含コード&リンク): 以下の式のおいて、刻み幅が0.2のときの解析解をオイラー法で求めよ。 y(0)=0 y'(0)=0 y'=z z'=-z-2y+cosx [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc-2.95 [3.3] 言語: C、C++どちらでも良い [4] 期限:6/27 [5] その他の制限: お手上げ状態です。よろしくお願いします。
345 名前:デフォルトの名無しさん [2007/06/27(水) 08:43:25 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 多次元配列 次の表は今年の全日本大学野球選手権における 早稲田大学の試合結果である。 2回戦 1 2 3 4 5 6 7 8 9 早稲田大 0 0 1 0 1 0 0 0 0 九州国際大 0 0 0 0 0 0 0 0 1 準々決勝 早稲田大 0 5 4 0 0 0 0 0 7 関西国際大 0 0 0 0 3 0 0 0 0 準決勝 創価大 1 0 0 0 0 0 0 0 0 早稲田大 6 0 0 1 0 1 0 2 0 決勝 早稲田大 1 0 0 2 0 0 1 0 0 東海大 0 0 0 0 0 1 0 0 0 それぞれの試合について各回の得点と失点(表裏ではないので注意)を 2×9の2次元配列に格納するものとする。 試合分のデータがあるので、4×2×9の3次元配列scoreを用意して、得失点を配列の宣言と同時に初期値として格納しなさい。 また以下の内容を計算して出力しなさい。 4試合の平均得点と平均失点 各回ごと(1から9回)の4試合の平均得点と平均失点 多次元配列の要素を参照するには‥多重ループを使う [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限:来週まで [5] その他の制限: 特になし お願いします
346 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:11:52 ] クソ簡単やないか なめとんか
347 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:15:34 ] >>344 y' = z とう条件は不要なんじゃないかと思うが #include <stdio.h> #include <math.h> #define N 100 double f(double y, double z) { return -z - 2.0 * y + cos(y); } int main(void) { double y[N], z[N], dx = 0.2; int i; y[0] = z[0] = 0.0; for (i = 0; i < N; i++) { y[i] = y[0] + i * dx; z[i + 1] = z[i] + dx * f(y[i], z[i]); printf("y = %f, z = %f\n", y[i], z[i]); } return 0; }
348 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:20:12 ] >>347 師匠。
349 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:23:34 ] やべえ double y[N], z[N], dx = 0.2; を double y[N + 1], z[N + 1], dx = 0.2; に直しておいてくれ。 あとf()のcos(y)は題意ではcos(x)になっているが間違いだよな?
350 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:24:42 ] 問題には cosx ってあるが cos y で宜しいんかな?
351 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:27:55 ] cos x だったとしたら解けん。
352 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:40:57 ] >>319 #include <stdio.h> int mycmp(char *m1 ,char *m2) { while (*m1 != '\0') if(*m1++ != *m2++) return 0; if(*m1 == *m2) return 1; } int main(int argc, char *argv[]) { char m1[256], m2[256]; FILE *fp; fp = fopen(argv[1], "r"); fgets(m1,256,fp); fgets(m2,256,fp); fclose(fp); if(mycmp(m1, m2)) puts("yes"); else puts("no"); return 0; } エラー処理はしてないにょ。動かしてもいないけど、これ以上は自分で。 ちゃんと授業を受けるか、さもなくばIT関連の就職先はあきらめろ。
353 名前:デフォルトの名無しさん [2007/06/27(水) 11:36:26 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 「在庫問題」 ある倉庫を考える。この倉庫は営業開始時において、毎日Sトンの初期在庫量を有する。1日の注文量rが確率的に発生するとき、営業終了時間の最終在庫量(S>rの場合)、不足量(S<rの場合)とする。 注文量rが正規分布N(100,20^2);すなわち平均100、標準偏差20の正規分布に従う乱数と仮定する。 平均100、標準偏差20の正規分布に従う乱数は以下で求められる。 0以上、1以下の一様実数乱数をUiとする。それを次式に代入することによって、標準正規乱数Xとなる。 X=U1+U2+……U12-6 Xを次式に代入することによってY(標準偏差20の正規分布に従う乱数)となる。 Y=20X+100 維持費:1トンにつき120円(最終在庫量に対して) 品切損失:1トンにつき180円(不足量に対して) 補充経費:1回につき15000円(補充量に依存せず) 総経費:維持費+品切損失+補充経費 (1)補充発注に関して、自分の採用した決定方法を述べよ。 これは、 2日目以降の初期在庫量が毎回200トンになるようにする。 例えば、第一日目の初期在庫量が125トンだから、その日の注文量が100だとすると125−100=25で最終在庫量25トンだから、その日の 補充量は200−25=175で175トン発注するというふうにする。 (2)そのような補充を行い、1000日間の、初期在庫量、最終在庫量、補充量、総経費について、1日あたりの平均値を求めよ。 なお、第一日目の初期在庫量を125トンとする。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland [3.3] 言語: どちらでも可 [4] 期限: 2007年06月28日12:00まで [5] その他の制限: なし 度々すいませんm(__)m
354 名前:デフォルトの名無しさん [2007/06/27(水) 13:07:42 ] [1] 授業単元:プロC [2] 問題文(含コード&リンク): 1.まず、 pwd を実行し、成功すれば、 ls を実行する。 ただし、コマンドライン引数はすべてls にそのまま渡すものとする。 2.オプション -c があれば、 date を実行し、その後、 cal を実行する。 オプションを指定しなければ、 date だけを実行する。 ただし、オプション -z timezone があれば、 環境変数TZの値をtimezoneに設定して、各コマンドを実行する。 3.findコマンドを呼び出して、指定されたディレクトリ (複数可。指定がない場合は、カレントディレクトリ) 以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。 ↓サンプルプログラム pwdを実行し、成功すれば、その後、ls -lを実行するプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4420.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4421.c [3] 環境 [3.1] OS:Vine Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週まで [5] その他の制限:なし よろしくお願いします。
355 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 13:35:02 ] [1] 授業単元:アルゴリズム論 [2] 問題文(含コード&リンク): インサートソートに関する問題 左からつめる方式の昇順アルゴリズムである次のソートプログラムを、右からつめる 降順に書き直せ。 ソートプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4422.txt inp1.datというファイルには、20個の2桁の整数が入っているものとする。 [3] 環境 [3.1] OS:Windows XP [3.3] 言語:C言語 [4] 期限:6月28日(木)まで お願いします
356 名前:バケツ mailto:age [2007/06/27(水) 13:50:59 ] [1] 授業単元:C言語演習2 [2] 問題文(含コード&リンク): バケツ法-並び替え(詳細は後述) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限: できれば早いほうがいいです。 [5] その他の制限: 特にありません
357 名前:バケツ mailto:age [2007/06/27(水) 13:53:03 ] aka ao kuro これら三つのデータをアルファベット順に並び替える。 この場合、akaの後ろには半角スペースが1つあり、 aoの場合は2つあると考えて並び替える。 1 2 3 4 ao ao aka ao aka aka ao aka kuro kuro kuro kuro 優先順位としては スペース>アルファベットです。
358 名前:バケツ mailto:age [2007/06/27(水) 13:55:07 ] 1は語尾の文字列に焦点を合わせ、 2は前から三番目、3は前から二番目、4は頭文字に焦点を合わせて並び替える。 説明すると、1ではaoはスペース、akaはスペース、kuroはoなので 上記のような順になる。 このようにして最終結果(頭文字の並び替え)がでるまでこの作業を繰り返し、 出力する。 説明不足かもしれませんが、よろしくおねがいします katori nakata murata hanada sakata tanaka を配列の要素として作成してください。 scanfを用いて作成してもらってもかまいません。
359 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 14:00:26 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 次のプログラムをユーザー関数を用いて、階層化せよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4423.txt [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:c言語 [4] 期限:6月28日(木) リンク先のプログラムは一つ前の問題を自分で書いたものですが、 コンパイルできることを確認しています。 よろしくお願いします。
360 名前:TKO48 [2007/06/27(水) 14:20:23 ] ゲーミング 今回からあつかう問題は営業時間から翌日の営業時間の間の補充量を 可変とし、補充量決定方法をけんとうする。 もっとも単純な考え方として@営業終了時の最終在庫量A経費の合計 から翌日の初期在庫量(補充量)を決定 ただし、今回は補充発注1回ごと(補充量によらない)に一定の経費を 支払うものとする 発注する経費は以下のとうりである 維持費:1tにつき120円(最終在庫量にたいして) 品切れ損失:1tにつき180円(不足量にたいして) 補充量:1回につき15.000円(補充量によらない) 課題 注文量が正規分布N(100,20^2);すなわち平均100,標準偏差20 の正規分布に従う乱数と仮定し、毎の補充量を入力することで1000日間 の経過を調べる。 (1)補充発注に関して自分の採用した決定方法を述べよ。 (2)そのような補充を行い、初期在庫量、最終在庫量、補 充量、総経費について、1日あたりの平均値を求めよ。なお、第1日の 初期在庫を125tとする。 お願いします。。。(´・ω・`)
361 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:03:15 ] >>353 #include <stdio.h> #include <stdlib.h> #include <time.h> int xrand() { double i, x = 0; for (i = 1; i <= 12; i++) x += (double)rand() / RAND_MAX; return 20 * (x - 6) + 100; } int main(void) { double fstock_sum = 0, estock_sum = 0, supply_sum = 0, cost_sum = 0; int i, stock = 125, supply; srand(time(0)); for (i = 0; i < 1000; i++) { fstock_sum += stock; stock -= xrand(); cost_sum += (stock > 0 ? 120 : 180) * abs(stock) + 15000; if (stock < 0) stock = 0; estock_sum += stock; supply = (stock > 200 ? 0 : 200 - stock); supply_sum += supply; stock += supply; } printf("平均初期在庫: %g\n", fstock_sum / 1000); printf("平均最終在庫: %g\n", estock_sum / 1000); printf("平均補充量 : %g\n", supply_sum / 1000); printf("平均総経費 : %g\n", cost_sum / 1000); return 0; }
362 名前:308 mailto:sage [2007/06/27(水) 16:00:14 ] >>341 ありがとうございます。危うく最後の動画のコメントの奴そのままで出しそうでした。
363 名前:デフォルトの名無しさん [2007/06/27(水) 16:05:52 ] >>353 >>361 ありがとうございます!m(__)m 本当に悪いんですが、補充発注を1日置きごとすることは出来ませんか? すいません… 1日目にしたら、次は3日目、次は5日目というふうに
364 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:07:05 ] >>360 >>353 と同じ問題だな。 >>353 は(1)について、補充方法を自分で書いている。その場合の解が>>361 ね。 君はどうしたいのかな。それも回答者に決めて欲しいの?
365 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:13:15 ] >>363 - int i, stock = 125, supply; + int i, stock = 125, supply, f = 0; ----------------------------------------- estock_sum += stock; + if (!f) { supply = (stock > 200 ? 0 : 200 - stock); supply_sum += supply; stock += supply; + } + f = !f; }
366 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:25:30 ] これの戦略を無駄に考えてみたけど、 一切補充しないという、 ずっと品切れ作戦が実装の楽さの割りに結構いい感じという結論が出た。
367 名前:デフォルトの名無しさん [2007/06/27(水) 16:43:31 ] >>365 早速ありがとうございます! 助かりました
368 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:03:56 ] >>367 すまん。補充しない日も補充費を計上してたので修正。 >>366 のレスで気づいたw kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4426.txt
369 名前:デフォルトの名無しさん [2007/06/27(水) 17:12:05 ] >>368 ありがとうございます! こちらこそスイマセンでした
370 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:12:47 ] さらにすまん。 - cost_sum += 15000; + if (supply > 0) cost_sum += 15000; 吊ってくる。
371 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:20:38 ] 二分木を表示するプログラムについて教えてください。 なんらかの木を作ったあと、その木へのポインタを引数にして 木を表示したいと思っています。単純にデータだけを、行きがけ順などで 表示するのではなくぱっと見で木とわかるようなものがいいです。 よろしくお願いいたします。
372 名前:デフォルトの名無しさん [2007/06/27(水) 17:31:29 ] >>370 いえいえ、とんでもないです! 頼んでいるのは私の方なんですから
373 名前:デフォルトの名無しさん [2007/06/27(水) 18:45:07 ] fmod()を使って10進数を2進数に変えたいんです。C++ なかなかうまくいかなくて
374 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:58:52 ] >>371 graphviz用の入力ファイル(ただのテキスト)を作るのが楽かも ↓みたいな感じで でも、宿題だとそれじゃ不可かな #include <stdio.h> typedef struct node { char *label; struct node *left, *right; } node; void tprint(node *n) { if (!n) return; if (n->left) printf("%s -> %s;\n", n->label, n->left->label); if (n->right) printf("%s -> %s;\n", n->label, n->right->label); tprint(n->left); tprint(n->right); } int main() { struct node tree[] = { { "a", &tree[1], &tree[2] }, { "b", &tree[3], &tree[4] }, { "c", &tree[5], &tree[6] }, { "d", &tree[7], 0 }, { "e", 0, &tree[8] }, { "f", 0, 0 }, { "g", 0, 0 }, { "h", 0, 0 }, { "i", 0, 0 } }; printf("digraph test {\n"); tprint(&tree[0]); printf("}\n"); }
375 名前:デフォルトの名無しさん [2007/06/27(水) 19:01:31 ] あの・・・ >>354 をお願いできますか?
376 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:05:51 ] ヾヽ'::::::::::::::::::::::::::'', / 時 .あ ま ヽ ヾゝ:::::::::::::::::::::::::::::{ | 間 .わ だ | ヽ::r----―‐;:::::| | じ て | ィ:f_、 、_,..,ヽrリ .| ゃ る | L|` "' ' " ´bノ | な よ | ', 、,.. ,イ ヽ い う / _ト, ‐;:- / トr-、_ \ な / , __. ィイ´ |:|: ヽ-- '.: 〃 `i,r-- 、_  ̄ ̄ 〃/ '" !:! |:| :、 . .: 〃 i // ` ヽヾ / / |:| ヾ,、` ´// ヽ !:! '、` ! |:| // ヾ==' ' i i' |:| ', | ...:// l / __ , |:|::.. | とニとヾ_-‐' ∨ i l ' l |< 天 ヾ,-、_: : : .ヽ と二ヽ` ヽ、_::{:! l l ! |' 夂__ -'_,ド ヽ、_}-、_:ヽ
377 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:08:37 ] >>373 なんでfmod()使わないといけないの?
378 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:04:00 ] >>359 中途半端になってしまった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4428.txt
379 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:07:46 ] >>362 >>308 >>341 の3つめのreturn 0; の前に free(mvt); を忘れとった・・・もう見てへんよな・・・まぁ良いっか・・・ 知〜らねっ ^^;
380 名前:デフォルトの名無しさん [2007/06/27(水) 20:51:20 ] fmod()を使うよう指定されました(泣)
381 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:13:32 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 下記のプログラムで a[3][3] = {{2.4, -3, 6.1}, {-1.1, 2, 3.5}, {0.5, 0, 3.2}} b[3][3] = {{1.9, -4.7, 2.5}, {2, 0.9, 5.4}, {2.7, 0.6, 3.5}} c[3][3] = {{-2, -3.5, 0}, {1.4, 7.3, -1}, {2.1, 0.4, 6.2}} に置き換えたとき、この要素で与えられる行列を求め出力するプログラムを作成せよ。 #include <stdio.h> int main(void) { int i, j, n; double b[3][3] = {{3.2, -1.5, 3.9}, {3.8, 4, -1.8}, {1.9, -3, 0}}; double c[3] = {-5, 2.7, 1.5}; double a[3] = {1, 5.1, 6.2}; n = 3; for (i=0; i<n; i++) { for (j=0; j<n; j++) { a[i] +=b[i][j] * c[j]; } printf("y[%d]=%f\n", i, a[i]); } return 0; } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C [4] 期限: 6月30日16:30まで すみません、よろしくお願いします。
382 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:50:20 ] >>371 どっかの木構造を解説してるサイトにあったのをパクったやつ typedef struct tagTree{ int no; struct tagTree *left, *right; }Tree; void PrintTree(Bin *root, int depth) { depth++; if (root != NULL) { int i; PrintTree(root->left, depth); for (i = 0; i < depth; i++) printf(" "); printf("%3d\n", root->no); PrintTree(root->right, depth); } } mainで呼ぶときはdepthを0にすればおk
383 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:53:56 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): getchar関数を使用し、コマンドラインからの数字を10回入力し、 入力の中でもっとも大きな数字を表示しなさい。 ※入力桁数のエラーについて対処する事 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CPAD、LSI C-86 Ver 3.30 [3.3] 言語: C [4] 期限: できれば今週中 すみません、どなたか分かる方、よろしくお願いします。
384 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:57:07 ] >>383 実行例くらい書いてくれ。
385 名前:382 mailto:sage [2007/06/27(水) 23:00:19 ] >>382 しまった…… typedef struct tagBin{ int no; struct tagBin *left, *right; }Bin; に修正plz
386 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:22:21 ] >>384 すいません。恥ずかしくてのせてませんでした。 初心者のため、おかしい点等をびしびしあげていただければと思います。 #include <stdio.h> #include <stdlib.h> void hikaku(int *pX,int *pY); int main(void){ int x= 0; int y,i,j; char str[100]; printf("数字を入力してください。\n"); for(i=1 ; i < 11; i++){ for(j=0; str[j-1] != '\n'; j++){ str[j] = getchar();} if(j-1 >= 5){ printf("5桁以上は入力桁数エラーです。0にします。\n");} else{y = atoi(str); if(y == 0 && str[0] != '0'){ printf("数字以外は入力できません。0にします。\n");} else {hikaku(&x ,&y);}}} printf("最大値は%dです。\n",x); return 0;} void hikaku(int *pX,int *pY){ if(*pY > *pX){ *pX = *pY;}}
387 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:25:02 ] >>386 それは実行例じゃないだろ
388 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:26:12 ] >>386 それができていてなぜ質問したん?w
389 名前:デフォルトの名無しさん [2007/06/28(木) 00:19:51 ] 簡単やん
390 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:22:52 ] >>355 をお願いしたいのですが
391 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:40:33 ] >>390 while(j>=0 && x[j]>t) { を while(j>=0 && x[j]<t) { に変更するだけじゃ駄目かな? inp1.datとか用意するのだるいからまともに見てないけど
392 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:50:17 ] >>387 すいません、実行例とは何でしょうか? >>388 自分でここまでは作ったのですが、最初にアルファベットを打ったときなど 特殊な対応が出来ません。また、全く自信がないためです。
393 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:54:23 ] 今、コンパイルが出来ない環境なので確認できないのですが、いまいち右からつめる 降順の解釈の仕方がわからないんです。 左を右に、昇順を降順にしなくてはいけないので、while(j>=0 && x[j]<t) {の変更 だけでは出来ないと思うのですが。
394 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:56:53 ] >>392 実行例は例えばこのプログラムを実行するとこういう出力になって欲しいんですよ、的な内容。 入力に関しては、一回charに入れた時点で数字かどうか判定すれば? どの程度のレベルかわからんが、学校授業で4月開始なら上等なレベルかと。
395 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:00:55 ] >>392 こんなのはどうかな。 #include <stdio.h> #include <ctype.h> int main(void) { int c, max = -1, m, n, nc = 0, f, sign = 1; while ((c = getchar()) != EOF) { if (isdigit(c)) { n = f = 0; do { if ((m = n * 10 + c - '0') < n) f = 1; n = m; } while ((c = getchar()) != EOF && isdigit(c)); ungetc(c, stdin); if (f) puts("桁あふれしますた"); else { n *= sign; printf("%d\n", n); if (n > max) max = n; if (++nc == 10) break; } } else if (c == '-') { sign = -1; } else sign = 1; } if (max != -1) printf("最大値: %d\n", max); return 0; }
396 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:10:04 ] >>393 ああ、右からつめるってそういうことか 単に降順にすればいいだけかと思ってた めんどくさいからパス。せめてdatファイルがあればなぁ
397 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:16:17 ] datファイルでなくても、テキストファイルに整数を入れてinp.txtとしても大丈夫だと思うのですが。
398 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:18:19 ] >>392 ありがとうございます。 10回数字を入力して(ただし、アルファベット、空欄など数字でないやつははじく。また、小数点にも対応する) 桁数は自分で設定し(私のやつは適当に5桁)、最大値を出力する。 >>入力に関しては、一回charに入れた時点で数字かどうか判定すれば? ずばり、バッファリングの理解が甘く、そこのプログラムが打てず悩んでいます。 分かる方、どうかやり方をご教授願います。 >>392 すいません。書き忘れてしまったのですが、入力の終了はEOFではなく改行でといわれています。
399 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:19:44 ] >>398 アンカーのつけかたを覚えなさい。全部自分へのレスになってるよ
400 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:21:49 ] >>398 全て自分に安価する君に惚れたwww atoi関数に渡す前に if ( '0' <= str[ j ] && str[ j ] <= '9' ) { とかでいいんじゃない? ソースあんま読んでないから、的外れだったらスマソ。
401 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:13 ] >>397 それを用意するのがだるいんだ まぁやる気が無いだけなんだけどさ
402 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:22:23 ] >>399 あせってコピペしてしまいました。大変申し訳ありませんでした。
403 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:23:45 ] >>378 元のプログラムをあまり書き換えないでお願い出来ますか。 注文ばかりですいません。
404 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:28:23 ] >>400 atoiの前にif ( '0' <= str[ j ] && str[ j ] <= '9' ) { ?????? すいません意味が分かりません。どういうプログラムになるのでしょうか?
405 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:31 ] >>401 無理を言って申し訳ありません。 では、左からつめるを右からに書き換えるにはどうすればいいでしょうか。
406 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:39:11 ] >>405 左端が0 右端がn-1 今はj=0とかi=1からだんだん加算されていってn-1までループしているのを n-1から減算していって0までループさせればいい
407 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:47:17 ] >>355 >>405 for(i=n-2;i>=0;i--) { t=x[i]; j=i+1; while(j<=n-1 && x[j]>t) { x[j-1]=x[j]; j++; } x[j-1]=t; } てきとー まさかどこと差し替えればいいかなんか聞くなよ?
408 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:49:57 ] ttp://www.infonet.co.jp/ueyama/ip/glossary/ebcdic.html EBCDICでも0〜9は連続したコードに登録されているからおkだお ^ω^
409 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:59:50 ] >>404 ちょっと無理矢理だけど例えば、str[j] = getchar();に下に次の1文を入れてみる。 if ( (str[j] < '0' || '9' < str[j]) && str[j] != '\n' ) j--; 今回getchar関数によって入力された文字が数字じゃなければ、読み込まなかったことにする。 ただ、改行コードもはじかれちゃうのでそれはOKにしておく。 極力、今のソースに手を加えないで変更しようとしたらこんなのになってゴメン・・・orz
410 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:01:29 ] >>406 >>407 ありがとうございます。参考にさせていただきます。 もうひとつ>>359 についてお願いできますか? >>378 さんが答えて下さっているのですが、元のプログラムの値をあまり 書き換えないで欲しいのですが。
411 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 06:01:56 ] [1] 授業単元:プログラミング [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4430.txt [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:c言語 [4] 期限:6月30日(木)
412 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:40 ] >411 (1) #include <stdio.h> #include <stdlib.h> void putchar_n(char c1, char c2, int num){ if(num <= 0){ return; } putchar(c1); putchar_n(c1,c2,num-1); putchar(c2); } int main(int argc, char* argv[]){ if(argc != 4){ return 1; } putchar_n(argv[1][0],argv[2][0],atoi(argv[3])); printf("\n"); return 0; }
413 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:44:04 ] >>411 (2) #include <stdio.h> int main(){ int i = 0; for(i = 0 ; i+31 < 126+1 ; i++){ printf("%c %d %o %x\n",i+31,i+31,i+31,i+31); if(i%8 == 7){ printf("--------------------\n"); } } return 0; }
414 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:10:46 ] >>409 ありがとうございます。 ただやってみたのですが、例えば「fsa256」や「256faj」などを入れるとそれも256として 反映されてしまいます。 何とかはじく方法があればと思うのですが・・・。
415 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:14:22 ] >>410 ですが、>>378 さんの書いてくださったプログラムをコンパイルしてみたところ、 35以上でかつ95未満の要素の数の処理は出来たのですが、countの要素の合計の処理が 0となり、うまく処理出来ませんでした。
416 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:39:07 ] getcharじゃなきゃだめなの?
417 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:46:53 ] まあそれはいいとして atoi使わずに www.bohyoh.com/CandCPP/C/Library/strtol.html 使えば済む話だと思う
418 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:55:29 ] >>415 main()だけ修正 int main(void) { int i, *x, n, size, count[11] = { 0 }, sum; setp(&x, array(&size)); for (set(&i,0); less(i,size); inc(&i)) { set(&n,div(at(x,i),10)); if (less(10,n)) set(&n,10); inc(&count[n]); } for (set(&i,0); less(i,10); inc(&i)) printf("%3d台: %d\n", mul(i,10), at(count,i)); set(&sum,0); for (set(&i,0); less(i,11); inc(&i)) set(&sum,pls(sum,at(count,i))); printf("countの要素の合計は%d\n",sum); if (eq(sum,size)) printf("総和は正しいです\n"); else printf("総和が違います\n"); for (set(&n,0),set(&i,0); less(i,size); inc(&i)) if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n); printf("35以上でかつ95未満の要素の数は%d\n", n); return 0; }
419 名前:418 mailto:sage [2007/06/28(木) 10:57:07 ] すまん、化けたか? int main(void) { int i, *x, n, size, count[11] = { 0 }, sum; setp(&x, array(&size)); for (set(&i,0); less(i,size); inc(&i)) { set(&n,div(at(x,i),10)); if (less(10,n)) set(&n,10); inc(&count[n]); } for (set(&i,0); less(i,10); inc(&i)) printf("%3d台: %d\n", mul(i,10), at(count,i)); set(&sum,0); for (set(&i,0); less(i,11); inc(&i)) set(&sum,pls(sum,at(count,i))); printf("countの要素の合計は%d\n",sum); if (eq(sum,size)) printf("総和は正しいです\n"); else printf("総和が違います\n"); for (set(&n,0),set(&i,0); less(i,size); inc(&i)) if (and(less(34,at(x,i)),less(at(x,i),95))) inc(&n); printf("35以上でかつ95未満の要素の数は%d\n", n); return 0; }
420 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:02:03 ] >>414 後から細々と注文をつけるんなら、「正しい入力」を正確に定義汁。 最初に正確に仕様を述べないから、>>1 で言う >・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 の状況に結果的にはなっている。 正規表現で言うと、 ^-?[0-9]{0,5}$ 以外はエラーと思っていいのかな。 負値はどうする?マイナスの場合の桁数の処理は?スペースも許さない? 00004 は正常?
421 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:30:41 ] -0や00や-000はどうか?という問題もある。 ^(0|[1-9][0-9]{0,4}|-[1-9][0-9]{0,3})$ こうか?
422 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:01:40 ] >>374 >>382 早速のレスありがとうございます。ためしにやってみたのですが、うまくいきませんでした。 できれば、 1 /\ / \ 2 3 /\ /\ 4 5 6 7 このように表示できたらいいです。表示するデータは3桁の整数です。 おねがいいたします。
423 名前:デフォルトの名無しさん [2007/06/28(木) 12:36:11 ] [1] 授業単元:プロC [2] 問題文(含コード&リンク): コマンドライン引数から十進整数値として解釈できる文字列のみを選び、 値が小さい順に並べ替えて、一行に一つずつ標準出力に出力するプログラムを書け。 ただし、十進整数値として解釈できる文字列とは、正規表現 ^[-+]?[0-9]+$ に マッチするものとする。 ヒント:小さい順に並べ替えるには、 qsort()が便利です。 こちらも、使い方は、manコマンドで調べることができます。 コマンドライン引数すべてについて、 含まれるアルファベットすべてを対応する大文字に置き換えて、 一行にコマンドライン引数一つずつ標準出力に出力するプログラム。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4431.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4432.c [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:今週中 [5] その他の制限: 特になしです どうかよろしくお願いします。
424 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:44:31 ] >>419 さん、>>378 さんのプログラムと変更が無いようなのですが。 コンパイルしても変わりませんでした。
425 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:48:03 ] >>423 #include <stdio.h> int main(int argc, char **argv) { FILE *fp = popen("egrep '^[-+]?[0-9]+$' | sort -n", "w"); while (*++argv) fprintf(fp, "%s\n", *argv); pclose(fp); return 0; }
426 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:50:09 ] >>424 もう一度確認してみろ。
427 名前:デフォルトの名無しさん [2007/06/28(木) 13:53:21 ] [1]単元:プログラミング技術 [2]問題文:ローダーのNo.4433にアップしました。 [3]環境 OS:リナックス コンパイラ:cc 言語:C [4]期限:できれば本日14時30分ごろまでにお願いします。 どうぞよろしくお願いします。
428 名前:デフォルトの名無しさん [2007/06/28(木) 13:54:15 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題1 文字型の配列変数mojiに設定されている文字数を答えなさい char moji[] = "ABCDEFG"; 実行画面 文字数:7
429 名前:デフォルトの名無しさん [2007/06/28(木) 13:55:39 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題1 文字列を入力して偶数番目の要素数と奇数番目の要素を別の配列に格納し、文字列として表示しなさい 実行画面 文字列入力==>ABC123def 偶数要素:AC2df 奇数要素:B13e
430 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:40:31 ] >>427 #include <stdio.h> #include <string.h> void search(char *s1, char *s2) { int i; char *p = s1; while((p = strstr(p, s2)) != NULL){ *p++ = '#'; for(i = 0; i < strlen(s1) - 1; i++) *(p + i) = *(p + i + strlen(s2) - 1); } } int main(void) { char text[1024], word[1024]; printf("Please input text : "); gets(text); printf("text = %s\n", text); printf("Please input search word : "); gets(word); search(text, word); printf("text = %s\n", text); return 0; }
431 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:44:40 ] このスレでgets()使うと袋叩きにあうよ。
432 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:45:32 ] >>427 void search(char *s1, char *s2) { while((s1 = strstr(s1, s2)) != NULL){ *s1++ = '#'; strcpy(s1, s1 + strlen(s2) - 1); } }
433 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:46:56 ] >>431 俺だって使いたかねーけど、問題文に指定してあるからな。
434 名前:デフォルトの名無しさん [2007/06/28(木) 14:54:08 ] 授業単元:C言語 環境:if文・for文・while文・do〜while文・switch〜case文・ OS:Windows コンパイラ名とバージョン:borland 言語:C テーマ:文字配列の操作 問題 文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換えなさい 実行画面 文字列(m1)入力==>ABCDEFAABCDABC 削除文字==>A 置換文字==>* 結果文字列(m1):BCDEF**BCD*BC
435 名前:デフォルトの名無しさん [2007/06/28(木) 15:06:21 ] 授業単元 関数 言語 C言語 引数の階乗(1*2*3*....*n)を関数を作れ お願いします
436 名前:デフォルトの名無しさん [2007/06/28(木) 15:09:45 ] int kaijo(int a) { if(a == 1){ return 1; } return a*kaijo(a-1); }
437 名前:デフォルトの名無しさん [2007/06/28(木) 15:13:47 ] int kaijo(int a) { int i, result=1; for(i=1; i<a; i++){ result *= i; } return result; }
438 名前:デフォルトの名無しさん [2007/06/28(木) 15:14:47 ] 授業単元 関数 言語 C言語 引数の階乗(1*2*3*....*n)を返す関数を作れ の間違いでした 申し訳ありません
439 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:20:43 ] >>378 はネタだろw
440 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:21:44 ] >>422 適当だし、エクスプローラ風の樹形図になっちゃうけど、それでよければ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4434.txt
441 名前:デフォルトの名無しさん [2007/06/28(木) 15:24:36 ] 428 429何方かお願いします
442 名前:デフォルトの名無しさん [2007/06/28(木) 15:30:51 ] >>428 int main() { char moji[] = "ABCDEFG"; int i; for(i=0; moji[i] != '\0'; i++); printf("文字数:%d\n", i); }
443 名前:デフォルトの名無しさん [2007/06/28(木) 16:11:45 ] マイナスの引数でエラーを出さない平方根を返す関数を作れ C言語でお願いします
444 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:14:43 ] >>443 >>1 嫁
445 名前:デフォルトの名無しさん [2007/06/28(木) 16:23:53 ] 授業単元 関数 問題文 マイナスの引数でエラーを出さない平方根を返す関数を作れ 環境 LINUX C言語 期限 いつでも >>1 よんでおらず申し訳ありませんでした
446 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:04 ] 負の数が入ったときの動作は?
447 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:05 ] >>439 もしネタだとしたら、真面目にお願いしたいのですが。
448 名前:デフォルトの名無しさん [2007/06/28(木) 16:30:52 ] >>446 例として2の 平方根 だと 1.4142135... ー2 の 平方根 だと -1.4142135... となるようにです
449 名前:デフォルトの名無しさん [2007/06/28(木) 16:33:41 ] マイミクしてください! mixi.jp/show_friend.pl?id=3356659
450 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:35 ] >>448 double exsqrt(double x) { if(x<0){ x=-x; return -sqrt(x); } return sqrt(x); }
451 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:37 ] >>447 まじめにやってもこの程度だが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4435.txt
452 名前:デフォルトの名無しさん [2007/06/28(木) 17:14:08 ] あ〜〜fmod()を使って10進数を2進数に変えたいんです。C++
453 名前:デフォルトの名無しさん [2007/06/28(木) 17:17:17 ] [1] 授業単元:多次元配列 [2] 問題文(含コード&リンク): 以下のステップに従って,行列表示及び演算を行う関数群を作成し,3行3列の行列A,Bのかけ算を行い,結果を表示するプログラムを作成してください.なお,行列AとBは,キーボードから値を入力するようにしてください. 1.3行3列の行列を表示する関数hyoujiを作成 (メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてhyoujiを呼び出し,内容を表示させ,動作確認を行う) 2.3行3列の行列A,Bの足し算を行い,結果を行列Cに代入する関数tasizanを作成 (メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてtasizanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う) 3.tasizanをコピー・雛形にして,3行3列の行列A,Bのかけ算を行い,結果を行列Cに代入する関数kakezanを作成 (メイン関数で任意の値で初期化した3行3列の行列A,B,Cを引数にしてkakezanを呼び出し,関数hyoujiにより行列Cを表示させ,動作確認を行う) 4.キーボードから3行3列の行列に見立てた配列に数値を入力する関数nyuryokuを作成 (メイン関数で任意の値で初期化した3行3列の行列Aを引数にしてnyuryokuを呼び出し,関数hyoujiにより行列Aを表示させ,動作確認を行う) kakezanのヒント:3重ループにすると効率よくプログラムできます [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:Borland [3.3] 言語:C [4] 期限:7月10日まで [5] その他の制限:多次元配列までならってます
454 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:30:44 ] >>451 迅速な返答ありがとうございます。無事実行の確認ができました。
455 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:00:07 ] >>453 void hyouji(int array[][3]) { int i,j; for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%3d",array[i][j]); putchar('\n'); } } void tasizan(int A[][3],int B[][3],int C[][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) C[i][j]=A[i][j]+B[i][j]; }
456 名前:455 mailto:sage [2007/06/28(木) 19:04:02 ] 続き void kakezan(int A[][3],int B[][3],int C[][3]) { int i,j,k; for(i=0;i<3;i++) for(j=0;j<3;j++) for(k=0;k<3;k++) C[i][j]+=A[i][k]*B[k][j]; } void nyuryoku(int A[][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++){ printf("A%d%d:",i,j); scanf("%d",&A[i][j]); } }
457 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:04 ] [1] 授業単元:C++ [2] 問題文: メイン関数で整数numに0が入力されるまでキー入力を繰り返し実行する。 負の値も有効とし、0も有効な値とする。 入力が終了した時点での入力値の最大値上位3つと最小値下位3つを画面に出力する。 [3] 環境 [3.1] OS:窓 [3.3] 言語:C++ [4] 期限:明日 [5] その他の制限:出力にはprintf、入力にはscanfの使用 習い始めなため、出来るだけ簡単な物にしてくれると助かる。 お願いします。
458 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:46 ] >>453 #include <stdio.h> void hyouji(double a[3][3]){ int i, j; for(i = 0; i < 3; i++){ for(j = 0; j < 3; j++) printf("%4.1f", a[i][j]); printf("\n"); } } void tasizan(double a[3][3], double b[3][3], double c[3][3]){ int i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) c[i][j] = a[i][j] + b[i][j]; } void kakezan(double a[3][3], double b[3][3], double c[3][3]){ int i, j, k; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++){ c[i][j] = 0; for(k = 0; k < 3; k++) c[i][j] += a[i][k]*b[k][j]; } } void nyuryoku(double a[3][3]){ int i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) scanf("%lf", &a[i][j]); } int main(void){ double a[3][3], b[3][3], c[3][3]; nyuryoku(a); nyuryoku(b); tasizan(a, b, c); hyouji(c); kakezan(a, b, c); hyouji(c); return 0; }
459 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:46:35 ] [1] 授業単元:C言語実習基礎 [2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4436.txt 数字を昇順でソートできるようにする。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C [4] 期限: 6/29正午まで [5] その他の制限: 挿入ソート、選択ソートまで習っています。
460 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:04:14 ] それはソースコードであって問題文ではない。
461 名前:デフォルトの名無しさん [2007/06/28(木) 20:43:32 ] [1] 授業単元:C++研究 [2] 問題文 あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。 このとき、0と1の並びに着目し、データを圧縮することを考える。 ここでは、0と1のそれぞれが何個連続して並んでいるかを記録することで圧縮を行う。 たとえば、digit1.datというファイルに 111110000000000000000000000001E というように0と1が並んでいるとき、 7 1 24 0 1 1 と圧縮できる。このとき圧縮結果に空白を挟むことに注意する。 上記の圧縮方法に従って、任意の0と1から成るデータを圧縮するプログラムを作成せよ。 ただしデータはリダイレクションを使用し、char型変数の1文字ずつ繰り返し世も困れるものとする。 最後には「圧縮完了」と表示のこと。 3] 環境 [3.1] OS:windowsXP [3.2] cygwin [3.3] 言語:C++ [4] 期限:明日 [5] その他の制限:C++です。よろしくお願いします
462 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:51:54 ] [1] 授業単元: プログラミング序論 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4437.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限: 29日まで よろしくお願いします
463 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:52:00 ] >繰り返し世も困れる 読み込まれる?
464 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:58:31 ] >>460 申し訳ありませんでした。 このソースコードを昇順でソートできるように直しなさい。 という問題です。
465 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:07:00 ] >>462 (1) #include <stdio.h> int main(void) { int array[7] = {4, 5, 0, 6, 2, 2, 4}; int i, sum = 0; for(i=0;i<7;i++) sum += array[i]; printf("%d", sum); return 0; }
466 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:14:41 ] >>461 #include <iostream> using namespace std; int main() { streambuf *sb = cin.rdbuf(); int c, cc, n; const char *sep = ""; while ((c = sb->sbumpc()) >= 0 && c != 'E') { for (n = 1; (cc = sb->sbumpc()) >= 0 && cc == c; ++n) {} sb->sungetc(); cout << sep << n << " " << static_cast<char>(c); sep = " "; } cout << "\n圧縮完了\n"; }
467 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:20:17 ] >>462 (2) #include <stdio.h> int main(void) { int array[7] = {4, 5, 0, 6, 2, 2, 4}; int array2[7] = {0}; int i; for(i=0;i<7;i++) array2[i] = array[6-i]; for(i=0;i<7;i++) printf("%d", array[i]); putchar('\n'); for(i=0;i<7;i++) printf("%d", array2[i]); return 0; }
468 名前:453 [2007/06/28(木) 21:40:36 ] >>455 さんありがとうございます
469 名前:462 mailto:sage [2007/06/28(木) 21:59:36 ] >>465 >>467 ありがとうございます
470 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:45:46 ] >>457 (1) #include <iostream> #include <math.h> #define BUF_MAX 64 #define DATA_MAX 128 char datanum=0; long data[DATA_MAX]; void seikei(char*); long henkan(char*); void touroku(long); void sort(); void output();
471 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:05 ] (2) int main() { char i, sign, buf[BUF_MAX]; long input; do { input = 0; for(i=0; i<BUF_MAX; i++) buf[i] = NULL; printf("input number\n> "); scanf("%s", buf); if(buf[0]==45) sign = 1; else sign = 0; seikei(buf); input = henkan(buf); if(input==0) break; else if(sign==1) input = 0-input; touroku(input); } while(1); sort(); output(); return 0; }
472 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:47:53 ] (3) void seikei(char *buf) { char i, j, max, str[BUF_MAX]; for(i=0; i<BUF_MAX; i++) str[i] = NULL; max = (char)strlen(buf); for(i=0, j=0; i<max; i++) { if(!(48>buf[i] && buf[i]<57)) { str[j] = buf[i]-48; j++; } } for(i=0; i<BUF_MAX; i++) buf[i] = str[i]; return; } long henkan(char *buf) { char i, figure; long input=0; figure = (char)strlen(buf)-1; for(i=0; buf[i]!=NULL; i++) input += buf[i] * pow((double)10, (double)figure-i); return input; }
473 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:49:12 ] (4) void touroku(long input) { if(datanum<DATA_MAX) { data[datanum] = input; datanum++; } return; } void sort() { char i, j, higher; long tmp; for(i=0; i<datanum; i++) { for(j=i+1, higher=i; j<datanum; j++) { if(data[higher]<=data[j]) higher = j; } tmp = data[higher]; data[higher] = data[i]; data[i] = tmp; } return; }
474 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:50:56 ] (5) void output() { char i; for(i=0; i<3; i++) { if(data[i]==NULL) break; printf("上位%d位: %d\n", i+1, data[i]); } for(i=datanum-1; i>(datanum-4); i--) { if(data[i]==NULL) break; printf("下位%d位: %d\n", datanum-i, data[i]); } } 単純なデータ構造にしたつもり。 殴り書きでsorry
475 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:21 ] 1] 授業単元:c言語 [2] 問題文: 8個の配列データa={1,2,4,6,8,4,5,9}の和WAおよび平均値MA を求めるプログラムを配列およびfor文を用いて作成せよ。 [3] 環境 [3.1] OS:XP [3.2] Visual studio.2005 [3.3] 言語:C [4] 期限:6月29日:3時まで [5] その他の制限:特になし よろしくお願いします
476 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:19:34 ] 宿題じゃないんだが 01011010みたいに 日付が4桁4桁になってる 8桁の数字を生成するのはどうするん?
477 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:24:49 ] 宿題スレじゃなくてC/C++質問スレで頼むわ
478 名前:デフォルトの名無しさん [2007/06/28(木) 23:26:16 ] >>345 お願いします
479 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:28:41 ] >>475 #include <stdio.h> int main(void){ double MA; int i, WA=0; int a[8] = {1, 2, 4, 6, 8, 4, 5, 9}; for(i=0; i<8; i++){ WA += a[i]; } MA = WA/8.0; printf("和 : %d", WA); printf("平均値 : %lf", MA); return 0; } 直接書いてコンパイルとかしてないからエラーでたらおせーてね☆
480 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:35:04 ] >>478 345の結果ってさ、準決勝で早稲田が下になってるやんか、 あれって逆にしてもええのん? あかんのやったらあかんでええけど、
481 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:36:28 ] ああごめんよく読んでなかったわ 得点と失点を記録するんやね
482 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:06:37 ] >>478 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4438.txt
483 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:08:44 ] defineにこだわってる所為で汚くなってるじゃんとか言わないでね
484 名前:デフォルトの名無しさん [2007/06/29(金) 01:02:03 ] わからねえよボケ!去ね!
485 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:06:28 ] >>470-474 サンクス。 ただ、素人がここまで書いてしまうと逆に相手に怪しまれると思うのですよ。 問題文を多少屁理屈で変えてもいいので、もう少し短く簡単にして頂ければ幸いです。 加えてもう一問。 [1] 授業単元:C++ [2] 問題文: メイン関数a,bに任意の値を入力する。 変数aと変数bで加算と乗算を行い計算結果を表示する。 整数の範囲(-2147483648〜2147483648)で正常な計算が行えることを確認する。 実数(float,double)は変数やキャスト等で一切使用しない。 [3] 環境 [3.1] OS:窓 [3.3] 言語:C++ [4] 期限:明日の午後 [5] その他の制限:出力にはprintf、入力にはscanfの使用 図々しいことは百も承知ですが、よろしくお願いします。
486 名前:デフォルトの名無しさん [2007/06/29(金) 01:10:38 ] お願いします。 [1]C言語 [2]ファイルを読み込む I am C. CAT and ... を別のファイルに下のように書き込む 1: I am C. 2: CAT and ... [3.1] OS:Linux [3.2] gcc 3.4 [3.3] 言語: C [4]今日の午前中
487 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:20:49 ] >>486 #include <stdio.h> int main(void) { FILE *fop,*fsv; char buf[32]; int ch; printf("読み込むファイル名を入力 > "); scanf("%s",buf); fop=fopen(buf,"r"); if( fop==NULL ) return 1; printf("書き込むファイル名を入力 > "); scanf("%s",buf); fsv=fopen(buf,"w"); if( fsv==NULL ) { fclose(fop); return 1; } while( (ch=fgetc(fop))!=EOF ) { fprintf(stdout,"%c",ch); fprintf(fsv,"%c",ch); } fclose(fop); fclose(fsv); return 0; }
488 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:26:08 ] [1] 授業単元:情報系ゼミ [2] 問題文:www.ipsj.or.jp/07editj/promenade/4407.pdf 上記URLの文中「逆方向のスキャンによる枝刈り(P759)」「ビット列の長さによる枝刈り」 の二項を聞いてる素人にも判る様に説明、解説する。という課題を受けました しかし今まで習った内容とは明らかにレベルが違いすぎるため、 また、周りが自分を含めプログラムはズブの素人ばかりなので全く理解できず、 一同困惑しています お時間のある方、この範囲のプログラム文の一行一行がどういう機能を果たしているのかを 馬鹿にも判るように解説して頂けないでしょうか? よろしくお願いします [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語:C++ [4] 期限:[2007年07月01日まで [5] その他の制限: まったく習っていない段階
489 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:29:47 ] あ、書き込むときに 1: 〜 2: 〜 のように数字をつけたいんです、3行とか4行とかにも対応できるように…。 もしよければおねがいします
490 名前:デフォルトの名無しさん [2007/06/29(金) 01:34:37 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4439.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland [3.3] 言語: どちらでも可 [4] 期限: 2007年07月01日23:00まで [5] その他の制限: なし
491 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:41:48 ] >>489 は>>487 さんへのレスです。
492 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:53:19 ] 491です。解決しました。あともう一門わからないのがあるので もしよければお願いします [1] 授業単元: C言語 [2] 問題文(含コード&リンク): テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面とテキストファイルに表示する c→4h→1a→2 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:明日
493 名前:492 mailto:sage [2007/06/29(金) 01:59:20 ] [2]の例追加 abdcdoddooffffoo ↓ abc→1 df→4 o→5
494 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:01:36 ] >>491 >>489 >>487 の一部だけ変更。変更部分は↓の一番上と下が一致するところの中 if( fsv==NULL ) { fclose(fop); return 1; } i=1; fprintf(stdout,"%d:",i); fprintf(fsv,"%d:",ch); while( (ch=fgetc(fop))!=EOF ) { fprintf(stdout,"%c",ch); fprintf(fsv,"%c",ch); if( ch=='\n' ) { i++; fprintf(stdout,"%d:",i); fprintf(fsv,"%d:",ch); } } fclose(fop);
495 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:06:46 ] >>494 訂正 fprintf(fsv,"%d:",ch); < の2箇所を fprintf(fsv,"%d:",i); < ,i に変更
496 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:07:39 ] >>495 じゃなくて、2箇所ある fprintf(fsv,"%d:",ch); < これを って意味ね。出力結果がおかしいから分かるだろうけど。
497 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:31:05 ] [1] 授業単元: プログラミング基礎A [2] 問題文(含コード&リンク): 奇数かどうか判定する関数および,偶数かどうか判定する関数を作成しなさい. ◎以下を参考の事 奇数判定: int isOdd(int i) 数字iが奇数の場合1, 偶数の場合0を返す関数 偶数判定: int isEven(int i) 数字iが偶数の場合1, 奇数の場合0を返す関数 main関数ではif文を使って正しく動いているかどうか チェックしてください. ※戻り値にはboolを利用してもOKです [3] [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限:2007年6月29日10時30分 [5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。 よろしくおねがいします。
498 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:33:07 ] >>497 int isOdd(int i){return i%2;} int isEven(int i){return i%2==0;}
499 名前:492 mailto:sage [2007/06/29(金) 05:10:44 ] テンプレわかりづらかったので、もっかい質問します 是非、教えてください、お願いします。 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面とテキストファイルに表示する c→4h→1a→2 ほかの例は abdcdoddooffffoo の場合 abc→1 df→4 o→5 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:5時間後くらい
500 名前:492 mailto:sage [2007/06/29(金) 05:13:41 ] >>494-496 さん本当にありがとうございます!!
501 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:03:57 ] >>499 #include <stdio.h> int main(void) { int c, nc[256] = {0}, nmax = 0, n, found; while ((c = getchar()) != EOF) { nc[c]++; if (nc[c] > nmax) nmax = nc[c]; } for (n = 1; n <= nmax; n++) { found = 0; for (c = 0; c < 256; c++) { if (nc[c] == n) { putchar(c); found = 1; } } if (found) printf("→%d", n); } printf("\n"); return 0; }
502 名前:492 mailto:sage [2007/06/29(金) 06:27:59 ] >>501 さんありがとうございます。 けどコンパイルしてみたらエラーがたくさん表示されて…。 あとファイルから読み込んで結果を画面に表示してファイルに書き込む プログラムをつくりたいです。またもしよければアドバイスおねがいします
503 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:02:16 ] >>500 そういや、int i; も追加だったっけ・・・ってできた?ようだから良いか。
504 名前:492 mailto:sage [2007/06/29(金) 07:07:45 ] >>503 さんのをアレンジしたらできました!ありがとうございました!! もしよければ>>499 を教えてほしいです…何度もすいません。
505 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:24:24 ] >>501 は全角スペースが入っているからでそ #include <stdio.h> int main(void) { int c, nc[256] = {0}, nmax = 0, n, found; while ((c = getchar()) != EOF) { nc[c]++; if (nc[c] > nmax) nmax = nc[c]; } for (n = 1; n <= nmax; n++) { found = 0; for (c = 0; c < 256; c++) { if (nc[c] == n) { putchar(c); found = 1; } } if (found) printf("→%d", n); } printf("\n"); return 0; }
506 名前:492 mailto:sage [2007/06/29(金) 07:32:56 ] これにファイルポインタとか使いしていけばいいんですかね? これだけだと動きませんでしたので・・・
507 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:38:07 ] >>506 題意が良くわからないんだが、要するに文字列の中の各アルファベットの数を数えろってことかね?
508 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:39:33 ] 492と493の例だと表示順がわからないんだけど。 出てきた順番でもないし、アルファベット順でも個数順でもない。
509 名前:492 mailto:sage [2007/06/29(金) 07:44:45 ] >>507 さん、そうですねアルファベット順にしたいです。 cccchaaの例はちょっと間違って書いてましたすいません…。 もうひとつ例としては aaabcddddee の場合は a→3 bcd→4 e→2 です。何度もすいません…アルゴリズムがいまいち思いつかないので…。
510 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:01:13 ] アルファベットの数を数える部分はできたが、同じ数のものを並べてってのが面倒やな・・・ もう少しで出来そうだが、そこんとこで手詰まり中。まぁ、なんとかなるさ。
511 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:09:25 ] >>459 ソースコードを昇順ソートできるようにするという問題です。 何度もすみません。
512 名前:デフォルトの名無しさん [2007/06/29(金) 08:23:46 ] >>381 お願いします
513 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:13:21 ] >>509 >>506 >>504 >>499 >>492 汚いソースだが我慢せい kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4441.c
514 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:15:32 ] >>509 >>506 >>504 >>499 >>492 訂正 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4442.c
515 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:10 ] >>509 >>506 >>504 >>499 >>492 さらにマクロでシェイプアップ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4443.c
516 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:58 ] >>515 っつか str[1024], <これ要らなかった、削除プリーズ
517 名前:459 mailto:sage [2007/06/29(金) 12:12:43 ] 時間延長してもらいました。 順を追って試してるんですがうまくいかないです・・・
518 名前:デフォルトの名無しさん [2007/06/29(金) 12:41:20 ] [1] 授業単元:プロC [2] 問題文(含コード&リンク): ↓*ndPtrPtr が指すリストの n 番目のノード(ノード番号は 0 番から始まる)を削除する. 削除したノードに割り当てられていたメモリは解放される.ただし,リスト中のノード数が n 以下で,n番目のノードがない場合には,何もしない. 戻り値は,n番目のノードが削除できたときには SUCCESS, n番目のノードが存在せず,削除できなかったときには FAILURE を返す. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4444.c 上のnodeInsertを改良して,指定された挿入場所のインデックス n が負のときには, 新しく挿入されたノードがリストの末尾から数えて -n 番目になるようにせよ. (たとえば,n == -1 のときには,末尾に挿入される) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:月曜日まで [5] その他の制限: なし よろしくお願いします。
519 名前:デフォルトの名無しさん [2007/06/29(金) 12:43:12 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 3d^2x/dt^2+dx/dt+2x=4 x(t=0)=0 dx/dt(t=0)=0 上記の微分方程式をルンゲークッタ法を用いて解け [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C言語 [4] 期限: ([2007年7月1日まで [5] その他の制限: なし お願いします
520 名前:デフォルトの名無しさん [2007/06/29(金) 12:58:22 ] [1] 授業単元:C言語演習 [2] 問題文(含コード&リンク):ふたつあります。 @文字列strをno回だけ連続して表示する関数 void put_stringn(const char str[], int no){/*…*/}を作成せよ。 A以下に示した関数をもとにして、文字列を後ろから逆に表示する("SEC"を受けたら"CES"と表示する)関数put_rstringを作成せよ。 #include <stdio.h> void put_string(const char str[]) { unsigned i = 0; while(str[i]) putchar(str[i++]); } int main(void) { char str[100]; printf("文字列を入力してください:"); scanf("%s", str); put_string(str); putchar(!\n!); return(0); } [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:今日中なるべく早く [5] その他の制限: 明解C言語入門編テキスト使用 お手数おかけしますがどうかよろしくお願いします。
521 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:03:46 ] 明解C言語入門編 ttp://www.bohyoh.com/Books/MeikaiA01/ これか?
522 名前:デフォルトの名無しさん [2007/06/29(金) 13:04:27 ] >>521 さん そうです。
523 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:04:39 ] [1] 授業単元:C++研究 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt 上記2つのプログラムのクラス(設計図)のインスタンス生成部分をnew演算子を用いた ものに修正しなさい(すべての個所)。もちろんこのインスタンスをdelete演算子 で削除することを忘れないこと。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年7月1日12:00まで] [5] その他の制限:特になし よろしくお願いします。
524 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:06:42 ] >>520 #include <string.h> void put_string(const char str[]) { unsigned i = strlen(str)-1; while(str[i]) putchar(str[i--]); }
525 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:09:21 ] >>520 なんか全角が入ってたり putchar の括弧の中がおかしいから全部書くわ #include <stdio.h> #include <string.h> void put_string(const char str[]) { unsigned i = strlen(str)-1; while(str[i]) putchar(str[i--]); } int main(void) { char str[100]; printf("文字列を入力してください:"); scanf("%s", str); put_string(str); putchar('\n'); return(0); }
526 名前:デフォルトの名無しさん [2007/06/29(金) 13:15:04 ] >>525 さん ありがとうございます。 void put_stringをvoid put_rstringにすればいいんですかね?#include <string.h>て 習っていないのですが… もしよろしければ問題@のほうもよろしくお願いします
527 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:23:43 ] 内容: [1] 授業単元:C++ [2] 問題文: #include <stdio.h> #define NUM4 #define NAME_LENGTH 20 struct seiseki{ char name[NAME_LENGTH]; int jpn; int eng; int math; /*A*/ } int main(void){ struct seiseki i06[NUM]; double max; int max_i; int i; for(i=0;i<NUM;i++){ printf("%d番目の名前を入れてください",i); scanf("%s",i06[i].name); printf("%d番目の国語の成績を入れてください",i); scanf("%d",i06[i].jpn); printf("%d番目の英語の成績を入れてください",i); scanf("%d",i06[i].eng); printf("%d番目の数学の成績を入れてください",i); scanf("%d",i06[i].math); } /*B*/ }
528 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:36 ] >>520 #include <stdio.h> void put_stringn(const char str[], int no) { int i; for(i=0; i<no; i++) printf("%s \n",str); } void put_string(const char str[]) { int i = 0; while(str[i]!='\0') i++; while(i-->0) putchar(str[i]); } int main(void) { char str[100]; int no; printf("文字列を入力してください:"); scanf("%s", str); printf("@文字列strをno回だけ連続して表示する関数 no > "); scanf("%d",&no); put_stringn(str,no); printf("A以下に示した関数をもとにして、文字列を後ろから逆に表示\n"); put_string(str); putchar('\n'); return(0); }
529 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:59 ] 以下のプログラムに構造体を各人の名前と合計点を格納できるように拡張し、最終的には合計点が一番よい学生の名前を出力するプログラムを作成せよ。/*A*/ /*B*/に入れよ また、成績のAランク(成績が80以上100以下)の個数を格納する変数に変更して、Aランクの数が一番多い学生の名前を出力するプログラムを作成せよ。/*A*/にAランクの数 [3] 環境 [3.1] OS:窓 [3.3] 言語:C++ [4] 期限:明日 [5] その他:制限 構造体 他にはとくになかったです。 よろしくお願いします。
530 名前:デフォルトの名無しさん [2007/06/29(金) 13:34:25 ] >>528 さん ありがとうございます。 すみません、@とAの問題は別物なんです ややこしくかいてしまってすみません >>528 にかいていただいたものをどうわければいいのでしょうか… 本当にすみませんorz