1 名前:デフォルトの名無しさん [2009/05/18(月) 23:06:51 ] あなたが解けない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++の宿題片付けます 125代目 pc12.2ch.net/test/read.cgi/tech/1240226599/
2 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 23:19:03 ] >>1 (・・)乙
3 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 23:37:58 ] 刀、 , ヘ /´ ̄`ヽ /: : : \_____/: : : : ヽ、 ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : } /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : / ,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/ /: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/  ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/ /: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、 . /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\ /: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \ / / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :} l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : / |: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ !: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ V ヽ| }/// r‐'⌒ヽ イ〉、 ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>1 乙じゃなくて ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね! /: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
4 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:45:44 ] [1] 授業単元: 中級C++ [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9209.zip [3] 環境 [3.1] OS: ウィンドウズ [3.2] コンパイラ名とバージョン: ビジュアルC++ [3.3] 言語: C++ [4] 期限: 2009年5月21日朝まで [5] その他の制限: 「もともと」ディレクトリは提供されたオリジナルのファイルです。 (1)は自力で出来ましたので一応添付しています。わからないのは(2)以降です。 具体的にどのようなアウトプットを求めているのか、問題の意味もあまりよくわかりません。 (3)、(4)になるとますます何を求めているのかわからないのですが、とりあえずいつも 問題が曖昧な先生なのでそれっぽいことをコードで示せば許してもらえます。 という訳で適当な感じでも構わないので(2だけでも結構ですので)よろしくおねがいします
5 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 16:00:30 ] [1] 授業単元: 上級者ためのC++(アルゴリズムとデータ構造) [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9211.zip [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VisualC++2008 Express Edition [3.3] 言語: C++ [4] 期限: 2009年5月21日朝8:00まで [5] その他の制限: 難易度高いと思いますがどなたかお願いします
6 名前:6 ◆tr.t4dJfuU [2009/05/20(水) 18:06:23 ] 【質問テンプレ】 [1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): d.pic.to/vrk8t ・2つの数xとyはint型で定義し、キーボードから入力すること。 ・掛けられる数(*の左側)はx,…,x+3まで変化させること。 ・掛ける数(*の右側)はy,…,y+14まで変化させること。 ・出力形式は写真実行例をそっくり真似ること。 ・xとyの値の範囲は−9以上9以下とする。 ・どんな値を入力しても桁がそろうようにすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++2008 [3.3] 言語: C++ [4] 期限: ([2009年5月20日23:59まで] [5] その他の制限: scanf,printf,forを使ってやるようにとのことです お願いします
7 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:14:48 ] >>5 行頭の判定のやり方が微妙だが他に思いつかなかったので kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9213.txt
8 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:25:07 ] 問題がzipだと見る気がしないでござる
9 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:31:48 ] >>6 #include <stdio.h> int main(){ int x, y; printf("x="); scanf("%d", &x); printf("y="); scanf("%d", &y); for(int i = y; i <= y+14; ++i){ for(int j = x; j <= x+3; ++j) printf("[%2d]*[%2d]=[%4d],", j, i, i*j); printf("\n"); } return 0; }
10 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 19:44:36 ] よろしくお願いします。 授業単元ソフトウェア製作実習 osソラリス コンパイラgcc 言語c 高さhが2で上底aと下底bが次のような値の台形4つの面積の合計を求めるプログラムをfor文を使って作成せよ。 表示形式 台形(1)a=0、b=4、h=2 面積= 台形(2)a=4,b=16h=2面積= 台形(3)a=16、b=36、h=2面積= 台形(4)a=36、b=64 h=2 面積= 4つの台形の面積の合計=
11 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 20:27:22 ] >>994 課題1 #include <stdio.h> #include <unistd.h> int rm(char *file) { int ret; ret = unlink(file); if (ret < 0){ perror(file); } return ret; } int main(int argc, char *argv[]) { while (--argc > 0) rm(*++argv); return 0; }
12 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 20:27:45 ] #include <stdio.h> int main(void) { int a, b, i, area, total_area = 0; for(i=1; i<=4; i++) { a = (i-1) * (i-1) * 4; b = i * i * 4; area = a + b; printf("台形(%d)a=%2d、b=%2d、h=2 面積=%d\n", i, a, b, area); total_area += area; } printf("4つの台形の面積の合計=%d\n", total_area); return 0; }
13 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 20:43:48 ] >>010 0/4=0, 4/4=1, 16/4=4, 36/4=9, 64/4=16, .... なるほど感心するわ。 // gcc --input-charset=cp932 --exec-charset=cp932 #include <stdio.h> int main() { int i; float daikei[][3] = { 0,4,2, 4,16,2, 16,36,2, 36,64,2, }, menseki, goukei = 0.0; for(i=0; i<sizeof(daikei)/sizeof(daikei[0]); i++) { menseki = (daikei[i][0] + daikei[i][1]) * daikei[i][2] / 2.0f; goukei += menseki; printf("a=%.0f b=%.0f h=%.0f 面積=%.0f\n", daikei[i][0], daikei[i][1], daikei[i][2], menseki); } printf("合計面積=%.0f", goukei); return 0; }
14 名前:5 mailto:sage [2009/05/21(木) 01:56:09 ] >>7 すごいっす。有り難うございました。
15 名前:デフォルトの名無しさん [2009/05/21(木) 01:59:13 ] >>12 >>13 ありがとうございます。
16 名前:デフォルトの名無しさん [2009/05/21(木) 08:31:11 ] [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク):CRUD操作及びファイル入出力の出来るデータベースを作成せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年05月23日12:00まで ソートする直前までは作ったのですが、正しく動きませんでした。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9214.c
17 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 08:55:16 ] そのソース、どこかのコピペやなw
18 名前:4 mailto:sage [2009/05/21(木) 09:56:52 ] 期限過ぎてしまいましたが、どなたかお願いできないでしょうか?(o*。_。)oペコッ
19 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 10:53:31 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 整数を入力していき、「0」が入力されたらその1 つ前までに入力された数値の 平均値を求めるプログラムを、while 文を用いて作成せよ。 ここでは最低1 つの0 以外の数値が入力されるとしてよい。 平均値は小数点以下2 桁まで表示すること。 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C++ [4] 期限:2009/5/21 [5] その他の制限:
20 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 11:10:10 ] 1] 授業単元:情報処理 [2] 問題文(含コード&リンク): 正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示す ると共に、それらnの倍数の和を表示するプログラムを作成せよ。 例えば25を入力したら,その倍数である25, 50, 75, 100とそれらの和で ある250が表示されることになる。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン gcc [3.3] 言語:C [4] 期限: 2009年5月22日0:00まで [5] その他の制限:以前にも書き込んだのですが、私の書き込みにミスがありましたのでもう一度書きます。よろしくお願いします。
21 名前:デフォルトの名無しさん [2009/05/21(木) 11:23:13 ] >>19 #include <iostream> #include <iomanip> int main(void) { int i, n, sum; n = sum = 0; while(1) { std::cin >> i; if (i == 0) break; sum += i; n++; } std::cout << std::fixed << std::setprecision(2) << (double)sum / n << std::endl; return 0; }
22 名前:デフォルトの名無しさん [2009/05/21(木) 11:26:13 ] >>20 #include <stdio.h> int main(void) { int n, i, sum; printf("正の整数nを入力せよ: "); scanf("%d", &n); sum = 0; for(i = 1; i <= 100; i++) { if (i % n == 0) { printf("%d\n", i); sum += i; } } printf("%d\n", sum); return 0; }
23 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:02:10 ] [1] 授業単元: 社会情報入門 [2] 問題文(含コード&リンク): 次の無限等比級数の和を、各項を順に加算していくことにより求めるプログラムを書け。 1+(1/3)+(1/9)+(1/27)+..... ただし、0.00001以下となる項を加えた時点で加算を終了することとする。 [3] 環境 [3.1] OS:WindowsXP [3.2] gcc [3.3] 言語: C [4] 期限: 2009年5月22日12:50まで [5] その他の制限:なし よろしくお願いします。
24 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:06:59 ] >>16 相当直さないと動かないぞ。 createData()見ただけでも、メモリ確保とかポインタの使い方が変。
25 名前:19 mailto:sage [2009/05/21(木) 12:08:08 ] >>21 #include <iostream> #include <iomanip> std::cout << std::fixed << std::setprecision(2) << など習ってないことが多いのでもう少し簡単にできないでしょうか? #include <stdio.h>で書いてもらえるとありがたいです 追記で 実行例 整数を入力: 9 整数を入力: 3 整数を入力: 8 整数を入力: 10 整数を入力: 7 整数を入力: 3 整数を入力: 0 平均値は 6.67
26 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:34:54 ] >>25 後出し氏ね
27 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:54:48 ] >>25 それはC言語というものなのだよ
28 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:06:59 ] >>25 #include <stdio.h> int main() { int d, count = 0, sum = 0; while (1) { printf("整数を入力:"); scanf("%d",&d); if (d == 0) break; sum += d; count++; } printf("平均値は%.2lf\n",(double)sum/count); return 0; } >[3.3] 言語: C++ って書いたら、当然C++で回答が書かれます 回答者に無駄な作業をさせないように依頼して下さい。
29 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:08:35 ] >>24 メモリ確保の仕方だけで構いませんので、教えていただけないでしょうか?
30 名前:デフォルトの名無しさん [2009/05/21(木) 13:12:50 ] [1]C++言語初心者コース [2]問題文: C++コードではiostream、iomanipを必ず使わなければならないことを 示す例を作れ。無い場合はその旨50字以内に日本語仮名交じり文で 記述せよ [3]OS:Windows/コンパイラ:GCC on CygWin/言語C++ [4]本日中 困ってます。よろしくです。
31 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:25:23 ] >>29 確保の仕方だけ教えたところで ポインタ理解してなきゃ結局全部聞く羽目になるぞ つか今ソース見たが、確保というより格納の仕方と言ったほうが正しいのかもしれん >>30 アバウトすぎ 前後に問題あればそれも出した方が 問題の意図がわかるかもしれんが
32 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:58:20 ] >>29 Create *Data; Data = (Create *)malloc(sizeof(Create)); for(i=0;;i++){ Data[i].id = ID; ID++; glob_DB[i] = Data[i]; free(Data); } これが変だという事が理解できないと、どこから説明したらいいのかなと思う。 動的に確保するのではなく、固定で大きな配列を用意し、 動くプログラムを書く位の力はあるかい?
33 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:12:36 ] >>32 mallocをループの中に入れた後、stdlib.hをインクルードしたところ警告は消えたのですが、 やはりそんなレベルの問題ではないのでしょうか?
34 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:19:31 ] >>28 ありがとうございます。 以後気をつけます
35 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:29:48 ] >>33 実行してみ? PCが壊れる、ってことはないとは思うが自己責任でw
36 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:38:36 ] 押し売りせずに信頼を得て、油外収益は地域トップクラスです。 油外おいしいです^^
37 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:08:41 ] >>33 >mallocをループの中に入れた後、stdlib.hをインクルードしたところ警告は消えたのですが、 警告が出ているうちは、間違いを指摘してくれているので良いが、 警告が消えたからって、正しく動く訳じゃない。正しいロジックで書いてないと動きません。 createData()を例にとれば、 Data[i].id = ID;←これはまずい。確保した領域は一つしかない。ワープします。 glob_DB[i] = Data[i];←これもまずい(左右とも) free(Data); ←せっかく格納したデータは何処へ行くだろうか? 「添え字を使ってアクセス」が何を意味し、何処を指すのかを理解する必要があるよ。 入力したデータは何処に格納するのか。関数内の一時的格納か、それとも処理終了まで保持するのか。 格納領域はどのタイミングで確保するのか。確保した格納データはどうやって管理するのか。 確保した領域は、どのタイミングで解放するのか。この辺をちゃんと考えてみる必要がある。 動的に領域確保するのが難しいなら、glob_DBで1000件程度配列で確保し、 正常に動くプログラムをまず作ってみると良い。
38 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:13:07 ] CRUD操作の意味がわからん^^
39 名前:デフォルトの名無しさん [2009/05/21(木) 16:18:31 ] 【質問テンプレ】 [1] 授業単元:Cの基礎 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9215.txt [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 一週間 [5] その他の制限: while文かdo-while文を使い、なるべく簡単にお願いします。
40 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:35:59 ] >>39 #include<stdio.h> #include<math.h> int main(void) { double si_1, si, x; printf("実数 x : "); scanf("%lf", &x); si_1=1; do { si=si_1; si_1=(si+x/si)/2; } while(fabs(si_1-si)>=0.00001); printf("sqrt(%f)=%f\n", x, si); return 0; }
41 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:38:20 ] >23 #include <stdio.h> int main() { double sum = 0.0; double e = 0.00001; int x = 1; double a; while (1) { a = 1.0 / x; sum += a; if (a < e) break; x *= 3; } printf("%.15lf\n", sum); return 0; }
42 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 17:35:01 ] >>38 Create Read Update Delete
43 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:41:13 ] よろしくお願いします。 授業単元アルゴリズム実習 osソラリス 言語 c コンパイラ gcc 高さhが2で上底aと下底bが次のような値の台形4つの合計を求めるプログラムをfor文を使って作成せよ。 表示形式 台形(1)a=0、b=2^2、h=2、面積= 台形(2)a=2^2、b=4^2、h=2 面積= 台形(3)a=4^2、b=6^2、h=2 ,面積= 台形(4)a=6^2、b=8^2 h=2 面積= 4つの台形の面積の合計=
44 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:47:27 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9217.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:cc [3.3] 言語:C [4] 期限:[2009年5月22日19:00まで] [5] その他の制限:問題文と共に記述してあります.
45 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:53:23 ] >>43 >>10 >>12 >>13
46 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:06:44 ] >>43 #include <stdio.h> int main(void) { int i, temp, s = 0; for(i=0; i<4; i++) { temp = 4 * i * i + 4 * (i+1) * (i+1); printf("台形(%d)a=%d%s,b=%d^2,h=2,面積=%d\n", i+1, i*2, i?"^2":"", 2*(i+1), temp); s += temp; } printf("4つの台形の面積の合計=%d", s); return 0; }
47 名前:デフォルトの名無しさん [2009/05/21(木) 20:29:37 ] >>45 わかってます。今度のは二乗の計算をしなくてはいけないので。。。
48 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:44:01 ] 表示が違うだけで計算内容は同じだけどな。
49 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:49:13 ] マルチになってしまいますが、後になってこちらのスレの存在に気付いたので 再び質問させていただきます。 以下のコードの流れについて知りたのですがよく分かりません。 行ごとに簡単に解説してくれると助かります。よろしくお願いします。 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { Animations:nil context:nil]; [UIView setAnimationDuration:0.7]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:selfcache:YES]; if ( enabled ) [[UIApplication sharedApplication] sendAction:@selector(buttonPushed:) to:target from:self forEvent:event]; [UIView commitAnimations];
50 名前:デフォルトの名無しさん [2009/05/21(木) 20:53:59 ] >>46 さんありがとうございます。
51 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:58:39 ] >>49 Objective-Cはスレ違い
52 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:09:19 ] >>51 確かにそうなのですが、マイナーなので他に聞く場所がありません。 ここなら分かる方もいるのではないかと思い質問させていただきました。
53 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:17:21 ] >>52 お引き取り下さい
54 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:24:27 ] >>52 Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/l50 スレ立てるまでもない質問はここで 97刷 pc12.2ch.net/test/read.cgi/tech/1240877154/l50
55 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:27:07 ] せめて適当なうpローダーにきちんとインデントを付けたコードをうp してくれればObjective-C/C++でもある程度は答えてくれる奴が 居そうな感じだが読みにくいコードベタ張りは論外。基本的には 専用スレがありそこが過疎ってなければそちらのほうで聞くのが無難
56 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:58:11 ] >>23 をお願いします。
57 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 21:59:17 ] BCDライブラリ書かないと誤差がすごくて・・・
58 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:04:49 ] >>56 >>41
59 名前:デフォルトの名無しさん [2009/05/21(木) 22:13:31 ] [1] 授業単元:情報処理 [2] 問題文(含コード&リンク): (1)キーボードから2整数を読み込んで読み込んだ順に標準出力にそれらの 値の10進数表現をスペース文字で区切って、1行に書き出し改行する。 読み込んだ1番目の整数の値が1000でなければ、次の2整数を読み込み 同様に書き出す。1番目の値が1000のときプログラムの実行を終了する。 このような仕様を満たすプログラムを作成せよ。(do-whileループで作成) (2)キーボードから3整数を読み込み、小さい順に出力するようなプログラム を作成せよ。(目的が達成されればどのようなプログラムでも構わない。) [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:5月22日 13:00まで [5] (2)はなるべく簡単なものでお願いいたします。できたら数パターン 教えてくだされば幸いです。
60 名前:デフォルトの名無しさん [2009/05/21(木) 22:23:49 ] >>22 (・∀・)ニヤァ〜
61 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:39:40 ] >>59 (2) #include <stdio.h> int main(void) { int a, b, c; scanf("%d%d%d", &a, &b, &c); if(a < b) { if(c < a) printf("%d %d %d", c, a, b); else { if(b < c) printf("%d %d %d", a, b, c); else printf("%d %d %d", a, c, b); }} else { if(c < b) printf("%d %d %d", c, b, a); else { if(c < a) printf("%d %d %d", b, c, a); else printf("%d %d %d", b, a, c); }} return 0; }
62 名前:この板でいいの? [2009/05/21(木) 22:39:58 ] プログラミングは全くの初心者(CもJavaもなにも分からない)です。 質問があります。 ある資格試験の自動学習ソフト(将来的には自動学習ホームページ)を 作りたいと思っています。 そのための資料は既にあります。 A4で300頁程度で表、図もあります。 これを、 (1)順々に質問文をユーザに見せてから、回答ボタンをクリックすると答画面を示すモード (2)樹系図的に内容を表示するモード (3)画面の印刷を行うモード を有して学習するソフトを作りたいのですが、どうしたらよいでしょうか? とりあえず、試行的にテキストを貼り付けるだけで、質問画面と回答画面を表示できるソフトを 簡単に作れるようなものはないでしょうか? ソフトを作れる人に作成を依頼するとどのくらい費用はかかるでしょうか? よろしくお願いします。
63 名前: ◆1xScF1fQr2 [2009/05/21(木) 22:51:13 ] [1] 授業単元:C言語応用 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9218.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:2009年05月25日まで。 [5] その他の制限:階乗(n!)の計算とべき乗(xn)の計算には、再帰処理を使用する。 よろしくお願いします。
64 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:08:33 ] >>62 HTML+JavaScriptが一番簡単そう。 そしてもしそうするならスレ違い。
65 名前:123to [2009/05/21(木) 23:10:53 ] はじめたばかりです [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 課題 0〜100の範囲で画面から入力された複数の数値の中で、最大値と最小値を 表示するプログラムを作成する。 ○ソフトウェア構成要求 最大値と最小値はmain関数以外の一つの関数の中で求める(サブルーチン化する)。 ○動作要求仕様 -1が入力された場合は入力の終わりとする。 入力された数値を記憶する配列の要素数は10とし、 10個まで入力された場合は-1を入力されなくても最大値と最小値を出力する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5 [3.3] 言語: C [4] 期限: 2009年5月25日12:00まで [5] その他の制限:できるだけ簡単なもの
66 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:12:35 ] >>63 もしかして、その課題の後に自由課題ある?
67 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:17:52 ] >>62 有料なら考えてもいいが? 問題はどうやって連絡を取るかなんだが。
68 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:20:25 ] >>63 >>63 #include <stdio.h> #include <math.h> #define PI 3.14159 double power(double x, long int n); double sine(double x); long int kaijou(long int n); int main(void){ double sinx,sinf,x=0.0,dif; printf("+-------------------------------------+\n"); printf("| x | sine(x) | sin(x) | dif |\n"); printf("+-------------------------------------+\n"); do{ sinx=sine(x); sinf=sin(x); dif=sinx-sinf; printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif); x+=PI/8; }while(x<2*PI); printf("+-------------------------------------+\n"); }
69 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:21:12 ] long int kaijyou(long int n){ //再帰処理 if(n==0){ return 1.0; } else{ return n*kaijyou(n-1); //再帰処理実行 } } double sine(double x){ long int i, n=5; double ans=0.0; for(i=0;i<n;++i){ ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1); } return ans; }
70 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:22:15 ] dif=sinx-sinf; printf("| %.4lf | % .4lf | % .4lf | %.4lf |\n",x,sinx,sin(x),dif); x+=PI/8; }while(x<2*PI); printf("+-------------------------------------+\n"); } long int kaijyou(long int n){ //再帰処理 if(n==0){ return 1.0; } else{ return n*kaijyou(n-1); //再帰処理実行 } }
71 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:23:11 ] double sine(double x){ long int i, n=5; double ans=0.0; for(i=0;i<n;++i){ ans+=power(-1,i)*power(x,2*i+1)/kaijyou(2*i+1); } return ans; } double power(double x, long int n){ //再帰処理 if(n==0){ return 1.0; } else{ return power(x,n-1)*x; //再帰処理実行 } }
72 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:24:20 ] 度数表示がないからやり直し
73 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:27:13 ] ごめん、微妙に作ったのと違った。
74 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:28:59 ] >>63 #include <stdio.h> #include <math.h> int fac(int i) { return i == 1 ? 1 : i * fac(i-1); } double mypow(double x, int n) { return n == 0 ? 1 : x * mypow(x, n-1); } double sine(double x) { int i, flg = 1; double ret = 0; for(i=0; i<5; i++, flg *= -1) ret += mypow(x, i*2+1) / fac(i*2+1) * flg; return ret; } int main(void) { int i; puts("+----------+----------+----------+----------+----------+"); puts("|x(degree) |x(radian) | sine(x) | sin(x) | dif |"); puts("+----------+----------+----------+----------+----------+"); for(i=0; i<=360; i+=15) { double r = i * M_PI / 180; double s1 = sine(r), s2 = sin(r); printf("|%-10d|%8.4f |%8.4f |%8.4f |%8.4f |\n", i, r, s1, s2, fabs(s1-s2)); } puts("+----------+----------+----------+----------+----------+"); return 0; }
75 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:31:41 ] >>43 // gcc --input-charset=cp932 --exec-charset=cp932 #include <stdio.h> int main() { int i; float daikei[][3] = { 0,2,2, 2,4,2, 4,6,2, 6,8,2, }, menseki, goukei = 0.0; for(i=0; i<sizeof(daikei)/sizeof(daikei[0]); i++) { menseki = (daikei[i][0]*daikei[i][0] + daikei[i][1]*daikei[i][1]) * daikei[i][2] / 2.0f; goukei += menseki; printf("(%d)a=%.0f^2 b=%.0f^2 h=%.0f 面積=%.0f\n", i, daikei[i][0], daikei[i][1], daikei[i][2], menseki); } printf("合計面積=%.0f", goukei); return 0; }
76 名前:デフォルトの名無しさん [2009/05/21(木) 23:40:32 ] >>59 です。 >>61 さん、ありがとうございます。
77 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:41:30 ] >>63 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9219.c ついでに自由課題も。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9220.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9221.c 中部大学工学部情報工学科の岡崎明彦教授の講義ね。ぐぐったらすぐ出てきた。
78 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:46:59 ] >>63 へ >>68->>71 は19年度の同じような課題で教授が殆ど作ったやつ。
79 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:50:24 ] >>77 ほんとだC言語応用 マクローリン展開でみつかった。 意外と簡単に見付かるんだね。
80 名前:79 mailto:sage [2009/05/21(木) 23:58:13 ] でも年代が違う問題が出てくるんやね。
81 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:00:12 ] スレチだが マクローリン展開って2radぐらいまでならそんなに誤差無いんだな 意外だった
82 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:09:13 ] 膜ろりン展開
83 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:10:09 ] >>79 「sinxの近似値を5項程度によるマクローリン展開で求める関数」でぐぐったら 2つめに今年のが出てきた
84 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:13:21 ] >>81 浮動小数点は積み残し誤差があるから計算して出たそれぞれの 項をソートして小さい方から順に足した方が誤差が少ないぞ やってみ
85 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:16:01 ] そんな手間かけるならsin(x)使うわ 欲しいのは高速動作だ
86 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:19:28 ] いやそりゃそうだが x86FPUにもFSINあるしな ここは宿題スレだからマクローリン展開をコンピューターに やらせてみましょうって事なんじゃない?
87 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:26:38 ] >>63 は>>74 と>>77 どっちを使うんだろうね。 自分としては>>77 の方が分かりやすいけど。
88 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 02:37:41 ] >>62 お手軽にするならゲームツクール系でいいと思う
89 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 02:53:17 ] >>87 メイン関数のループが迂遠な感じだな、77のは。
90 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 03:02:10 ] >>65 >できるだけ簡単なもの <それなりに> #include <stdio.h> void max_min(int *data, int num, int *max, int *min){ int lmax = 0, lmin = 100; for(num--; num >= 0; num--) { if(data[num] > lmax) lmax = data[num]; if(data[num] < lmin) lmin = data[num]; } *max = lmax; *min = lmin; } int main() { int i, max, min, data[10]; for(i=0; i<10; i++) { printf("%d:",i+1); if(scanf("%d", &data[i]) != 1) { scanf("%*s"); i--; continue; } if(data[i] == -1) break; if(data[i] < 0 || data[i] > 100) i--; } max_min(data, i, &max, &min); printf("max=%d min=%d\n", max, min); return 0; }
91 名前:kenco [2009/05/22(金) 03:06:33 ] [1] 授業単元:数値計算法 [2] 問題文(含コード&リンク):非線型方程式 f(x)=x^n-a=0 を考える。nは学生番号の下一桁の数字に2を加えたもの。aは誕生日の西暦の下2桁とする。 f(x)=0の実数解の近似値xを以下の条件を満足させる精度でニュートン法を用いて求めよ。 |f(x)-0|<1.0*10^(-8) [3] 環境 [3.1] OS: Windows vista [3.2] コンパイラ名とバージョン: C-Compiler [3.3] 言語: どちらでも可 [4] 期限: 23日まで [5] その他の制限: なるべく簡単なもので作ってください。
92 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 03:30:54 ] >>44 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9222.txt
93 名前:デフォルトの名無しさん [2009/05/22(金) 04:21:56 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 行列A={{0,1,2},{3,4,5},{6,7,8}} 行列B={{100,200,300},{400,500,600},{700,800,900}} のとき、A+Bを表示するプログラムを作れ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月25日 [5] その他の制限: 初心者に分かりやすいようにお願いします
94 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 04:59:18 ] >>91 #define N (8.0 + 2.0) #define A 82.0 #define EPS 1e-08 #define LIMIT 50 /* 計算打ち切り回数 */ #include <stdio.h> #include <math.h> double f(double x) { return pow(x, N) - A; } double g(double x) { return N * pow(x, N - 1.0); } int main(void) { double x = 1.0, dx; int i; for (i = 0; i < LIMIT; i++) { dx = x; x -= f(x) / g(x); if (fabs(x - dx) < fabs(dx) * EPS) { printf("解 = %.8f\n", x); break; } } if (i == LIMIT) printf("収束しませんでした\n"); return 0; }
95 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 05:22:17 ] >>93 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9223.txt
96 名前:44 mailto:sage [2009/05/22(金) 10:16:33 ] >>92 ありがとうございます。
97 名前:デフォルトの名無しさん [2009/05/22(金) 14:46:03 ] [1] 授業単元:C言語プログラミング [2] 問題文:10以上の種類の品物(果物など)を、その数が多い順にソートするプログラムを 「バブルソート」を用いて作成せよ。 ソート結果の表示にはどの品物が何個かも表示させること。 品物の種類・個数は任意とするが、なるべくばらけさせること。 品物が同じ個数だった場合の順番は特に指定しない。 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語:C [4] 期限:2009/5/25まで [5] その他の制限:特に無し
98 名前:デフォルトの名無しさん [2009/05/22(金) 16:04:42 ] >>97 #include <stdio.h> #include <stdlib.h> #include <time.h> #define numberof(s) (sizeof(s) / sizeof(s[0])) typedef struct { char *name; int number;} ITEM; ITEM item[] = { {"めんたい味", 0},{"コーンポタージュ味", 0},{"なっとう味", 0},{"チーズ味", 0},{"テリヤキバーガー味", 0}, {"サラミ味", 0},{"やさいサラダ味", 0},{"チキンカレー味", 0},{"とんかつソース味", 0},{"エビマヨネーズ味", 0}, {"たこ焼味", 0},{"チョコレート味", 0},{"キャラメル味", 0},{"ココア味", 0},{"ぶたキムチ味", 0},{"牛タン塩味", 0} }; int main() { int i, j; srand(time(NULL)); for (i = 0; i < numberof(item); i++) { item[i].number = (int)((rand() / ((double)RAND_MAX+1.0f)) * 99) + 1; printf("%s, %d\n",item[i].name,item[i].number);} printf("---------------------------------------------------\n"); for (i = 0; i < numberof(item) - 1; i++) { for (j = numberof(item) - 1; j > i; j--) { if (item[j].number > item[j - 1].number) {ITEM tmp = item[j]; item[j] = item[j - 1]; item[j - 1] = tmp;} } } for (i = 0; i < numberof(item); i++) printf("%s, %d\n",item[i].name,item[i].number); return 0; }
99 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:57:00 ] >>98 うまい棒?
100 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:30:11 ] 10種類以上の果物名、思い付かん
101 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:35:54 ] >>100 リンゴの品種名だけでおk
102 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 20:12:26 ] アルプス乙女,ぐんま名月,ゴールデンデリシャス,シナノスイート,ジョナゴールド, ジョナゴールド,つがる,デリシャス,ふじ,旭,王林,紅玉,国光,秋映,祝, 世界一,千秋,北斗,陽光,陸奥 20種類、ごく一部を除いて、どんなリンゴかはわからないw
103 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 20:32:15 ] ジョナゴールドが2個あるんすけど。
104 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:00:02 ] >ジョナゴールドが2個あるんすけど。 見逃した。済まない。 ー1 +7 さんさ,高嶺,スターキングデリシャス,ハックナイン,新世界,藤牧,シナノレッド
105 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:27:11 ] クイックソートなんですが
106 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:30:45 ] >>105 は?
107 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:36:31 ] >>105 依頼はバブルソートとあるが、 >>98 はクイックソートなのか?
108 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:37:18 ] ご参考に ttp://www.bohyoh.com/CandCPP/C/Library/qsort.html
109 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:25:48 ] >>98 はバブルソートじゃないか 何を寝ぼけた事を言ってんの?
110 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:06:33 ] [1] 授業単元: ヒューマンインターフェースとプログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9224.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Visual C++ 2008 Express Edition [3.3] 言語: (C/C++/どちらでも可 のいずれか) C++ [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 5/25 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) なし よろしくおねがいします。具体的にあげられてる修正ポイントだけでもかまいません。
111 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:15:47 ] 猫でもわかるキー入力www
112 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:20:32 ] >>110 気づいた一点だけ。 そこまでコンソールのgetsにこだわる必要は無いと思う。 たとえばトリガーキーを押すとモードメニューに入って、モードを選んで、開始。 そんな感じにならないかねぇ。 MYGETSがちょっと不細工に感じるのはまちがってるかなぁ。。。 あとプロポーショナルフォントを使うのは筋違いだと思う。 こんなとこかな。
113 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:03:44 ] MyGetsに入る前にその前の入力メッセージは棄てなあかんね。 WM_DESTROYでfpのnullチェックしてないので、モードに入る前に終了すると例外。 WM_QUITを受け取ったGetMessageは0を返すので、MyGetsはTRUEを返し、再びメッセージ待機(Windowがないので終われない)。 基本的に待機するような処理は別スレッドに作るべき。 また待機スレッドのSleepは本物のSleepではなくEventをWaitし、終了要求などではそのEventをシグナル状態にする。 じゃないとSleepが完了するまで終われなくなる。
114 名前:113 mailto:sage [2009/05/23(土) 00:08:34 ] >MyGetsに入る前にその前の入力メッセージは棄てなあかんね。 ちょっと書き方おかしかったかも。要は反応待ちに入る以前のキー押下は棄てないかんってこと。
115 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:24:38 ] [1] 授業単元: [2] 問題文 今テキストファイルAが1つとBが10個あるとする。 Aには haru natsu aki fuyu とかかれ Bにはそれぞれのテキストに以下のような文字列がかかれている wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo iouaiojoiajwioejio121j3oi1j2iojlajia これらをまとめ テキストCに aki[tab]wheiowfjhoiejwio2121oij3io12ji2oj3io2j3oijo[改行] natsu[tab]iouaiojoiajwioejio121j3oi1j2iojlajia[改行] になるようなプログラムをかけ ただし。Bのそれぞれのテキストは非常に長くても大丈夫にせよ。 [3] 環境 [3.1] OS:linux [3.2] gcc [3.3 C [4] 期限: 5/23
116 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:27:50 ] >>115 問題文が意味不明 まとめ方のルールを明確にしないと誰も解けないよ
117 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:46:41 ] テキストCに haru\tBのテキスト1つ目の中身\n natsu\tBのテキスト2つ目の中身\n aki\tBのテキスト3つ目の中身\n のように書き込んでほしいのですが。 Bのテキストが非常に長いんです。1テキストファイル20kバイトくらいでして
118 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:55:31 ] >>117 Bのテキストファイルが10個ある、と言うことなら、B01〜B10ってしていいかい? Aのテキスト1行目と、B01の全体をタブで繋いで1行にし、Cに出力。 Aのテキスト2行目と、B02の全体をタブで繋いで1行にし、Cに追記。 これをB10まで繰り返す。これであってる?
119 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:59:32 ] 要はBの1行がバッファサイズをオーバーするくらい長いってことじゃん?
120 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:02:08 ] テキストのサイズはそれほど重要ではないよ。 要は、何をして欲しいかを明確にする事。
121 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:05:28 ] >>115 後、期限が今日なら、締切時間も書いておいた方が良いかな。
122 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:12:37 ] >>117 だ〜か〜ら〜、〜のようにっていう表現は問題文にならないって。 テキストAとやらには4行しかないのにテキストBとやらは延べ10行あるんだろ? 5行目以降はどう纏めるんだい?
123 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:16:31 ] >>110 精度を上げるには「timeBeginPeriod〜timeEndPeriod」や「QueryPerformanceCounter」を使う手がある。 ビジーループにしてGetAsyncKeyStateでキー状態を検知すればメッセージ処理のオーバーヘッドは避けられると思う。 スレッドの優先度を上げるという方法もあるといえばある。
124 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:18:33 ] >>118 そうです。 Bのテキストは長いんですけど1行です。 一番最後に改行がはいるだけです。
125 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:25:41 ] >>124 ファイル名は適当に決めておいていいかい? >>122 の指摘する危惧だけど、Aには10行データがある前提でいいかい?
126 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:45:56 ] Aには4行としまして Bは1行に10行分くらい文字列がならんでるとおもってください。 で、Bは4ファイルあるとすればちょうどいいかと。
127 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:53:11 ] >>126 なんというか、まあ、久しぶりに絶句させてもらったよ。 課題が出されたんだよな? それを一字一句変えずに、「全部」書けよ。 お前の頭の中ではちょうどいいかも知れんが、 お前が今までのやり取りではっきりさせたのは ファイルAとやらが4行あるってことだけだぞ?
128 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:55:02 ] なんか杜撰な課題だな。ちゃんと投げられないだけか?
129 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:56:48 ] Bのテキストファイルが普通にコピーできないほどの長さだから 説明しにくい。
130 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:58:53 ] Bの長さはどうとにでもなってさっきから言ってるんだからから、 そこを無視して説明しろよ氏ね。
131 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:59:10 ] 20KBで?
132 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:03:59 ] >>129 は?お前の説明は要らない。 課題をそのまま書き出せよ。 あとな、1行の長さなんてどうだって良いんだよ。 「一行の長さは不定です」 「あ、っそ」 で済むことなんだよ。 重要なのは、 「プログラムの実行前にどんなデータがあって」 「プログラムの実行後にどんなデータがあるか」 ってことなんだよ。 ファイルAには>>115 にあるように4行分のデータがある。 これは分かった。 んでファイルBってのはなんだよ?
133 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:12:12 ] 1行にコピーできないくらいの長さの文字列がある
134 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:12:46 ] ダメだこりゃ
135 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:17:53 ] 何だ、Bは4つになったのかw >>126 1行に10行分文字列があるって意味がわからんが。 2000文字位あると勝手に理解するけどいいね。 ソースをコンパイルして実行する環境はあるのか?
136 名前:132 mailto:sage [2009/05/23(土) 02:19:24 ] >>134 俺は>>133 は>>115 でないって信じたいw >>133 とりあえず、問題を明らかにしようか。 ファイルBは何個か存在する。 だからここでは後ろに番号をつけるとする。 例えば、ファイルBが3つある場合、 ファイルBのそれぞれをB1,B2,B3としよう。 そして、ファイルBの行番号をアンダースコアの後に数字をつけることで表そう。 例えばB1の1行目はB1_1、2行目はB1_2となる。 ついでにファイルAの一行目はA_1と表すようにしよう。 んで、ここからが本題。 ファイルCを作るにあたって、 A_1と同じ行になるファイルBの行は何か?選択肢から選べ 選択肢1: A_1 B1_1 A_1 B2_1 A_1 B3_1 ・・・ A_1 Bi_1 選択肢2: A_1 B1_1 A_1 B1_2 A_1 B1_3 ・・・ A_1 B1_j 選択肢3:上二つは違います。
137 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:20:33 ] ツンデレだねぇ。なんか後出しがあると思うけど
138 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:26:57 ] >>115 今の内に課題の条件をキチンと説明しておかないと 誰かが早とちりしてプログラムを書いてしまって後出しで 条件を付けても誰も相手にしてくれないかもしれんぞ 今までそういう事が何回もあった 後出し条件というのは相当嫌われる
139 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:28:31 ] Bはこういうファイルです kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9225.txt
140 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:30:44 ] 短いファイルでこれくらいです これが60kバイトくらいです 最大で778kバイトくらいまで
141 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:34:18 ] >>140 だ〜か〜ら、長さはどうだっていい。 ファイルBは全部でいくつある? ファイルB全ては1行しかないんだな?
142 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:34:52 ] そうです。
143 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:36:16 ] 2行目にも答えろよwwwwwwww
144 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:37:17 ] っていうか、正確に言うとAの行数とBのファイル数は一致してるのか? 一致してるなら可変か固定か? 固定なら何個だ?
145 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:38:15 ] すいませんけど >>124 >>126
146 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:40:17 ] これって釣りだよね? と、思いたい。割と本気で。
147 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:40:56 ] もういいわ
148 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:43:13 ] >>139 Bが10個あると書いてあるのになんで一つだけなんだ? 10個ともまとめて貼れよ Aはわかったらか
149 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:49:14 ] エスパーするとAの行数4つでBのファイル数が4つ。 Bは全て1行(改行一つ)だが、>>115 主観で言うと通常の1行の10倍あるよ。 まぁ、エスパーするだけして違ってたらイヤだから手はつけんが。
150 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:52:37 ] >>145 これを試してみてくれ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9226.txt ファイル名は"A","B01"〜"B04","C"としているが、適切な名前にするか、 実行時に対象ファイルをその名前にしてくれ。 で、要求とどう違うか書いてくれ。
151 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:57:17 ] すいません。Bを最後読み込み表示してAの単語をいれてを4回まわしたらいいだけでしたね
152 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:59:48 ] >>151 落ち着いて、相手に分かる言葉で頼む。
153 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:04:06 ] >>115 1つだけ聞かせてくれ。 これは、学校の講義で宿題として出されたものなのか? 自分がこういうことをやりたいだけなのか?
154 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:04:28 ] Aの単語表示\tBのファイルの全ての文字を読み込んで表示 を4回繰り返してテキストにとる
155 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:07:07 ] つまりBは10個あると書いてあるけど一個しかないんだね
156 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:14:53 ] >>145 もうあれだ、system関数でシェルスクリプト呼んじゃえ。 cat B0[1-4] | paste A - > C でお望みのものができるから。
157 名前:デフォルトの名無しさん [2009/05/23(土) 04:03:23 ] >>75 さんありがとうございます。
158 名前:デフォルトの名無しさん [2009/05/23(土) 04:06:05 ] >>95 ありがとうございました この問題もわからないので教えてください [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): (1)[0,1]の一様乱数x,yを発生させるプログラムを作れ (2)[0,1]の一様乱数x,yを発生させ、x^2+y^2<1となる確立を求めろ (一様乱数を発生させる試行を繰り返し、(上式を満たす回数)/(試行回数)から確立を求める) またπの数値を求めろ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月25日 宜しくお願いします
159 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 08:37:50 ] >>158 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9227.txt 標準関数std::rand()はやや性能が悪いため コンピュータ・アルゴリズム事典(奥村晴彦著)より乱数の改良を 行うようにした
160 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:02:48 ] >>059 (1) 提出期限過ぎてるけど、2整数か?の突っ込みは無しで。 #include <stdio.h> int main() { int n, c; printf("2進数を1つ以上入力してください:最後は1000\n"); do { for(n = 0; ;) { c = getchar(); if (c == '0' || c == '1') { n <<= 1; n |= (c == '1') ? 1 : 0; /* 1/0 を入力 */ } else if (c == EOF) return 1; else break; } printf("%d ", n); if(c == '\n') puts(""); } while(n != 0x8); /* 1000 (binary) */ return 0; }
161 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:13:32 ] 問題を誤読してる気がする。
162 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:19:46 ] [1] 授業単元: 情報リテラシー [2] 問題文: 10から110までの乱数を100個作り、 同時ににアスキーコードで文字に変換して小文字だけを大文字にせよ [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: 富士通 [3.3] 言語:C言語 [4] 期限:[2009年05月26日h:16:30まで] [5] その他の制限: アスキーコードやら何やら今一良く分かりません。 よろしくお願いします。
163 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:44:55 ] >>162 珍しいコンパイラwww #include<stdio.h> #include<stdlib.h> #include<ctype.h> int main(void) { int i, x; int max=110, min=10; for(i=0;i<100;i++) { x=rand()%(max-min+1)+min; if(islower(x)) x=toupper(x); printf("%c", x); } return 0; }
164 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 12:53:40 ] 京大?
165 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:00:49 ] Faithless C compiler とか >>163 種蒔かんで良いのか?
166 名前:110 mailto:sage [2009/05/23(土) 13:05:38 ] >>112 >>113 >>123 アドバイスありがとうございます。 課題中で具体的に示されてある修正点だけでいいので、どなたかプログラムを修正してもらえないでしょうか? 提出期限は明後日なのですが、実際にプログラムを動かして色々と考察を書かないといけないので・・ よろしくお願いしますm( _ _)m
167 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:20:58 ] 後だしでなく必ず勝つ。 x=rand()/(RAND_MAX+1.0)*(max-min+1)+min;
168 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:07:20 ] >>151 // Usage: my_paste a1 b1 b2 b3 b4 ... > c1 // a: 行数はb(max)行 bの数と一致しない場合は途中まで処理する。 // b: 行数は1行のみ。改行で終わる。サイズは大きくても良い。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { FILE *inA, *inB, *outC = stdout; char bufA[80]; // ファイルA読込用(1行を読込めるサイズが必要) char bufB[256]; // ファイルB読込用(複数回に分けて読み込むので適当で良い) int i, readsize; if(argc < 3) return -1; inA = fopen(argv[1], "r"); if (inA == NULL) { fprintf(stderr, "Can't open %s\n", argv[1]); exit(1); } for (i = 0; i < argc-2; i++) { inB = fopen(argv[i+2], "r"); if (inB == NULL) { fprintf(stderr, "Can't open %s\n", argv[i+2]); break; } // Aを1行読込み、改行を取り除き、末尾にTabをつけてCに出力 if(fgets(bufA, sizeof(bufA), inA) == NULL) { fclose(inB); break; } bufA[strlen(bufA) - 1] = 0; fprintf(outC, "%s\t", bufA); // Bをバッファサイズ単位で読込み、Cに追記する(必要な回数繰返す) while ((readsize = fread(bufB, 1, sizeof(bufB), inB)) > 0) { fwrite(bufB, 1, readsize, outC); } fclose(inB); } fclose(inA); return 0; }
169 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:18:34 ] [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9228.c [3] 環境 [3.1] OS: (Windows/Linux/等々) linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [5] その他の制限 問題文のプログラムはls -aslを実行するプログラムである。これを参考にオプション -a -F -l -dを引数とした場合に lsコマンドと同じ動作をするようなプログラムmylsを作れ。 ・statシステムコールではなくlstatシステムコールを用いる ・オプションは-aといった引数に続けて指定、-aFl、-laといった複数オプションにも順不同に対応 ・myls - aといった場合にはUsageを表示する ・UID、GIDは数字のままでいい オプション指定にgetopt関数を使って while((option = getopt(argc, argv, "aFld")) != -1){ switch (option){ case... って書こうとしてるんだけど、case 'a':を書こうとした時に下にあるvoid関数のどの部分で ls -aと同じ動作をしているのかが分からない。どなたかお願いします。
170 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 17:40:37 ] >>169 Part125_994 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9210.txt
171 名前:162 mailto:sage [2009/05/23(土) 17:48:45 ] >>163 ありがとうございます。
172 名前:デフォルトの名無しさん [2009/05/23(土) 18:58:19 ] 1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9229.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月25日 [5] その他の制限:条件の判定にif(1.0!=(1.0+e))のようなif文を用いる eはεのこと よろしくお願いします。
173 名前:デフォルトの名無しさん [2009/05/23(土) 19:13:25 ] [1]授業単元:アルゴリズム [2]問題文(含コード&リンク) 問7-6 12x12のセルを持つ迷路がある。 スタートからゴールまでの最短経路を探したい。 (1)フローチャートを書け。 (2)実際に最短経路を調べ、表示するプログラムを書け。 ヒント 迷路は二次元配列で出来ている。 スタートやゴールのセル、壁のセルは最初は分からないようになっている。 手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。 [3]:環境 [3.1]OS:XPsp2 [3.2]コンパイラ名とバージョン:gcc [3.3]言語:C [4]期限:5月26日8:00 [5]その他の制限:ソースコードにはしっかりコメントを記述すること、と言われました。 また迷路を生成するプログラムは無くても良いそうです。 C言語に関しては配列を学んだ所までです。(構造体やポインタはまだやってません。) 最悪フローチャートだけでも構いません。よろしくお願いします。
174 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:19:43 ] 迷路探査は、ネット調べればソースごとあるぞ。
175 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:20:11 ] >>172 Part125_146 #include <stdio.h> #include <float.h> #include <math.h> int main() { double e1, e2; unsigned int n; e1 = 1.0; printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON); for(n=1; n<4294967295u; n++) { e2 = e1 / 10.0; if(1.0 == (1.0 + e2)) break; e1 = e2; } printf("%.15e %d\n", e1, n-1); }
176 名前:173 [2009/05/23(土) 19:35:12 ] >>174 言葉足らずで申し訳ありません…… 迷路探索のソースはいくつか探すことが出来たのですが、 更に最短経路を探すものが見つからなくて今回お願いしました……
177 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:45:01 ] >>176 普通の迷路なら経路はただ一つなんじゃない? 経路が複数あるって、巡回路の最適解を求めるような問題?
178 名前:173 [2009/05/23(土) 19:57:20 ] >>177 上手く言えませんが壁の配置によっては経路が複数あります 袋小路とかも含めて総当たりで経路を調べる、のだとしたら巡回路の問題なのかもしれません すみません、あまりよくわかってません……
179 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:01:59 ] >>173 再起関数で、深さをカウントしていって、144段(縦*横)以上になったら打ち切れば良いよ。 で手数をへらして検索。
180 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:48:53 ] >>173 最短経路が必要な場合は、2DRPGの最短移動アルゴリズムを使えばいいよ。 12x12の配列Aをワークとして用意する。型はintでいいや。 Aはすべて-1で初期化しておく。 まずスタート地点の決定。これは総当たりだから省略。 現在の探索深度を示すワーク int depth を用意して0に初期化する。 さて探索だけど、 1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。 2.Aを全探索して、値がdepthになっているものがあれば、 その上下左右(斜めも移動できるなら斜めも)に移動可能かどうかを 調べる。移動可能で、かつその位置に対応するAが-1なら、その位置に depth+1を書き込む。 移動可能な位置がゴールなら終了。4へ。 3.A全体を操作し終わるまで調べて、ひとつもdepthがなければ終了。ゴールには到達できない。 1つでもdepthがあれば、++depthして、2を繰り返す。 4.ここからが最短経路探索。 まずゴールには到達しているから、ゴールのdepthは分かってる。 そこから 上下左右のAの値が depth-1 になっている位置が最短経路。 複数ある場合の処理は好きなようにすればいいが、今回は単純に最初に みつかった場所へ移動すればいいだろう。 5.これを繰り返してスタートに到達するまで続ける。なおスタートには必ず到達できる。
181 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:51:41 ] >>180 すまん ×1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。 ○1.スタート地点に対応するAに0を代入する。
182 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:55:26 ] ちなみに医学部の卒業研究見学したけど、怖かった。 犬を生きたまま仰向けで四肢を固定し、毛を剃って電気メスで腹を切る。 肋骨をノコギリで切って、心臓にいろいろな電気信号を与えて生体の反応を調べる。 もちろん全身麻酔はしてるけど、生体の反応を損ねないようにギリギリの量にしてるから、ピクピク動いてた。
183 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:12:16 ] >>179 >>173 >手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。 を満たせなくね?
184 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:21:39 ] スタート地点も探索で見つけないといけない? 予め指定がないと、何処から始めたら良いものやら。
185 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:34:53 ] 多分出題者が間違ってるんだろうが、バックトレースじゃなくてバックトラックだろうな。
186 名前:デフォルトの名無しさん [2009/05/23(土) 21:35:20 ] 流石にスタート地点は総当たりじゃないかなあ そうでなかったらうーん
187 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:53:30 ] >>173 やってみた 基本的に >>180 の内容 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9230.c
188 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 22:19:36 ] >>187 「構造体やポインタはやってない」の制限にひっかかってるよw
189 名前:185 mailto:sage [2009/05/23(土) 22:22:45 ] ごめん。オレが勘違いしてたようだ。 バックトレースって、ゴールから逆にたどるって意味だなきっと。 >>180 のやり方で良さそうだね。
190 名前:187 mailto:sage [2009/05/23(土) 22:24:36 ] >>173 >>188 の指摘を受けて >>187 の修正版 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9231.c
191 名前:172 mailto:sage [2009/05/24(日) 00:24:38 ] >>175 ありがとうございました
192 名前:175 mailto:sage [2009/05/24(日) 01:02:49 ] >>172 間違い。1.0!=1.0+εとなる最小のεではなかった。 #include <stdio.h> #include <float.h> #include <math.h> int main() { double e1, e2; unsigned int n; e1 = DBL_MIN; printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON); for(n=1; n<4294967295u; n++) { e2 = e1 * 10; if(1.0 != (1.0 + e2)) break; e1 = e2; } printf("%.15e %d\n", e1, n-1); }
193 名前:172 mailto:sage [2009/05/24(日) 11:56:33 ] >>175 >>192 訂正ありがとうございます
194 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:51:50 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9232.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:visual studio [3.3] 言語:C++ [4] 期限: 5月26日朝 [5] その他の制限:よろしくおねがいします
195 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:46:05 ] >>170 ありがとうございます。
196 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:44:53 ] >>194 なんでうpろだ使ったんだwwwww
197 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:57:13 ] wwwwwww うけたwwwww
198 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:51:42 ] 一行伝えるのに資源使いすぎw
199 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:47:24 ] 宿題スレで分岐限定法の課題はあったでしょうか? あったのであれば、教えてもらいたいです。
200 名前:194 の心の声 mailto:sage [2009/05/24(日) 19:38:49 ] >>196 ろだにあげておくとweb検索で引っかかりにくいし、 どういう問題を依頼したかスレのログに残らないから。 そんな事も分からないのに問題解けるのかよw
201 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:41:44 ] [1] 授業単元:プログラミング演習2 [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9233.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 5/26日午前9時 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ポインタ配列まで習ってます PCで規制が掛かっていたので携帯からの書き込みで申し訳ありません
202 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:57:33 ] >>201 課題1 my_sort_strings()は、どうやって並べ替える文字列を取得すれば良いですか?
203 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:08:03 ] 引数を何にするのかも問題のうちだろ、jk
204 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:16:14 ] >>203 並べ替えの対象となるポインタ配列はmainのローカル変数 my_sort_strings()は引数なし
205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:19:37 ] >>204 なんでそうなるんだ? > 課題1 > 文字配列のソートを行って出力する以下のプログラムを完成させよ > ただし、my_sort_stringsはポインタ配列とそのよう素数を因数として、 > 登録されている文字配列を昇順に並べ替える関数である。 因数は引数の間違いで 関数プロトタイプはこうなるだろ void my_sort_strings(char **p,int n);
206 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:20:25 ] アホか、問題文では省略されてる引数を補って書くんだよw
207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:21:23 ] わかるとは思うが206は204あてな
208 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:28:14 ] プロトタイプまで書かれていても、それを書き換えても良いのかね? 私なら、まず確認のためにどうするか聞くが。
209 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:38:21 ] そんなことより課題2を読む限り 課題1は先頭の一文字だけでソートするべきなのか?
210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:39:24 ] みたいだね。 2見る前に書いたらmin_index()がまんま2の仕様になってたw
211 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:02 ] C++始めたばかりのド素人なんですが質問させてください。 「数直線上で4つの整数を入力して二種類の区画を指定し、その区画が重なるか否かを 判定するプログラム」 【出力結果例 区画A:2 5 区画B:1 3 重なる 】 となるプログラムを作成してみたんですが、↓のでいいでしょうか? 正確な問題文や細かい所は都合により今は見れないので、不明瞭な点もあるかと思いますが、 よければ添削お願いします。あと、使うのはIf文のみでお願いします。
212 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:47 ] #include <iostream> using namespace std; int main() { int x1,x2,x3,x4; cout << "区画A:”; cin >> x1 >> x2; cout <<"区画B:”; cin >> x3 >> x4; If(x4<x1 && x3<x1 && x4<x2 && x3<x2){ cout<<"重ならない”<<endl; If(x2<x3 && x1<x3 && x2<x4 && x1<x4){ cout<<"重ならない”<<endl; } else{ cout<<"重なる”<<endl; } return 0; }
213 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:40:57 ] テンプレに沿っていないので正規の質問とはみなされていない故 オブジェクション。 これは断じてC言語やC++言語の問題ぢゃなく、論理(ロジック) の問題。
214 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:51:31 ] If文は使えないな
215 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:53:12 ] 失礼しました。 授業単元:基本プログラミング 問題文:>>211 OS:Windows コンパイラ名:g++ 言語:C++ 期限:明日の午後6時まで その他の制限:If文のみ使用 です! ロジックも含めて、文法が合ってるかや無駄な部分がないかなどの意見も頂けたらと思い 質問させて頂きました、スレ違いでしたら申し訳ないありませんでしたorz
216 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:57:58 ] 1の右端が2の左端より大きくて1の左端が2の右端より小さいとき重なる
217 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:13:18 ] >>216 の言うとおり、重なるときを考えた方がわかりやすい あと、本当にx1<x2,x3<x4になってるか入力値のチェックも欲しい
218 名前:211 mailto:sage [2009/05/24(日) 22:30:14 ] >>216 >>217 なるほど… そっちのやり方も今試してみたんですが、x1x2x3x4の値はそれぞれ自由なので、 例えば出力結果 区画A:15 6 区画B:7 −8 重なる にもなるようにしないといけないので、整数の入力値の場合分けがかなり面倒になって プログラムが>>211 より長くなってしまうかなと思ってるんんですがどうでしょう… といっても、>>211 のプログラムとロジックで矛盾や穴などが無いかも自分では自信が無いのですが… なにぶん今はプログラムを実行できる環境にいないので机上の空論状態なんですorz
219 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:36:28 ] >>211 区間の両端の数値は区間の中なのか外なのかが決まってないと 区間A:1 4 区間B:4 6 のとき重なっていると見なすかどうかが決められない。 区間A:1 1 区間B:1 6 も同様。両端の値は区間の中なの?外なの?
220 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:38:07 ] >>219 >>212 だとどちらも重なるだろ
221 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:41:38 ] >>218 x1,x2とx3,x4をそれぞれ小さい順に並べ替える if ((x3 < x1 && x1 < x4 || x3 < x2 && x2 < x4) || (x1 < x3 && x3 < x2 || x1 < x4 && x4 < x2)) { 重なっている }
222 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:46:00 ] >>218 先に大小みて入れ替えるほうが簡潔でわかりやすいと思うが if(x1 > x2) { int temp = x1; x1 = x2; x2 = temp;} if(x3 > x4) { int temp = x3; x3 = x4; x4 = temp;} if(x1 < x4 && x2 > x3) cout << "重なる"; else cout << "重ならない";
223 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:51:40 ] >>219 あ、言葉足らずでごめんなさい、端が点と点で重なってる場合も重なってるとみなされます >>221 おお、なるほど それだとif文も一つで済んでいいですね! 参考になりました、ありがとうございます!
224 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:53 ] >>222 ごめんなさい、まだ授業でtempを習ってないもので… でも後学のためになりました、ありがとうございます
225 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:56 ] すべての数が不一致であることを前提とする。4つの数で 最大の元が属する区画名をA,最小の元が属する区画名をBとする。 A=Bの時は重なる A<>Bの場合、区画Aで4数最大のものでないものをy 区画Bの元で4数最小でないものをzとする。 重なるのはy<zの場合のみ 上のことをコーディングすれば良いんぢゃ? (変数は常に値渡しされるとは限らないから関数内で 勝手に変更することはC++では許されない。念の為)
226 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:01:01 ] >>220 >>211 数値の型がわかんなかったのでテンプレで。数値の入力部分は好きにどうぞ。 #include <iostream> template <class T> class Range { public: Range() {} Range(const T& v0, const T& v1) { create(v0, v1); } Range(const Range<T>& s) { *this = s; } virtual ~Range() {} const Range<T>& operator=(const Range<T>& s) { min_ = s.min_; max_ = s.max_; return *this; } void create(const T& v0, const T& v1) { if(v0 < v1) { min_ = v0; max_ = v1; } else { min_ = v1; max_ = v0; } } bool isIntersect(const Range<T>& s) const { if(min_ <= s.min_) { return max_ >= s.min_; // 接するのも交わりと見なす //return max_ > s.min_; // 接するものは交わりとは見なさない } else { return s.isIntersect(*this); } } private: T min_; T max_; }; int main() { Range<int> r0(2,5); Range<int> r1(1,3); if(r0.isIntersect(r1)) { cout << "重なる" << endl; } else { cout << "重ならない" << endl; } }
227 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:04:34 ] 沢山のアドバイスありがとうございました! 色々と参考になりました お陰様でいっぱしの形になって提出できそうです これからも精進します(`・ω・´)
228 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:07:15 ] >>221 >>222 うっ、if文のみ使用って、判定にswitchとかを使うなという意味じゃないのか・・・ ごめん。
229 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:09:15 ] >>212 == >>216 で合ってる。医女
230 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:18:47 ] >>201 min_index() を使ってない my_strcmp() の使い方が分からなかったので strcmp() と同じだと仮定 課題1 void my_sort_strings(char **p,int n) { int i, j; for(i=0;i<n;i++) { for(j=0;j+1<n-i;j++) { if(*p[j]>*p[j+1]) swap_strings(p, j, j+1); } } } 課題2 void lexicograhic_sort(char **p,int n) { int i, j; for(i=0;i<n;i++) { for(j=0;j+1<n-i;j++) { if(my_strcmp(p[j], p[j+1])>0) swap_strings(p, j, j+1); } } }
231 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:09:02 ] 自由課題:可憐な カレン ダーを作ってくれ
232 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:12:14 ] 【質問テンプレ】 [1] テキストファイル [2]Write a program to parse words onto separate lines; that is, locate and write each word to its own line.(課題文は英文で与えられている) [3] 環境 [3.1] OSWindows [3.2]VisualC++ [3.3] 言語:C [4] 期限: (2009年5月26日9:30) [5] 制限はなし
233 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:26:18 ] >>232 合ってるかどうか分からんけど #include<stdio.h> int main(void){ char buf[100+1]; while(scanf("%100s", buf)==1){ puts(buf); } return 0; }
234 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:42:40 ] >>232 に追加 テキストファイルを作成する必要がある。
235 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:56:36 ] 1111 aaaa ddd dddd-dfgg ddddd 9999. 2222 dddd ggg, gggg 444- 444 sss ddddd ccc - ddd rrrr345 333 444. >>232 #include <stdio.h> int main(){ int c, cr = 1, minus = 0; while( (c = getchar()) != EOF ){ if(c == ' ' || c == '\t') { if(minus == 1) ; /* minus_space_return */ else if(cr != 0) putchar('\n'); /* space_minus_return */ cr = 0; } else if(c == '\n') { if(minus == 1) ; /* minus_return */ else if(cr != 0) putchar('\n'); cr = 0; minus = 0; } else if(c == ',' || c == '.') { if(minus == 1) putchar('-'); if(cr != 0) putchar('\n'); cr = 0; minus = 0; } else if(c == '-') { minus = 1; } else { if(minus == 1) putchar('-'); /* minus_not return */ putchar(c); cr = 1; minus = 0; } } }
236 名前:デフォルトの名無しさん [2009/05/25(月) 13:12:58 ] [1]数理物理 [2]問題文: ルジャンドル多項式のゼロ点(Pn(x)=0を満たすx)を求めたい。 @ n=4 の時 (解析解あり。) A n=10の時 (解析解なし。) の2つの場合についてニュートン法または2分法を用いて求めよ。 ttp://www.mns.kyutech.ac.jp/~kamada/suuributuri/sub2.html [3]OS:Linux/コンパイラ:わかんね/言語C [4]5/26まで お願いします。
237 名前:194 mailto:sage [2009/05/25(月) 17:15:46 ] 資源を使いすぎた者ですが、num_putファセットどなたか分かる方いませんか? ぐぐっても日本語の文献がほとんどヒットしません。英語のは見つかりますがどれも例がめちゃ難しいのしかないです 問題の意味は、このファセットを使って230764530を出力すると1000単位でコンマをつけて出力するようにしろとのことです なので「230,764,530」になるといいです よろしこおねがいします
238 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 17:53:00 ] std::locale locale_; OutIt outit; std::ios_base& format = ; std::num_put<charT, OutIt>& hoge = std::use_faset<std::num_put<charT, OutIt>(locale_); hoge.put(outit, format, char, value); こんな感じで後は自分で設定すればいいよ
239 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:23:52 ] >>237 MSDNに載ってるじゃないか。英語だけど、丸写しでもうごいたぞ?? #include <iostream> //ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx //230764530 int main(){ long Val = 230764530; std::locale Loc("japanese"); std::cout.imbue(Loc); std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); return 0; }
240 名前:194 mailto:sage [2009/05/25(月) 18:33:33 ] >>239 すみません エラー: ‘_Iter’は‘std::basic_ostream<char, std::char_traits<char> >’のメンバではありませんという コンパイルエラーになるのですが何かわかりますでしょうか
241 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:53:40 ] >>240 _Iterはイテレータをtypedefしたものだと思うのだが、最初にアンダースコアが入ってるからベンダ定数かもしれん。 俺の使ってるコンパイラはVC9EE(VC2008)なんだが、おまいさんはなにをつかってるんだい? うちではちゃんと通るし230,764,530とでる。 で、ちょっと改変してみた。これで動かなかったら俺の範疇外だ。 #include <iostream> //ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx //230764530 int main(){ long Val = 230764530; std::locale Loc("japanese"); //std::locale::global(std::locale("japanese")); std::cout.imbue(Loc); //std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); std::use_facet<std::num_put<char>>(Loc).put(std::ostreambuf_iterator<char>(std::cout.rdbuf()),std::cout,' ',Val); return 0; }
242 名前:194 mailto:sage [2009/05/25(月) 19:13:16 ] >>241 大変失礼しました。 最初にVisualStudioを使っていますと書いておきながらg++でコンパイルしていました。 上記のコードも試したのですが terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort trap というエラーになりました。しかし、VC++2008で試したところ問題なく動いたので、これで十分です。 ありがとうございました。
243 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:27:47 ] [1] 授業単元: 上級者のためのC++ [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9234.txt [3] 環境 [3.1] OS: ウィンドウズXP [3.2] コンパイラ名とバージョン: VisualC++2008 [3.3] 言語: C++ [4] 期限: 2009年5月28日朝まで [5] その他の制限: 難しいですが何卒よろしくおねがいします
244 名前:デフォルトの名無しさん [2009/05/25(月) 20:05:55 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9235.txt [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: 5月27日12:00 [5] その他の制限: 是非、よろしくお願いします
245 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:22:06 ] >>243 1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9236.txt
246 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:32:18 ] >>243 2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9237.txt
247 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:21:23 ] >>244 (1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9239.txt (2) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9240.txt
248 名前:デフォルトの名無しさん [2009/05/25(月) 21:21:24 ] [1] 授業単元:情報処理 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9238.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C/C++ [4] 期限: 明日5月26日 23:30まで [5] その他の制限: 特にありません。 問題数が多いです。 お手数ですがどうかよろしくお願いいたします。
249 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:36:12 ] またフィボナッチ…
250 名前:デフォルトの名無しさん [2009/05/25(月) 22:21:20 ] >>247 さん、ありがとうございます。 ただ、(2)のプログラムの #include <iterator> #include <algorithm> という2つのインクルードを初めてみました。これはどういう場合に使うのでしょうか? やはりこれを使わないとプログラムは難しくなってしまうんですか?
251 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:23:31 ] ぐぐれ
252 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:26:41 ] >>250 ソート処理をstd::sort、出力をstd::ostream_iteratorに丸投げしているため。 これらを見たことないとなるとソートは自分で書きなさいってことなのかね
253 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:57:48 ] >>250 バブルソートで書き直してみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9243.txt
254 名前:デフォルトの名無しさん [2009/05/25(月) 23:16:31 ] 1] 授業単元:C++演習 [2] 問題文 以下のプログラムをもとに、入力された文字列に!があったら!?に置き換えよ (ヒント s.insert(i,t)を用いよ) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9244.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VC [3.3] 言語:C++ [4] 期限:明日まで プログラムを習い始めたばかりで、 よくわかってないのですがよろしくお願いします。
255 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:24:45 ] [1] 授業単元:ソフトウェア [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9245.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:VisualC++ [3.3] 言語:C [4] 期限:明後日までにおねがいします。
256 名前:243 mailto:sage [2009/05/26(火) 00:12:33 ] >>245 >>246 助かりました!有難うございました。
257 名前:デフォルトの名無しさん [2009/05/26(火) 00:15:55 ] >>252 >>253 ありがとうございます。調べてみたんですが、便利ですね・・・ 今までこんな話は聞いたことなかったし、ソートの問題は自分で書いてました。 今回の問題でもソート・出力は自分でやったほうがいいかと思ってます。 でも、ひとつ勉強になりました。ありがとうございました。
258 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 00:20:19 ] >>255 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9247.c
259 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 00:36:48 ] >>230 ありがとうございます もしまた頼る時があったらよろしくお願いします
260 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:03:31 ] >>259 姑息な最適化なら任せてくれ
261 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:17:02 ] おっと誤爆だったみたいだ
262 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:14:14 ] >>236 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9248.c
263 名前:248 [2009/05/26(火) 09:30:23 ] >>248 です。 フィボナッチは解決いたしました。 (5_1)も出来そうなので、(5_3)以降をお願いいたします。 問題文(含コードンク)kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9238.txt
264 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:56:01 ] (5_3) void binary(int n) { if(n>1) binary(n>>1 ); printf("%d", n & 1); }
265 名前:デフォルトの名無しさん [2009/05/26(火) 10:13:22 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ゼロで初期化したint型変数,float型変数,double型変数をそれぞれ3個ずつ用意し,それぞれに1,0.1,0.01を1000回加えてそれぞれの結果を画面に出力するアルゴリズムを考え,それにしたがってプログラムを作成せよ. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:秀丸 [3.3] 言語:C言語 [4] 期限:5月28日 [5] その他の制限: 関数はまだ習っていません。本当に基礎をやっています。
266 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:46:06 ] #include <stdio.h> int main(void) { int i, a = 0, b = 0, c = 0; float fa = 0, fb = 0, fc = 0; double da = 0, db = 0, dc = 0; for(i=0; i<1000; i++) { a += 1; b += 0.1; c += 0.01; fa += 1; fb += 0.1; fc += 0.01; da += 1; db += 0.1; dc += 0.01; } printf("%d %d %d\n", a, b, c); printf("%f %f %f\n", fa, fb, fc); printf("%f %f %f\n", da, db, dc); return 0; }
267 名前:デフォルトの名無しさん [2009/05/26(火) 11:47:50 ] >>262 ありがとうございます。 非常に助かりました。
268 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 15:20:55 ] >>248 (5_4) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9249.txt (5_5) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9250.txt (5_6) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9251.txt (5_7) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9252.txt 円盤の数は任意だが、ここでは5にしてある。
269 名前:デフォルトの名無しさん [2009/05/26(火) 15:35:04 ] [1] プログラム演習 [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9254.txt 文字列を入力し空行が入力されたら、今まで入力されたものを表示する。 [3] 環境 [3.1] OSWindows [3.2]VisualC++ [3.3] 言語:C++ [4] 期限: 今日中 [5] 制限はなし 途中までやっていたんですが、空行の時の条件がうまくできません。 よろしくお願いします。
270 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:09:24 ] >>269 getline(cin,s)使ってみたら?
271 名前:デフォルトの名無しさん [2009/05/26(火) 16:46:56 ] >>270 ありがとうございました できました 簡単なトコでのミスだったんですね
272 名前:デフォルトの名無しさん [2009/05/26(火) 16:49:57 ] >>268 お疲れ様です。本当にありがとうございました!
273 名前:daigaku1nen [2009/05/26(火) 18:26:48 ] プログラミングの授業で a,b,c,d,eを cin でキーボードから読み取り {a÷(b×c)+d×(b+3)}÷(e×2) の計算の答えを出力するプログラミングをつくる課題が出たのですが、 演算子の優先順を考慮すると、どう変換して書けばいいのか全く分かりません。 助けてください。 提出期限は今日の0時までです。。。
274 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 18:50:32 ] >>273 #include <iostream> int main() { double a,b,c,d,e; std::cout << "a:"; std::cin >> a; std::cout << "b:"; std::cin >> b; std::cout << "c:"; std::cin >> c; std::cout << "d:"; std::cin >> d; std::cout << "e:"; std::cin >> e; std::cout << (a/(b*c)+d*(b+3))/(e*2) << std::endl; return 0; }
275 名前:棚大生 [2009/05/26(火) 18:51:13 ] C++の課題なのですが、教えてください。 提出期限は 5/28午前0時 です。 昨日、一昨日と2日間粘りましたがチンプンカンプンです。 問題は下記の通りです。 @ int i=99;と設定されていたら、 i/3 と i/3. では結果が異なる。 プログラミングを作成することによって、i/3 と i/3.を評価せよ。 (a,bを実数としてi/3 と i/3.をa,bに代入することとする。) A a=10, b=3, c=2 として !aかつb>cの戻り値、!aまたはb>cの戻り値を求めるプログラムを作成せよ。 B a=1,b=10,c=100のとき c<b && b<a と c<b<a は同じものではない。 上記のことをプログラム化して確かめよ。 C i=100で a=i++, a=++iの値を確かめるプログラムを作成せよ。 D 1から10までの和を計算するプログラムをインクリメント演算子を用いて、作成せよ。 デクリメント演算子を用いて、nCmを計算するプログラムを作成せよ。但し、n,mは cin を使って キーボードから読み取ること。 お願いします!!!
276 名前:daigaku1nen [2009/05/26(火) 18:59:50 ] >>274 本っっっっ当にありがとうございます。 また分からない課題が来たらここで質問しにきていいですか??
277 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:07:16 ] >>276 次からは質問テンプレ使ったほうがいいよ cinというキーワードがあったからC++とわかったけど ぜんぜん違う回答になってた可能性があるからね
278 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:09:12 ] >>276 丁寧に質問すれば、誰かが答えてくれる。
279 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:30:18 ] >>275 @の99って、問題文あってる?
280 名前:棚大生 [2009/05/26(火) 19:37:04 ] すいません!!! 101でした。
281 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:55:52 ] >>258 ありがとうございました。
282 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:46:43 ] >>275 @ #include <iostream> int main() { int i = 101; double a = i / 3; double b = i / 3.; std::cout << "101 / 3 = " << a << std::endl; std::cout << "101 / 3. = " << b << std::endl; return 0; }
283 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:47:43 ] >>275 @〜C #include <iostream> int main() { // A int a=10,b=3,c=2; std::cout << "\"!a && b > c\"=" << (!a && b > c) << std::endl; std::cout << "\"!a || b > c\"=" << (!a || b > c) << std::endl; // B a=1;b=10;c=100; std::cout << "\"c<b && b<a\"=" << (c<b && b<a) << std::endl; std::cout << "\"c<b<a\"=" << (c<b<a) << std::endl; // C int i=100; a=i++; std::cout << "a=i++:" << a << std::endl; i=100; a=++i; std::cout << "a=++i:" << a << std::endl; return 0; }
284 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:48:51 ] >>275 D-1 #include <iostream> int main() { int i =1, sum = 0; for (i = 1; i <= 10; i++) // インクリメント演算子 sum += i; std::cout << "sum:" << sum << std::endl; return 0; }
285 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:49:50 ] >>275 D-2 #include <iostream> int comb(int n, int r) { if (r == 0 || r == n) return 1; n--; // デクリメント演算子 return comb(n, r - 1) + comb(n, r); } int main() { int i, n, r; long x; std::cout << "n:"; std::cin >> n; std::cout << "r:"; std::cin >> r; std::cout << "nCr=" << comb(n, r) << std::endl; return 0; } こんなんで良いのかな。違うような気もするが。
286 名前:棚大生 [2009/05/26(火) 20:55:34 ] >>282 ありがとうございます!!! 面倒だと思いますが、A〜Dもお願いします。
287 名前:棚大生 [2009/05/26(火) 21:04:38 ] >>286 はすいません書き込むのが遅れました >>283 ABに関してなんですが、coutでなぜ"\"というのが出てくるのですか?
288 名前:棚大生 [2009/05/26(火) 21:10:12 ] >>285 重ね重ねすいません。 D-2で、できれば combを使わない方法でお願いしたいのですが。。。
289 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:15:45 ] 注文の多い料理店
290 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:56:26 ] >>275 D-2 (combを使わない) #include <iostream> int main() { int i, n, r; int x = 1; std::cout << "n:"; std::cin >> n; std::cout << "r:"; std::cin >> r; for (i = n; i >= n - r + 1; i--) //デクリメント演算子 x *= i; for (i = r; i >= 1; i--) //デクリメント演算子 x /= i; std::cout << "nCr=" << x << std::endl; return 0; } オーバーフローは全く考慮してないので注意。
291 名前:デフォルトの名無しさん [2009/05/26(火) 22:01:42 ] [1] 授業単元:プログラミングT [2] 問題文(含コード&リンク): 1!〜53!を計算して、それらの計算結果の一の位、十の位、…をそろえて(つまり右揃えで) 出力するプログラムを作成せよ。但し、その際 ・適切にモジュール化、機能分割する ・53!≒4.27*10^69であることを考慮して階上値を入れる配列の大きさを決める [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: あさって [5] その他の制限: ・配列の添え字がメモリ確保した配列要素の範囲を超えてはならない ・乗算を上の桁から行ってはいけない。 ・53!の計算、出力の際に最初から1*2*3*...*53という風に、極端に 処理効率を悪くしてはいけない。
292 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:10:34 ] >>291 むずいな
293 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:14:50 ] はぁ?
294 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:39:56 ] >>291 多倍長整数の乗算の実装をしろってことでおk? 制限の2つ目からもそんなニオイが感じられるし 3つ目の制限は 53!=52!(直前に計算済み)x53をしろってことかな
295 名前:真面目に質問! [2009/05/26(火) 22:41:55 ] 【授業】:C++ 【問題文】: @以下のプログラムを実行した際,戻り値として何が表示されるか。 #include <iostream> int main() { int a,d,e; a = 10; d = a ==10; e = a < 10; cout << e <<"\t"<< d <<endl; } Aa=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。 BAのプログラムを実行した際,戻り値として何が表示されるか。 【期限】:09.05.27 12:00 何の事を言っているのかサッパリです。。。 よろしくお願いします。
296 名前:棚大生 [2009/05/26(火) 22:45:00 ] >>290 どうもありがとうございました。 なんとかなりそうです。
297 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:56:50 ] >>291 なんとか1レスに納めた。修正ヨロ #include<stdio.h> #define MB_UNIT 10000 #define MB_SIZE 18 typedef struct tag_mb_t{ long data[MB_SIZE]; }mb_t; mb_t mb_mul(mb_t a, int n){ long i, tmp, carry=0; for(i=0;i<MB_SIZE;i++){ tmp=a.data[i]*n+carry; a.data[i]=tmp%MB_UNIT; carry=tmp/MB_UNIT; } return a; } int mb_sprint(char buf[MB_SIZE*4+1], mb_t a){ char i, *p=buf; for(i=MB_SIZE-1;i>0 && a.data[i]==0;i--); p+=sprintf(p, "%ld", a.data[i]); for(i--;i>=0;i--) p+=sprintf(p, "%04ld", a.data[i]); return p-buf; } int main(void){ char buf[MB_SIZE*4+1], i, len53; mb_t x[54]={{{1}}}; for(i=1;i<=53;i++) x[i]=mb_mul(x[i-1], i); len53=mb_sprint(buf, x[53]); for(i=1;i<=53;i++){ mb_sprint(buf, x[i]); printf("%*s\n", len53, buf); } return 0; }
298 名前: ◆XjTlXLIlH2 [2009/05/26(火) 23:10:11 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): めもりのついていない4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかるプログラムをC言語で書く。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:明日まで [5] その他の制限: forやwhileなどを主に使ったプログラムにしたいのですがよくわからなかったのでよろしくお願いします。
299 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:14:51 ] >>298 4 0 1 3 1 0 0 1 4 1 2 3
300 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:21:16 ] >>299 0 3 3 0 3 3 4 2 0 2 2 0
301 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:35:34 ] >>295 (1) 0 1 (2) #include <iostream> int main() { int a,b,c,d,e; a = 10; b = 3; c = 4; d = c>a && c>b; e = c>a || c>b; cout << e <<"\t"<< d <<endl; } (3) 1 0 よほどおかしな環境でない限りはこうなるとは思うが、 コンパイラ/OSが書いてない以上実行結果は妄想。
302 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:42:15 ] >>291 #include <stdio.h> #include <stdlib.h> typedef struct tag_LINT{ int sz_array; int* value; } LINT; LINT* create_lint(int keta){ // size:桁 LINT* lint = (LINT*)malloc(sizeof(LINT)); lint->sz_array = keta / 4 + 1; lint->value = (int*)calloc( sizeof(int), lint->sz_array); return lint; } LINT* copy_lint(LINT* lint){ LINT* copy = (LINT*)malloc(sizeof(LINT)); copy->sz_array = lint->sz_array; copy->value = (int*)calloc( sizeof(int), lint->sz_array); return copy; } LINT* mul_lint_int(LINT* l_num, int r_num){ int carry = 0; //for (int i=l_num->sz_array-1; i>=0; i--){ for (int i=0; i < l_num->sz_array; i++){ int tmp = l_num->value[i] * r_num + carry; l_num->value[i] = tmp % 10000; carry = tmp / 10000; } return l_num; } >>303 に続く
303 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:44:20 ] >>302 の続き void print_lint(LINT* l_num){ for (int i=l_num->sz_array-1; i>=0; i--){ printf("%04d", l_num->value[i]); } printf("\n"); } int main(void){ LINT* n = create_lint(70); // 53!≒4.27*10^69 n->value[0] = 1; for (int i=1; i<=53; i++){ mul_lint_int(n, i); printf("%2d!= ", i); print_lint(n); } return 0; } リロード忘れてて>>297 で答えてたなorz でもとりあえずw
304 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:50:43 ] + ; * ☆_+ : , xヾ:、__,..-‐‐:、、,へ.........._ く '´::::::::::::::::ヽ /0:::::::::::::::::::::::', free議論が始まる前にf逃げて〜!!! = {o:::::::::(;´Д`):::} ':,:::::::::::つ:::::::つ = ヽ、__;;;;::/ し"~(__)
305 名前:294=302=303 mailto:sage [2009/05/27(水) 00:09:48 ] >>304 スマソw >>302-303 の修正 1. // size:桁 -> 消し忘れ 2. copy_lint関数 -> 使ってないから消して 3. 追加 LINT* delete_lint(LINT* lint){ free(lint->value); free(lint); } 4. 変更 main関数のreturn前に delete_lint(n); を追加 5. 出力部分で先頭部分を空白にするならfor文を bool f=true; for (int i=l_num->sz_array-1; i>=0; i--){ if (f && (0!=l_num->value[i])) f=false; printf( (f? " ": "%04d"), l_num->value[i]); } に変更
306 名前:デフォルトの名無しさん mailto:age [2009/05/27(水) 00:13:43 ] 【質問テンプレ】 [1] 授業単元:C言語 [2]問題1 テキストファイルにある文字列を空白で区切って一行ごとに表示する 例 I have a pen とテキストファイルにかかれていたらほかのファイルに I have a pen と表示する 問題2 問題1で1行ごとに表示した文字列の4行目の文字列をほかのファイルにコピーする 例の場合はpenをコピーし、また別のファイルにpenと出力させる。 問題3 問題1で作った文字列で区切る物を利用してアルファベット、スペース、数字の数を数えるプログラム 例 as 123 rtd xxとファイルに入力されていたらアルファベットは3こ、数字は2こ、スペースは3個と表示 1,2,3はそれぞれ別のプログラムですが2,3では1のものを利用します。 [3] 環境 [3.1] OS: Windows [3.2] VisualC++ [3.3] 言語: C [4] 期限:5月29日まで
307 名前:デフォルトの名無しさん [2009/05/27(水) 01:23:07 ] [1] 授業単元: C++演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9234.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C++ [4] 期限: 27日まで [5] その他の制限:vectorを習ったばかりです
308 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:53:29 ] >>306 問題1-------------------- #include <stdio.h> int main(void) { int c, last; for (; (c = getchar()) != EOF; ) { if (c == ' ') if (last == ' ') ; else putchar('\n'); else putchar(c); last = c; } return 0; }
309 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:54:38 ] >>306 問題2-------------------- #include <stdio.h> #include <string.h> #define MAXBUF 1000 int main(void) { unsigned char buf[MAXBUF]; int count = 0, continued = 0; while (fgets(buf, sizeof(buf), stdin) != NULL) { if (!continued) count++; if (count == 4) fputs(buf, stdout); if (strlen(buf) == MAXBUF - 1 && buf[MAXBUF - 2] != '\n') continued = 1; else continued = 0; } return 0; }
310 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:55:22 ] >>306 問題3-------------------- #include <stdio.h> #include <ctype.h> int main(void) { int c; int found_digit = 0, found_alpha = 0; int numeric_count = 0, alpha_count = 0, line_count = 0; while((c = getchar()) != EOF) { if (c == '\n') { line_count++; if (found_digit) numeric_count++; if (found_alpha) alpha_count++; found_digit = 0; found_alpha = 0; } if (isdigit(c)) found_digit = 1; if (isalpha(c)) found_alpha = 1; } printf("アルファベットは%d個、数字は%d個、空白は%d個です\n", alpha_count, numeric_count, line_count - 1); return 0; }
311 名前:307の間違い mailto:sage [2009/05/27(水) 01:56:20 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9255.txt
312 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:00:58 ] [1] 授業単元:C言語演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9259.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 6月初旬 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9260.c 現在できているプログラムですが、ツーペアの判定が上手くいきません。どなたか改善をお願いします。
313 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:07:23 ] >>306 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9256.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9257.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9261.c
314 名前: ◆Xf1zvf6ius mailto:sage [2009/05/27(水) 02:51:52 ] [1] 授業単元:C++ [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9262.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9263.txt [3] 環境 [3.1] OS:XP [3.2] textpad [3.3] 言語: C++ [4] 期限: 5月末 よろしくお願いします。
315 名前:馬路 [2009/05/27(水) 03:30:09 ] お願いします。 【授業】:プログラミング(C++) 【問題文】: @以下のプログラムを実行した際,戻り値として何が表示されるか。 #include <iostream> int main() { int a,d,e; a = 10; d = a ==10; e = a < 10; cout << e <<"\t"<< d <<endl; } Aa=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。 BAのプログラムを実行した際,戻り値として何が表示されるか。 【期限】:09.05.27 12:00
316 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 04:11:24 ] >>315 >>301
317 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 04:23:45 ] >>314 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9265.cpp 問題文以上に余計な関数とか書いたから邪魔なら省いてくれ
318 名前:307の間違い mailto:sage [2009/05/27(水) 04:36:18 ] >>298 再帰とか2分木とか考えてる暇がないのには理由がある、役不足。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9266.txt
319 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 05:32:23 ] [1] 授業単元:プログラミング入門C++ [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9267.txt [3] 環境 [3.1] OS:XP [3.2] Turbo C++ [3.3] 言語: C++ [4] 期限: 今日18時まで かなり初歩だと思いますがよろしくお願いいたします。
320 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:17:32 ] >>319 #include <iostream> using namespace std; int passMinutes(const int start, const int end) { return end - start; } int main() { const int MIN_INADAY = 24*60; int h1, m1, h2, m2; cout << "開始時間(0-23):"; cin >> h1; cout << "開始分(0-59):"; cin >> m1; cout << "終了時間(0-23):"; cin >> h2; cout << "終了時間(0-59):"; cin >> m2; // 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する // endは27:00等の入力も受け付けるが、startは、00:00〜23:59の範囲に丸められる int start = h1*60+m1; int end = h2*60+m2; if(start < 0) { start = 0; h1 = 0; m1 = 0; } else if(start >= MIN_INADAY) { start = MIN_INADAY - 1; h1 = 23; m1 = 59; } int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end); cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl; cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl; return 0; }
321 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:24:17 ] >>319 ごめ。endが負の数になる場合のチェックを入れ忘れてた。 #include <iostream> using namespace std; int passMinutes(const int start, const int end) { return end - start; } int main() { const int MIN_INADAY = 24*60; int h1, m1, h2, m2; cout << "開始時間(0-23):"; cin >> h1; cout << "開始分(0-59):"; cin >> m1; cout << "終了時間(0-23):"; cin >> h2; cout << "終了時間(0-59):"; cin >> m2; // 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する // startは、00:00〜23:59の範囲に丸められるがendは最小値だけが00:00に丸められる。 int start = h1*60+m1; int end = h2*60+m2; if(start < 0) { start = h1 = m1 = 0; } else if(start >= MIN_INADAY) { start = MIN_INADAY - 1; h1 = 23; m1 = 59; } if(end < 0) { end = h2 = m2 = 0; } int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end); cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl; cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl; return 0; }
322 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:51:14 ] >>306 >>313 訂正 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9256.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9257.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9268.c 0〜9、A〜Z、a〜z以外の ( # ! などの対策を追加
323 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:18:12 ] >>312 ワンペアの判定結果を使う。 ツーペア判定関数の引数に、最初に見つけたワンペアカードを追加する。 ツーペア判定関数は、ワンペア以降から二組目のセットを見つけ、あればそのカード番号を返す。 ワンペアがなければ、そもそも呼ぶ必要もなさそう。
324 名前: ◆UlBEcxSSxE [2009/05/27(水) 09:58:29 ] [1] 授業単元:プログラミング入門A [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9269.txt [3] 環境 [3.1] OS:Ubuntu Linux 8. [3.2] コンパイラ名とバージョン: gcc 4.2 [3.3] 言語: C [4] 期限: 5月29日17:00 [5] その他の制限: アップしたファイルに詳しく書いてあります。 いろいろやってみたのですが難しいです。再帰版はいろいろ調べてみて 何とかなるような気もするのですが、非再帰版はどうやったらいいのか 見当がつかず、あと2日で両方は無理そうです。よろしくお願いします。
325 名前:デフォルトの名無しさん [2009/05/27(水) 10:04:19 ] すみません。 急ぎで知りたいことがあります。 unsigned int 型の数字が、ランダムで生成されて すでに生成済みか、未生成かを知りたいです。 高速で省メモリにするにはどうしたらいいですか?
326 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:14:29 ] r(0), r(1), r(2), ... みたいに自然数からの関数rを使って「乱数列」を与える ことができて、さらにrの逆関数が作れれば簡単。でもそんな乱数列は あるのかなあ。 そうでなければ、生成した乱数を適当な集合を表すデータ構造(ハッシュか 何か)に突っ込んでおくという愚直な方法しか思いつかないや。でもこれだと 省メモリにはならないかも。
327 名前:325 [2009/05/27(水) 10:15:59 ] 数字はたくさんあり、メモリに保存するとしたら数ギガになる場合がしりたいです。 メモリはたかだか30Mの使用で処理したいです。
328 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:16:03 ] >>325 スレ違い ダブらない乱数を発生させたい(それはもう乱数じゃない)なら つttp://pc12.2ch.net/test/read.cgi/tech/1192628099/l50 そうでないなら 【初心者歓迎】C/C++室 Ver.65【環境依存OK】 つttp://pc12.2ch.net/test/read.cgi/tech/1239326399/l50
329 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:35:10 ] >>325 30M*8bit=240M=240,000,000 MAX
330 名前:デフォルトの名無しさん [2009/05/27(水) 10:37:29 ] >>326 ランダムの数字って言うのは、すでにハッシュ値(CRC,SHA)のことなんです。 質問のため言い換えました。 重複ファイルや重複URLを検出したいのですがいい方法ないかなとおもいました。 ググたところ、パトリシア トライ、ダブル配列あたりが使えそうなのでこのあたりでいってみます。
331 名前:デフォルトの名無しさん [2009/05/27(水) 11:41:58 ] bitデータの2分木で、子がある1、子がない0として記録しておけばかなり縮む。探索は木の左からと決める。 一次元の配列に格納したらデータの更新が難しいが。 追加する部分以降を移動しなければいけない。
332 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 14:07:44 ] お願いします。 授業単元ソフトウェア製作実習 osソラリス コンパイラ gcc 言語 c 制限 台形の面積を求めるのに(上底+下底)*高さ/2を使ってください 。できればいかにも初心者が書いたようなプログラムにしてくれる と助かります。 高さhが2で上底aと下底bが次のような4つの合計を求めるプログラムをfor文をつかって作成せよ。 台形(1)a=0b=2^2h=2面積= 台形(2)a=2^2b=4^2h=2面積= 台形(3)a=4^2b=6^2h=2面積= 台形(4)a=6^2b=8^2h=2面積= 四つの台形の面積の合計= 以上でお願いします。
333 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:01:30 ] >>43
334 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:22:54 ] >>332 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9270.txt こんなんで良い? ちなみに解の妥当性までは確認してない
335 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:46:51 ] >>320 >>321 ありがとうございました!
336 名前:初心者 [2009/05/27(水) 15:48:34 ] C++で #include <iostream.h> main() { int a=10,b=3,c=2,d=0,e=0; d = !a && b>c; e = !a || b>c; cout << d <<"\t"<< e <<endl; } を実行した結果はどうなりますか?
337 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:53:05 ] 実行してみりゃいいだろw
338 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:58:59 ] >>336 どっちも結果はbool型だと思うぞ。
339 名前:初心者 [2009/05/27(水) 16:00:09 ] >>337 いま環境が悪くて実行できないので、すいません。 お願いします。
340 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:02:10 ] あと1時間後に答えるからそれまで待ってろ
341 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:04:43 ] >>336 iostream.hとか存在しないからコンパイルエラー
342 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:07:41 ] >>341 いたた
343 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:09:36 ] >>341 それはない 環境依存ではあるが古い記述方法であることであるのは事実 intに対して論理否定やboolをintに入れているのはいががなモノかと main()のintは省略してはならない、ゆえにnon-void関数である cout, endlは、このスコープで定義されていない
344 名前:初心者 [2009/05/27(水) 16:19:06 ] #include <iostream> int main() { int a=10,b=3,c=2,d=0,e=0; d = !a && b>c; e = !a || b>c; cout << d <<"\t"<< e <<endl; } となればいいんですか? 結果はどうなるんですか??
345 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:22:45 ] >>344 ネームスペースがおかしいから、コンパイルエラー。
346 名前:初心者 [2009/05/27(水) 16:26:15 ] #include <iostream> int main() { int a=10,b=3,c=2,d=0,e=0; d = !a && b>c; e = !a || b>c; cout << d << e <<endl; } ですか? 締切が18:00までなので結果だけでも教えてください。
347 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:26:40 ] 336のままならコンパイルできる環境もあるが、344だとコンパイルできない。
348 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:38:01 ] >>334 レスありがとうございます。申し訳ありませんが 台形(1)a=0,b=2^2,h=2面積= 台形(2)a=2^2,b=4^2,h=2面積= 台形(3)a=4^2,b=6^2h=2面積= 台形(4)a=6^2,b=8^2h=2面積= 四つの台形の面積の合計= という表示形式でお願いできないでしょうか?
349 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:45:41 ] >>46
350 名前: ◆XjTlXLIlH2 [2009/05/27(水) 16:46:03 ] >>318 すごく助かりました、ありがとうございました!!
351 名前:334 mailto:sage [2009/05/27(水) 16:54:43 ] >>348 ほらよ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9272.txt
352 名前:デフォルトの名無しさん mailto:age [2009/05/27(水) 17:26:58 ] >>322 ありがとうございます。
353 名前:デフォルトの名無しさん [2009/05/27(水) 18:04:25 ] >>351 たすかりました。ありがとうございます。
354 名前:デフォルトの名無しさん [2009/05/27(水) 18:27:30 ] [1] C言語 [2] 問題文(含コード&リンク): [3] 環境 [3.1] Windows [3.2] すみません、わかりません [3.3] C [4] 明日まで 入力された文字列をリストに格納し、 そのリスト自体を入れ替えて辞書順に並べる関数を作っています。 その際先頭・最後尾・次のリストのアドレスを変えなくては ならないのですが、その処理をどうやったらいいか悩んでいます。 (strcmpの下の行からがよくわかりません) void jisyo(struct B *fp, struct B *ep, int list_sum){ //前からリストの先頭アドレス、リストの最後尾アドレス、リストの数 です。main関数でjisyo(a.front_p, a.back_p, a.list_sum)と 呼び出しています。 int n, i, m; struct B *p;
355 名前:デフォルトの名無しさん [2009/05/27(水) 18:28:50 ] >>354 の続きです for(n = 1; n < list_sum; n++){ pb = fp; pb_b = ep; for(i = 0; i < list_sum-1; i++){ if(strcmp(pb->str_p, pb->next_p->str_p) >= 1){ p = pb; pb = pb->next-_p; pb->next_p = p;
356 名前:デフォルトの名無しさん [2009/05/27(水) 18:29:31 ] >>355 の続きです if(fp != pb){ fp = fp->next_p->next_p; fp->next_p->next_p = fp->next_p; fp->next_p = fp->next_p->next_p->next_p; }else if(ep != pb_b){ ep = ep->next_p; ep->next_p = ep->next_p->next_p->next_p; ep->next_p->next_p->next_p = ep->next_p; }else{ pb = pb->next_p->next_p; pb->next_p = pb; pb->next_p->next_p = pb->next_p; } } pb = pb->next_p; } } for(m = 0; m < list_sum; m++){ printf("%s\n", pb->str_p); pb = pb->next_p; } }
357 名前:307の間違い mailto:sage [2009/05/27(水) 19:14:21 ] >>307 (9255) Vector勉強になった。 それとついでに>>324 (9269) >>(9271) N-Queenを解くプログラム #include <iostream> #include <vector> #include <string> #include <algorithm> #include <time.h> using namespace std; struct student { string name; int score; }; bool operator<(const student& x, const student& y) { return x.score < y.score; } int main(void) { int i; char buf[50]; student s, t; vector<student> vecStudent; vector<student>::iterator theIterator; srand((unsigned)time(0)); for(i=0; i<20; i++) { sprintf(buf, "名前.%02d.名前", i+1); s.name = buf; s.score = rand() % 101; vecStudent.push_back(s); } for (theIterator = vecStudent.begin(); theIterator != vecStudent.end(); theIterator++) cout << theIterator->name << ":" << theIterator->score << endl; cout<<endl; sort(vecStudent.begin(), vecStudent.end()); for(i=0; i<20; i++) t = vecStudent[i], cout<<t.name<<":"<<t.score<<endl; return 0; }
358 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 20:04:04 ] >>354-356 どのような構造体かわからなかったので妄想してコーディングした。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9273.c 兄ぃそこはらめぇー、とか。あぁ、酔ってるわ。
359 名前:デフォルトの名無しさん [2009/05/27(水) 20:32:00 ] >>358 ありがとうございます。 でもコメントが文字化けしていて どんな処理をしているのかわかりませんでしたorz 構造体は struct A a{ struct B *front_p; struct B *back_p; int list_sum; } struct B b{ char *str_p; struct B *next_p } です。 書き忘れすみません。 よろしくお願いします。
360 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 20:43:14 ] >>358 構造体は予想どおりだったか。 コメントの文字化けは知らんがな。 UTF-8だから、nkfかiconvでSJISにでもしてみてね。 それか、サクラエディタかnotepad++で読み込むとか。 私の考えでは、別にリストのポインタを入れ替えていく必要はないと。 つまり、文字列(char *)だけ入れ替えてやるだけで済むと。 ソートしたい対象が文字列(char *)なのにリストのポインタを替えていくなんて無駄な処理でしょ。 だから、文字列(char *)だけソートしたものが>>358 なのよ。
361 名前:307の間違い mailto:sage [2009/05/27(水) 20:44:16 ] >でもコメントが文字化けしていて >どんな処理をしているのかわかりませんでしたorz (9273)右クリックでファイルをダウンロードすれば読めるはず。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
362 名前:デフォルトの名無しさん [2009/05/27(水) 21:11:55 ] >>360 文字列のみの入れ替えは完成していたのですが、 講師からリスト自体を入れ替えろと言われました…。 あとコメント見れました。
363 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:35:50 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9274.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [2009年06月03日24:00まで] [5] その他の制限: 特になし。 よろしくお願いします
364 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:25:36 ] [1] 授業単元: [2] 問題文(含コード&リンク):1!〜53!を計算して、それらを右揃えで出力するプログラムを 作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C言語 [4] 期限: [2009年6月2日17:00まで] [5] その他の制限:・プログラムを幾つかの関数に分割する kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9275.txt ↑途中まで作ったのですが空白にしたいところが0で埋まってしまって困っています。 よろしくお願いします
365 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:25:55 ] >>363 具体的にどこがわからんの?
366 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:39:17 ] >>364 print関数だけ。 void print(int a[],int N,int n) { int i; int head; printf("%2d! = ",n); head = 0; for(i=N-1; i>=0; i--) { if (head) printf("%07d",a[i]); else if (a[i]) { printf("%7d",a[i]); head = 1; } else printf(" "); } printf("\n"); }
367 名前:デフォルトの名無しさん [2009/05/28(木) 00:45:29 ] [1] 授業単元:プログラム演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9276.txt [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: visual c++ [3.3] 言語: C++ [4] 期限: 朝までに。すごく困っています [5] その他の制限: 特になし よろしくお願いします
368 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:52:30 ] >>366 ありがとうございます。 0は消えたんですが右揃えになりません。
369 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:56:08 ] >>366 すいません。なりました。本当にありがとうございました
370 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:01:49 ] >>367 greater()をstructの後に移動 if(a.point>b.point)
371 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:05:09 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):線形検索を使用して配列内の最大の要素を検索せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週火曜日 [5] その他の制限:制限はありません まずアルゴリズムが全く思いつきません。 よろしくお願いします。
372 名前:デフォルトの名無しさん [2009/05/28(木) 01:06:17 ] >>370 ありがとうございました。 昨日から悩んでいたのがやっと解決しました
373 名前:デフォルトの名無しさん [2009/05/28(木) 01:19:43 ] [1] 授業単元:プログラム演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9277.txt [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C++ [4] 期限:できるだけ早く お願いします
374 名前:デフォルトの名無しさん [2009/05/28(木) 01:39:22 ] [1] 授業単元:情報処理 [2] 問題文(含コード&リンク): (1)1からn番目までの奇数2n-1までの和をn=1からn=50まで求め、n,和(sum), n~2の値を出力せよ。また、プログラムの中でsum=0;およびn--;が 必要な理由を答えよ。 (2)原点を中心とした半径2の円を描くプログラムを作成せよ。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:今週金曜日 [5] (2)についての条件 @半径2の値はconst型で初期化しておき、実数型とする。 A円の方程式は平面極座標(r,φ)を用いてforループでφを0から 2πまで変化させてガウス座標(x,y)を出力する。 Bforループの制御変数はint型とする。 長くなってしまいすいません。よろしくお願いいたします。
375 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:46:08 ] [1] 授業単元: 最適化 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9278.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C++ [4] 期限: 5月30日 ランダム関数を使うらしいのですが全く分かりません。 よろしくお願いします。
376 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:10:13 ] >>373 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9279.cpp
377 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:36:04 ] >>371 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9280.c
378 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:37:09 ] [1] 授業単元: 情報処理入門 [2] 問題文(含コード&リンク): キーボードから実数 x を入力し、ニュートン法と呼ばれる次のような反 復の式を用いて、近似的に x の平方根を求めるプログラムを作成せよ。 -- xの平方根は、次の計算を| s(i+1)-s(i) | < ε, i=1,2,...となるまで繰 り返すことによって求めることができる。εは収束判定数である。 s(i+1) = ( s(i) + x / s(i)) / 2 ただし、s(1) = 1 とする。 なお、ε=0.00001として計算すること。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年5月29日00:00まで [5] その他の制限: なし よろしくお願いします。
379 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:50:29 ] >>371 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9281.txt
380 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 06:16:47 ] >>364 void print(int a[],int N,int n) { int i; printf("%2d! = ",n); for(i=N-1; i>=0&&a[i]==0; i--) printf("%7c",' '); printf("%7d",a[i]); for(i--; i>=0; i--) printf("%07d",a[i]); printf("\n"); }
381 名前:243 mailto:sage [2009/05/28(木) 06:36:52 ] >>245 246 先週は助けていただき有難うございました。 関連する問題になるのですが、以前複素数のクラスを作成しました。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9282.zip このクラスもPass_Betterを使って値渡しにするよう言われたのですが、 どなたか分かる方いたらお願いします。 [1] 授業単元: C++ [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C++ [4] 期限: 5月30日
382 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 09:26:42 ] >>374 問題文(1)の中の「n~2の値」、何を出力すればいい?
383 名前:sage [2009/05/28(木) 10:11:18 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):番兵を利用して配列内の最大の要素を検索するプログラムを作りなさい [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限:6月2日 [5] その他の制限:制限はありません お願いします
384 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:34:58 ] 指数関数e^xの近似値を返す関数expon(x, n)をつくります。第1引数は浮動小数点数xで,第2引数はexをTaylor展開で展開する際の最大次数nになります。n次項までのTaylor展開の式は下に示す通りです。 さらに,浮動小数点数yと正の整数mを引数とし,yの小数点m桁より下を切り捨てて出力する関数trunc(y, m)をつくりなさい。 次に,これらの2つの関数を用いて,e^xの近似値を小数点以下の桁数を指定して出力するプログラムをつくりなさい。 [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 指数関数e^xの近似値を返す関数expon(x, n)をつくります。第1引数は浮動小数点数xで,第2引数はexをTaylor展開で展開する際の最大次数nになります。n次項までのTaylor展開の式は下に示す通りです。 さらに,浮動小数点数yと正の整数mを引数とし,yの小数点m桁より下を切り捨てて出力する関数trunc(y, m)をつくりなさい。 次に,これらの2つの関数を用いて,e^xの近似値を小数点以下の桁数を指定して出力するプログラムをつくりなさい [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:5月30日 [5] その他の制限:なし
385 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:39:59 ] すいません>>384 はミスです。 [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 指数関数e^xの近似値を返す関数expon(x, n)をつくります。第1引数は浮動小数点数xで,第2引数はexをTaylor展開で展開する際の最大次数nになります。n次項までのTaylor展開の式は下に示す通りです。 さらに,浮動小数点数yと正の整数mを引数とし,yの小数点m桁より下を切り捨てて出力する関数trunc(y, m)をつくりなさい。 次に,これらの2つの関数を用いて,e^xの近似値を小数点以下の桁数を指定して出力するプログラムをつくりなさい 関数truncは,trunc(-3.141593, 3) と呼び出すと,-3.141のように画面に出力する。但し,printf("%.*f", m, y); は用いないで定義すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:5月30日 [5] その他の制限:なし
386 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:55:54 ] [1] 授業単元: ソフトウエア科学 [2] 問題文(含コード&リンク): 4桁の10進数の各桁を千の位からd3,d2,d1,d0で表すと、 ((d3*10+d2)*10+d1)*10+d0という計算をすることにより、元の10進数を得ることができる。 4桁の10進数の各桁を、まず、大きさ4のint型配列に1桁ずつに入力し、 その後、上記の計算法により、元の10進数にして表示するプログラムを書け。 ただし、上記の計算部分はfor文による繰り返しにより記述すること。 例;入力が4536ならば、((4*10+5)*10+3)*10+6=4536の計算をして表示する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年5月29日12:50まで [5] その他の制限:特になし お願いします。
387 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 11:17:17 ] >>386 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9283.c 表示周り適当に修正してちょ
388 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 11:27:02 ] >>387 ありがとうございました。
389 名前:デフォルトの名無しさん [2009/05/28(木) 11:47:24 ] もうちょっと面白い問題プリーズ
390 名前:デフォルトの名無しさん [2009/05/28(木) 12:09:18 ] >>380 ありがとうございます
391 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:10:02 ] >>389 オナニーは楽しいかい?
392 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 14:13:57 ] >>389 Windowsのフリーセルの最小手順検索はいかが? ここで最小手順とは人間が操作を行う回数のこと 列移動も一回として数える
393 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 14:40:16 ] >>365 さん 入力した内容を暗号化(置き換え)してファイルに保存する方法が分からないです よろしくお願いします
394 名前:joyful_age mailto:sage [2009/05/28(木) 14:44:16 ] >>363 (Ex-1) Data input by menu. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9284.txt
395 名前:joyful_age mailto:sage [2009/05/28(木) 15:04:34 ] >>363 修正。ID、名前の数字は置換しない。 void angouka(char *s) { for(; *s != '\0'; s++) if(*s < '0' || *s > '9') (*s)++; }
396 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 15:14:18 ] >>389 難易度が高くて未回答の問題が幾つもあるだろ。解いてみろ。