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/
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