- 1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)]
- あなたが解けない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++の宿題片付けます 135代目 pc12.2ch.net/test/read.cgi/tech/1269438098/
- 474 名前:デフォルトの名無しさん [2010/06/08(火) 18:28:05 ]
- prevcってなんだ?見たことも聞いたこともない。
苦し紛れの技巧か? あと=''; ''の中は空白だな。
- 475 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:36:20 ]
- >>454
C#宿題スレに書きこんでみるか?
- 476 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:39:34 ]
- #include <stdio.h>
int main(void) { int sum = 0, temp; char ch = '+'; do { scanf("%d", &temp); if(ch == '+') sum += temp; else if(ch == '-') sum -= temp; scanf(" %c", &ch); }while(ch != '='); printf("%d\n", sum); return 0; }
- 477 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:46:02 ]
- あげて古いの蒸し返してるのは:4 ◆nNHcoCEvyoだろ
こいつに何かを理解させるのは無理だって
- 478 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:06 ]
- >>474
一個前のを取っておきたかったんだと思うよ。技巧ってほどじゃない
- 479 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:07 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):オイラーの定理の仮証明 [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:visual c++ [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:初心者なので。。。 互いに素なnとaについてオイラーの定理が成り立つか確かめる。 とりあえずnは1以上5以下の数とし、aは1以上n以下とする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10654.txt これを実行すると何故か一部でエラーが出るんですが(プログラミング的な意味ではなく) その理由と解決方法を教えてください
- 480 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:17:35 ]
- >>479
count = 1;の位置がおかしい
- 481 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:19:22 ]
- >>480
なにがココまではおkなんだか・・・ ありがとうございます
- 482 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:21:07 ]
- 関係ないけどそのままだと数が大きくなるとオーバーフローしてしまう。
oira *= a; oira %= n; ってすれば数が大きくなっても対応可能。
- 483 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:23:02 ]
- >>482
まじでそこを聞こうと思ってたところです ありがとうございます
- 484 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:46:03 ]
- >>482
度々悪いんですけど なぜそうすればいいのか教えてもらえませんか? 自分で考えてもわかりませんでした わからないのは なぜ数が大きくなっても対応出来るのかではなく なぜこの計算方法でも正しい結果が得られるのかです
- 485 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:00:30 ]
- めんどくさいからパス
- 486 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:08:13 ]
- そか(’・ω・`)
oiraにnで割った余りを入れちゃったら 次a倍すると意図しない値になっちゃいそうなんだ 少なくとも俺のない頭はそう思っちゃうorz 一回一回a倍とnで割った余りをいれようとした根拠とか考え方とかをご教授願いたかった(’;ω;`)
- 487 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:19:18 ]
- これって高校数学の範囲じゃねーの?
- 488 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:22:42 ]
- もしかして俺の勘違いかもしれん
>>482って if(i == a){ printf("n = %2d, a = %2d", n, a); oira = 1; for(j = 0 ; j < count ; j++){ oira *= a; oira %= n; } if((oira - 1) % n == 0){ printf(": verified\n"); } else{ printf(": error\n"); } } みたいに直せって事だよな?
- 489 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:33:16 ]
- もしかして俺のバカさ加減に呆れてますか?(;ω;`)
- 490 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:55:42 ]
- 少なくとも処理結果は正しいの?
- 491 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:58:49 ]
- a = n * b + cの形に変形してかけて見ればわからない?
a * a = (n * b + c) * (n * b + c) =(n*b)^2 + 2 * n * b + c^2 (n*b)^2と2*n*bは明らかにnで割り切れるから、 a*aをnで割った余りはc^2をnで割った余りになる
- 492 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:07:13 ]
- それがoira-1をnで割ったあまりにどう応用できるのか、俺もわからないので>>489は一人で泣かなくていい
- 493 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:19 ]
- >>491
解説ありがとう なんとなく考え方はわかったがまだしっくりこないのでもうちょい粘ってみる >>492 気が楽になった
- 494 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:30 ]
- oira-1がnで割り切れる=oiraをnで割った余りが1
- 495 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:35:01 ]
- #include <stdio.h>
#define NUMBER 5 int gcd(int a, int b) { return a % b ? gcd(b, a%b) : b; } int main(void) { int i, j, c, n, a, oira; for(n=1; n<=NUMBER; n++) { for(a=1; a<n; a++) { if(gcd(n, a)==1) { printf("n=%2d,a=%2d:", n, a); for(i=1,c=0; i<n; i++) if(gcd(n, i)==1) c++; for(i=0,oira=1; i<c; i++) { oira *= a; oira %= n; } if(oira == 1) printf("verified\n"); else printf("error\n"); }}} return 0; }
- 496 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:37:49 ]
- まだ関数と{? : }は習ってないから使っちゃいけないんだ
あくまで標準入出力とfor, while, if だけで
- 497 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:39:35 ]
- 使っちゃいけないという思い込み。
本当に使うなといわれた?
- 498 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:43:13 ]
- 思い込みだな
使っちゃいけないことは無いだろうが使わないでできるならそれに越したことはないかと
- 499 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:49:33 ]
- そんなことしてる間に
>>491>>494のおかげで理解できました 理解できただけで次似たようなコード書くとき思いつくかどうかは別だけど
- 500 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:52 ]
- countを求めるのはnとaが互いに素であることがわかってからの方がいい。
- 501 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:58:04 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): int plot(int x,int y,int c);は座標(x,y)に色cを設定する関数である。 これが与えられているものとして コマンドラインから(x,y)の形で座標値が何個か与えられた時 (0<=x,y<=10000)これらに異なる色(選択は自由)を与える。 0<=x,y<=10000を満たす座標の各点についてその点から 最も近い点の色をその点に設定する(2つ以上の点から等距離 にある場合は、これらの点の中でコマンドラインで最初に指定 された点の色を設定) この処理を行うプログラムを記述する [3] 環境 [3.1] OS:Windows XP(Service pack 3) [3.2] コンパイラ名とバージョン:visual c++.net 2005 [3.3] 言語:C++ [4] 期限:6/11迄 [5] その他の制限: ヘッダファイルは使わない。extern宣言でplot関数を宣言した のちにpaint関数のコードを記述すること。 0<=x,y<=10000と仮定して良い。 plot関数を適当な名前の整数ファイルの1024*y+(x % 1024)番目 のレコードに値を設定する実装としたドライバコードを使って テストするとよい。
- 502 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:00:43 ]
- #include<stdio.h>
#define NUMBER 5 int main(void) { int n, a, oira, c, i, j, k; for(n=1; n<=NUMBER; n++) { for(a=1; a<n; a++) { for(i=n, j=a; k=i%j; i=j, j=k); if(j!=1) continue; printf("n = %2d a = %2d :", n, a); for(c=oira=1; c<n; c++) { for(i=n, j=c; k=i%j; i=j, j=k); if(j!=1) continue; oira *= a; oira %= n; } if(oira==1) printf("verified\n"); else printf("error\n"); }} return 0; }
- 503 名前:501 mailto:sage [2010/06/08(火) 22:00:45 ]
- 問題文がちょっと抜けてました。訂正させてください。
○この処理を行うプログラムのメイン処理を行う関数 void paint( int argc,char **argv); を記述する ×この処理を行うプログラムを記述する
- 504 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:01:35 ]
- >>500
助言d それはその方が無駄にφ(n)(=count)を求めなくて済むからか? だとしたらその通りかもしれないから今後の参考にするわ
- 505 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:11:30 ]
- あくまで好みだからそんなの自分の好きにしろとか言われるかもだが
プログラム書くときスペースとか改行ってどのタイミングで入れてる? 学校では a = a + 1 って書く奴がいれば a=a+1 って書く奴もいるし for(i=0;i<5;i++)って書く奴がいれば for(i = 0 ; i < 5 ; i++)って書く奴もいるし こうしたほうが効率がいいとか後で見やすいってのがあるなら参考にしたい 今なら癖とかないから変えられるし
- 506 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:12:55 ]
- >>504
そう。 できるだけ必要のない無駄な処理はしないってのが大事。
- 507 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:02 ]
- >>505
どうぞ google-styleguide.googlecode.com/svn/trunk/cppguide.xml
- 508 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:50 ]
- 何のIDE使ってるか知らないけど
vs2008使ってる俺は適当に書いてから「編集→詳細→選択範囲のフォーマット」で整形してる
- 509 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:20:58 ]
- www.textdrop.net/google-styleguide-ja/cppguide.xml
あえてこっちを載せないことに悪意を感じる
- 510 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:25:31 ]
- >>509
知らなかったんだごめんよ
- 511 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:39:58 ]
- >>502が理解できない
てか発想が秀逸すぎて手に負えない
- 512 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:43:14 ]
- 最大公約数をループで求めてるだけ
- 513 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:50:13 ]
- とりあえず褒めとけばいいと思ってない?
- 514 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:52:00 ]
- >>501
0<=x,y<=10000を満たす座標の各点についてその点から 最も近い点の色をその点に設定する ってあるけど 各々の座標の色はどう初期化するべきなの? なにかしら初期化しておかないと最も近い点の色もなにもないと思うんだけど。
- 515 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:09:33 ]
- 引数で与えられた点の色はこっちで好きに決めていいんだろ
- 516 名前:430 mailto:sage [2010/06/08(火) 23:12:01 ]
- >>505
K&R にしておけば後ろ指をさされることはないかと。 ただし私は int main() { ... } とかえている。 emacs(xyzzy) ではこのほうが便利だから。
- 517 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:54:47 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10656.txt プログラムと問題文が書いてあります [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2010年6月9日中に提出 [5] その他の制限: 特にありません よろしくお願いします。
- 518 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:13:20 ]
- [1] 授業単元:プログラミング演習
[2] 問題文:整数nを入力し、以下のようにサイズnの“N型の図形”を、奇数目入力では”*”、偶数目入力では”+”で表示で表示されるプログラムを作成しなさい。なお、処理の終了はnが0以下の時とする。複合条件やスイッチを用いて作製なさい。 実行例 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10658.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4]期限:6/9日PM10:00 [5]その他制限: printf int while scanf float for のみの使用 なお、||、break、return,は使用禁止 プログラム形式はサンプル風にお願いします kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt
- 519 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:19:59 ]
- 上の実行例の訂正です
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10661.txt
- 520 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:41:51 ]
- #include <stdio.h>
int main(void) { int i, j, n; while(scanf("%d", &n)==1 && n > 0) { printf("n=%d\n", n); for(i=0; i<n; i++) for(j=0; j<=n; j++) printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); } return 0; }
- 521 名前:9 [2010/06/09(水) 10:07:40 ]
- >>432
すごいです!!…学校で習った感じに少し、 書き直させて頂きました(>_<) こんなに早く出来ると思ってなかったので びっくりしました。 本当に助かりました!有難う御座いました☆
- 522 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:43:14 ]
- シルエット
カーディガン レントゲン サンドイッチ
- 523 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 11:01:34 ]
- >>501
ideone.com/EtsT0 作ってみたけどなんか違うから、だれか直してくれ
- 524 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:11:42 ]
- [1] 授業単元:データ構造
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10662.txt [3] 環境 [3.1] OS:特に指定なし [3.2] gcc 3.2 [3.3] 言語: (C) [4] 期限: ([2010年6月10日15:00まで] ) [5] その他の制限: なし よろしくお願いします。
- 525 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:45:36 ]
- >>524
おまえ、5つの数字の列の取りうる範囲は0~99999の100,000個だぞ。 だから入れるバケツの大きさは100,000の配列にしてそこへ2000個のデータを 5桁の数字に対応するバケツに次々入れて、終わったら番号の小さいバケツから順番に 数字を取り出すようにしないとダメだぞ。
- 526 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:47:15 ]
- void sort(char data[][LENGTH+1], int size)
{ int *p = calloc(100000, sizeof(int)); int i, j, k; for(i=0; i<size; i++) p[atoi(data[i])]++; for(i=j=0; i<100000; i++) for(k=0; k<p[i]; k++) sprintf(data[j++], "%05d", i); free(p); }
- 527 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:46:55 ]
- void sort(char data[][SLENGTH+1], int size) {
int i, j=0, k; char p5[6]; int *p = calloc(100000, sizeof(int)); for(i=0; i<size; i++) p[atoi(data[i])]++; for(i=0; i<100000; i++) { if(p[i]) { sprintf(p5, "%05d", i); for(k=0; k<p[i]; k++) strncpy(data[j++], p5, 5); } } free(p); }
- 528 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 18:23:29 ]
- >>522
申し訳ないですが、 ||と条件文の中にさらに条件文は使用禁止なんです。 説明足りなくてスミマセン。 [printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); ココと] [while(scanf("%d", &n)==1 && n > 0)ココの部分です]
- 529 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:11:45 ]
- >>528
これなら大丈夫だろw ideone.com/lGet1
- 530 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:27:49 ]
-
5つの数字が全部0って可能性はないのかな? もし0が入る可能性があるのならallocateされた領域の初期値が0じゃまずいかも。
- 531 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:28:55 ]
- data[000000]++;
- 532 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:39:49 ]
- >>530
お前は何をいってるんだ
- 533 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:07:46 ]
- >>529
何度もすみません さっきの説明が分かりにくかったですね; forの中にscanfとかを入れるのがダメなんです。 1行に付きscanf、forなどは1つです。 printf int while scanf float for のみの使用です。 それ以外は使用禁止です。 return || else if は使用禁止です。
- 534 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:09:59 ]
- >>528
誰が禁止って言ったの?
- 535 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:21:51 ]
- >>531-532
わはははは、javaやりながらここ見てたから勘違いだ。笑えwwwww
- 536 名前:デフォルトの名無しさん [2010/06/09(水) 20:33:58 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク): 次の仕様を満たすプログラムを作成せよ 「xy 平面内に任意の電荷量の点電荷を複数個配置する.xy 平面内の原点Oを中心とする4 m 四方(±2 m)の領域内において,位置r(x, y)に形成される電界Erや電位Φrを計 算する.」複数個の点電荷で形成される電界Erや電位Φrを,任意の位置r で計算する際は,重ね合わせの原理を用います 電界ベクトルの計算は, x 成分とy 成分に分けて行います [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:6月11日 [5] その他の制限: 特になし
- 537 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:54:43 ]
- 学校でやってないところは使うなと
先生に言われました;;
- 538 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:01:58 ]
- エスパー無理
- 539 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:03:14 ]
- >>537
学校と先生を教えてくれるかな?w
- 540 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:04:30 ]
- >>537
誰だお前は
- 541 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:11:04 ]
- 学校でやってないこと 使うなと
講師の先生(せんせ)に 言われたよ ――痴楽 綴り方教室
- 542 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:13:19 ]
- ≫538
例ですと 前回の課題の 問題文:整数nを入力し、以下のようになサイズnの”Z型の図形”を”*”で表示するプログラムを作成しなさい。 ただし、図形を表示するためのnの値は3以上とし、2以下の値が入力された場合は処理を終了する様にしなさい。 [実行例] 3 <-n入力 n=3 *** * *** 4 <-n入力 n=4 **** * * **** 8 <-n入力 n=8 ******** * * * * * * ******** kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt はこうなりました。
- 543 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:21:14 ]
- エスパーできないって言ってるんだが
- 544 名前:537 542 mailto:sage [2010/06/09(水) 21:27:23 ]
- ≫534
すみません!! 番号うつの忘れてました。 ホントすみません;;
- 545 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:35:42 ]
- >>536
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10664.txt 詰めは自分でやってくれ
- 546 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:00:30 ]
- <iostream>とか<studio.h>って何が違うんですか?
- 547 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:03:59 ]
- >>546
STanDard InputOutput Headerな 定義されてる関数群がちがう。
- 548 名前:デフォルトの名無しさん [2010/06/10(木) 00:33:37 ]
- もう本当に挫折しそうです。
関数を二つ pen()とqen()として作って int main()の中に呼びたいんですが この時pen()の実引数をqen()にしたいんですが これがうまくいきません、どうしたらいいですか? レス代行なので長いプログラムは書けません・すいません。 int main(void) a=pen(); qen(a); としてもpen()とqen()が別個に呼び出されるだけで一つの作業と なりません。
- 549 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:48:35 ]
- >>548
penの引数をqenの引数にしようとしているようには見えないので、いろいろおっちょこちょいな人なのかな。 関数ポインタをキーワードにいろいろ調べてみてください。
- 550 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:07:31 ]
- pen()の実引数をqen()にするなら
pen(qen); だろ。
- 551 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:46:15 ]
- pen(void (*p)(void)); かなシグネチャは
pen()の中で (*p)(); もしくは p(); として呼び出す
- 552 名前:デフォルトの名無しさん [2010/06/10(木) 07:52:36 ]
- >>550
double a; qen(a); pen(qen); ですか?普通に無理でしたが・・ pen(qen);だけでもまぁ無理でした。 >>551 pen((*p)(qen(a));ってことですか?これも無理でした。
- 553 名前:デフォルトの名無しさん [2010/06/10(木) 07:55:25 ]
- 関数ポインタってのあるんですが、馬鹿でした。で
int mainの中で p= pen; qen((*p)pen());とかごちゃごちゃ色々なとこ変えて、 付け足して 90回くらい思考錯誤したけど全部だめした...... ちなみにpen()、qen()自体はそれぞれsin関数とcos関数 です。ポインタ関数理解したいのでこのままの構造でい きたいと思ってます。
- 554 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 07:59:47 ]
- 何がしたいのかさっぱり伝わってこない
- 555 名前:430 mailto:sage [2010/06/10(木) 08:09:29 ]
- >>553
#include <stdio.h> #include <math.h> double p(double (*f)(double), double a) { return sin((*f)(a)); } double q(double a) { return cos(a); } int main() { double a, b; a = 3.1415926; b = p(q, a); printf("%f\n", b); return 0; } /* end */
- 556 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:12:37 ]
- cos()の返り値をsin()の引数にするってw
- 557 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:21:43 ]
- 関数を関数の引数にするってことを理解できてないようにみえる
- 558 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:23:28 ]
- >>554
関数を2つ呼び出して、一つの関数をもうひとつの関数の 引数にしたいんです。ただそれだけです。
- 559 名前:デフォルトの名無しさん [2010/06/10(木) 08:23:50 ]
- >>555
わざわざありがとうございます、doubleじゃなくてfloatでした。 この時も関数ポインタはfですね? あとretrunっているのですか?どういう役割なのかなぁ.... それとa=3.1415926..とは? 色々ややこしいなぁ、簡単なプログラムなのにこんな複雑だとは....
- 560 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:25:31 ]
- >>558
もしかして sin(cos(a)); か?この式に何の意味があるのかは不明だが
- 561 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:27:38 ]
- >>559
問題を適切に抜き出す能力が足りないだけ 少なくとも俺は>>558読んでもさっぱりわからん
- 562 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:28:07 ]
- >>560
それでオッケーなら>548でもオッケーだろ
- 563 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:30:26 ]
- こういう自分の勝手な解釈で嵌ってくアホ見ると、
余計なことしないで教科書のサンプルでも打ち込んでろって思うな
- 564 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:38:27 ]
- マゾなんだろ
簡単な事をわざわざ複雑怪奇に書いて苦しみ悶える事に快感を覚えるタイプ
- 565 名前:デフォルトの名無しさん [2010/06/10(木) 08:39:27 ]
- >>561
いやめちゃくちゃ単純なんですが・・ 合成関数のプログラムですよ。 sin(cos(a))ですよ。 関数が二つあるんだから、二つの関数呼び出す必要ありますよね。 全然意味不明じゃないですが・・・
- 566 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:44:22 ]
- x=cos(a);
y=sin(x); 変数と代入から勉強だな。
- 567 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:18 ]
- >>565
それはcos(a)の返り値をsin()の実引数にするといい、 cos()をsin()の実引数にするとは言わない。 正しく用語を使えてないから、他人に正しく伝わらない。
- 568 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:37 ]
- >>565
まだわからない。 double sincos(double a) { return sin(cos(a)); } ではどうだめなのか。
- 569 名前:デフォルトの名無しさん [2010/06/10(木) 08:51:53 ]
- >>567
すいません。その通りです。返却値をsin()の実引数の実引数にしたいんです。 >>568 あぁ絶対言うかと思いました。 別に合成関数のプログラム作りたいわけじゃなくて、関数の呼び出しという 構造を学びたいだけで。それなら僕も考えてました。複雑なプログラムはそれ じゃ無理です。
- 570 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:55:31 ]
- お前に複雑なプログラムの何がわかるってんだよw
- 571 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:58:56 ]
- っと、>>569はなりすましか
- 572 名前:553 mailto:sage [2010/06/10(木) 09:00:44 ]
- このスレにいる人は全員低脳ばっかりですね。
- 573 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:01:44 ]
- ・質問者はなりすましを防ぐため、トリップを使ってください。
名前欄に、「好きな数字#...」に続けて任意の文字列
- 574 名前:デフォルトの名無しさん [2010/06/10(木) 09:02:36 ]
- >>567
以後気をつけますんで、お願いします、どうしたらいいでしょう.... >>570 少し複雑になったら関数が必要だから。別にプログラムの何もわからないが。
|

|