- 1 名前:デフォルトの名無しさん [2007/07/15(日) 22:31: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++の宿題を片付けます 92代目 pc11.2ch.net/test/read.cgi/tech/1183511364/
- 826 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 17:58:03 ]
- だから答える気がない奴はいちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
行頭 # 野郎w
- 827 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:03:33 ]
- >>826
お前も、なぁ…?
- 828 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:07:01 ]
- >>826
こいつ、他のスレにも潜んでるよな IDが出ないのをいいことに好き勝手やってやがる
- 829 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:08:26 ]
- >>828
あ〜はいはい、去年質問したけど質問の仕方が悪くて 今年は自分が質問者を弄るようになった基地外えせ回答者さん乙でありますw うぜぇから他の回答者の迷惑になるから、文句を言うだけのレスはするなや、答える気も 答える能力もないくせに、うざすぎ
- 830 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:10:00 ]
- [1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク): 二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と 加算(+)のみで解くプログラムを作成しなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 7月25日まで [5] その他の制限: ビット演算まで習っています。 お願いします。
- 831 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:11:10 ]
- >>828
まぁ、アレだからスルーしてあげてくれ。
- 832 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:11:43 ]
- 答える気も能力もないクズらが質問者を叩くだけで自己満足か、必死だな
- 833 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:17:21 ]
- 何だ、本当に答える気がなくて質問者をスレのルールに則って詰るだけの低レベルか。
相手にするだけ無駄だ、お前ら俺がいる限り、もうこのスレには来なくて良いから。 邪魔だから失せろ。
- 834 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:19:16 ]
- >>827
質問者に対して、回答ではなく叩きでレスしているって意味だと思うんだが。 頭大丈夫か?
- 835 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:20:30 ]
- ここは馬鹿がアホをたたくスレですか?
- 836 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:21:31 ]
- >>834
お前こそ頭大丈夫か?文盲?
- 837 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:21:38 ]
- >>833
勝手にすればwww
- 838 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:22:39 ]
- >>834
>いちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって これに対してオマエモナーだろ。
- 839 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:24:38 ]
- >>838
いや、オマエモナーは>>827=>>838さんの専売特許ですから
- 840 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:27:21 ]
- なんか話が通じてないぞ。
- 841 名前:にゃ〜 [2007/07/24(火) 18:31:53 ]
- f(x)=sin(x)をテイラー展開すると
∞ f(x)=(-1)^(k-1)*{x^(2k-1)/(2k-1)!} k=1 となる.これを利用してsin(x)の値を多項式近似する関数double mysin(double x)を定義し,この関数を利用して,読み込んだ実数xのsin(x)を計算して出力するプログラム(sin.c)を書け. また,数学関数sin(x)と自分で作ったsin(x)を比較せよ. という問題なのですがどうしてもわからないんです。 今日中にできる方いらっしゃいますか?? 理解したいので、コメント付きでどうかお願いします。
- 842 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:36:48 ]
- ループで適当なとこまで足してきゃいいだけだろ。
- 843 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:39:32 ]
- >>841
どの辺が分からない?式の意味は分かるよね?
- 844 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:58:17 ]
- >>841
#include <stdio.h> #include <math.h> double mysin(double x) { double sub = 1.0; int last = 1001; /* 奇数 */ while (last > 1) { sub = 1 - (x*x / ((last-1)*last)) * sub; last -= 2; } return x * sub; } int main(int argc, char *argv[]) { while (1) { double x; scanf("%lf", &x); printf("mysin(x) = %lf\t(sin(x) = %lf)\n", mysin(x), sin(x)); } } /* コメント:原点から遠ざかると近似が効かなくなるのはマクローリンの宿命だな */
- 845 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 20:27:21 ]
- マクローリン云々よりも漸化式の形で解くのに疑問を持つ
1001もマジックでエロい人だなぁ
- 846 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 21:42:25 ]
- >>841
クソわかりやすいつもり。わからないなら数学やりなおせ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4737.c
- 847 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 21:55:07 ]
- >>753
ありがとうございますー 最長一致するようにして使わせてもらいます >\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ 勘違いしてたみたいですね すいません >つーかなに?ほんとはライブラリとか使えんじゃねーのか??? >>>420が問題の趣旨を理解していない気が激しくするぞコラ 授業ではプリプロセッサにまったく触れてないんでそれはないです
- 848 名前:デフォルトの名無しさん [2007/07/24(火) 22:22:39 ]
- さんざん考えたけど難しかったです。
よろしくお願いします。 [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): 2つの複素数z=a+bi、w=c+di(ただしiは虚数単位)を読み込み、足し算とかけ算を計算して表示するプログラムを作成せよ。 但し、以下の仕様を満足するように作成すること。 ・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXを構造体で定義する。 ・足し算の関数:COMP_ADD(z、w)とかけ算の関数:COMP_MULT(z、w)を作成し、main関数ではこれらの関数を呼び出す。 (実行例) 1つ目の複素数(実部):2 1つ目の複素数(虚部):3 2つ目の複素数(実部):4 2つ目の複素数(虚部):-2 足し算:(6)+(1)i かけ算:(14)+(8)i (ヒント) 複素数を扱う構造体(メンバで実数部、虚数部を2つの数値で格納)を宣言し、各変数を格納、演算を行う。 複素数同士の足し算、かけ算は普通に行う。 (a+bi)+(c+di) (a+bi)×(c+di) を展開して虚数の2乗は-1という知識があれば解ける。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:7/26(木)12:00まで
- 849 名前:にゃ〜 [2007/07/24(火) 22:46:34 ]
- いろいろやってみたところ自己解決しました
載せてくれた人もいるみたいですが いちおう礼をいっておきます
- 850 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:00:02 ]
- >構造体COMPLEXを構造体で定義する。
構造体を構造体以外でどうやって定義するんだよw
- 851 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:00:30 ]
- >>848 ほい。名前が適当だから、そこだけ自分で修正して。
#include <stdio.h> typedef struct{ double r; double i; } comp; comp add_comp(comp c1,comp c2){ comp tmp; tmp.r=c1.r+c2.r; tmp.i=c1.i+c2.i; return tmp; } comp mul_comp(comp c1,comp c2){ comp tmp; tmp.r=c1.r*c2.r-c1.i*c2.i; tmp.i=c1.r*c2.i+c1.i*c2.r; return tmp; }
- 852 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:01:35 ]
- >>851の続き
int main(){ comp c1={2.0,3.0}; comp c2={4.0,-2.0}; comp result; printf("1つ目の複素数(実部):%lf\n",c1.r); printf("1つ目の複素数(虚部):%lf\n",c1.i); printf("2つ目の複素数(実部):%lf\n",c2.r); printf("2つ目の複素数(虚部):%lf\n",c2.i); result=add_comp(c1,c2); printf("足し算:(%lf)+(%lf)i\n",result.r,result.i); result=mul_comp(c1,c2); printf("かけ算:(%lf)+(%lf)i\n",result.r,result.i); return 0; }
- 853 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:24:02 ]
- [1] 授業単元:c言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4739.txt [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限: 7月26日まで [5] その他の制限:ファイルを読込んだり、書込んだりするところを習いました。
- 854 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:29:39 ]
- >>853
例をみると、改行も区切りと見なしてるが、それでいいのか?
- 855 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:32:04 ]
- >>854
はい
- 856 名前:にゃ〜 [2007/07/25(水) 00:37:12 ]
- >>844
わかりやすいっす!! ありがとうございます。勉強しなおします
- 857 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:39:18 ]
- >>853
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4740.c
- 858 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:52:03 ]
- >>853
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4741.c
- 859 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:54:40 ]
- >>853 ちょい修正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4742.c
- 860 名前:853 mailto:sage [2007/07/25(水) 00:57:53 ]
- すいません。
補足で 入力ファイルを読込モードでオープン 出力ファイルを書出モードでオープン while ( 1 ) { 入力ファイルから書式付で字句を読込 ファイル終端なら脱出 出力ファイルに書式付で番号を付けて書込 } 入力ファイルをクローズ 出力ファイルをクローズ と言う形で作れと書いていました。
- 861 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:02:14 ]
- >>860
後だしイクナイ
- 862 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:03:16 ]
- >>853 >>860
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4743.c
- 863 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:04:32 ]
- >>862の#include <ctype.h>は不要だから消しておいて
- 864 名前:853 mailto:sage [2007/07/25(水) 01:15:02 ]
- ありがとうございました。
- 865 名前:デフォルトの名無しさん [2007/07/25(水) 10:02:24 ]
- >>851 >>852
ありがとうございます。 ソースも分かりやすく書いてくれたみたいで、参考になります。
- 866 名前:デフォルトの名無しさん [2007/07/25(水) 10:02:24 ]
- パワプロ14でオールAを作るプログラムを作れ
- 867 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:48:35 ]
- すごい宿題だな
- 868 名前:デフォルトの名無しさん [2007/07/25(水) 11:20:58 ]
- >>866
攻略本が必要だ。 でも宿題の内容熱いな。
- 869 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 11:44:08 ]
- 探索とその評価の方法をパワプロを通して学ぶわけだな
- 870 名前: ◆6MtsdamhF6 [2007/07/25(水) 11:45:35 ]
- すいません、まだ初心者であんまりわかりません。
締切が近いのでどうかお願いします 【質問テンプレ】 [1] 授業単元:プログラミングC言語 [2] 問題文(含コード&リンク): 次の違いに注意しながら、forの変わりにwhileを使うものにそれぞれ 書き換えなさい。ただし書き換えは最低限にすること (1) #include<stdio.h> main(){ int nc, c; for(nc = 0; (c= getchar()) != EOF; nc++) printf("%c", c); printf("\nTatal=%d\n", nc); } A#include<stdio.h> main(){ int nc, c; for(nc = 0; (c= getchar()) != EOF; nc++) putchar(c); printf("\n%d\n", nc); } [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:今日の14時までなんです。 どうかおねがいします。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:19:36 ]
- #include<stdio.h>
main(){ int nc=0, c; while((c= getchar()) != EOF) { printf("%c", c); nc++; } printf("\nTatal=%d\n", nc); } #include<stdio.h> main(){ int nc=0, c; while((c= getchar()) != EOF) { putchar(c); n++; } printf("\n%d\n", nc); } 期限切れだが
- 872 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:22:21 ]
- Aのn++はnc++の間違い
- 873 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:46:14 ]
- 今、>>841をやってみた。最初は簡単かと思ったけど、
そのまま階乗つかうとオーバーフローするから面倒なのね。 >>844ほど華麗ではないけど、x/n * ...x/3 * x/2 * x/1の和で計算した。
- 874 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:55:45 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク): 以下のように、2桁以下の正整数が1行に3つずつ書かれたファイルを input.txt とする。 ただし、ファイルの末尾には、終了を表す番兵0がある。 1 45 90 2 7 41 13 67 60 0 入力リダイレクトで input.txt を読み込み、出力リダイレクトで、以下のような形式で output.txt に保存するプログラムを作れ。 番号 数学 英語 合計 01 45 90 135 02 7 41 48 13 67 60 127 [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限:7/27 反復構文を使うっぽいです。
- 875 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:42:24 ]
- [1] 授業単元:情報基礎
[2] 問題文:次の仕様を満たすプログラムを作成せよ (1)入力は2以上の整数n 出力はnのすべての正の約数 (2)入力は2以上の整数n 出力はnの正の約数の個数 (3)入力は2以上の整数n 出力はnが素数ならば"n is prime", 合成数ならば"n is not prime" (nの部分には、入力した整数が表示されるようにすること) 3つのプログラムは1つにまとめてもよい。その場合には、ど れが約数でどれが約数の個数を表しているかが分かるようにす ること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:7月27日(金)提出は20:45までです
- 876 名前:デフォルトの名無しさん [2007/07/25(水) 16:43:30 ]
- >>874
#include <stdio.h> void main(){ int buf = 0; int count = 0; int total = 0; printf("番号 数学 英語 合計\n"); while(scanf("%d",&buf)) { if(buf == 0) break; count++; printf("%d ", buf); total += buf; if(!(count%3)){ printf("%d\n", total); total = 0; } } } なんにもエラー処理してないけどこんなんでいいかな・・・
- 877 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:58:51 ]
- >>875
#include<stdio.h> int main(){ int n,c=0,i; printf("n="); scanf("%d",&n); for(i=2;i<=n;i++) if(n%i==0) c++,printf("%d ",i); printf("\n%d\nn is ",c); if(c!=1) printf("not "); printf("prime.\n"); return 0; }
- 878 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:01:34 ]
- 間違えた・・
#include<stdio.h> int main(){ int n,c=0,i; printf("n="); scanf("%d",&n); for(i=2;i<=n;i++) if(n%i==0) c++,printf("%d ",i); printf("\n%d\n%d is ",c,n); //修正 if(c!=1) printf("not "); printf("prime.\n"); return 0; }
- 879 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:03:43 ]
- 学校の先生はこのスレにかかれているままのコードで
宿題をだしている生徒がいたら、減点すればいいわけだなwwww
- 880 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:17:55 ]
- 教官、見てるなら指摘された問題の間違い位直せよ。
- 881 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:31:47 ]
- そこまで良心的な教師いないよ
- 882 名前:デフォルトの名無しさん [2007/07/25(水) 17:55:14 ]
- [1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、 体積の分布(区間数は20程度)を表示するプログラムを 以下の要求に従って作成し、実行しなさい。 1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する. typedef struct {. . .} Tetra; 2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する. Tetra mk_tetra(void) 3,四面体の体積を返す次の名前の関数を定義する. double vol_tetra(Tetra t) 4,Nの値は実行時にキー入力するように設計しなさい. [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日20時迄 [5] その他の制限: ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。 2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる V=1/6|(r1×r2)・r3| vector.h はこれです www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h 今日が期限なんですが、全然わからないんです。 よろしくお願い致します
- 883 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:01:02 ]
- >>882
結果表示のイメージが分からない。グラフにするのかな?合計数値?
- 884 名前: ◆TDJK/P.926 [2007/07/25(水) 18:16:42 ]
- 【質問テンプレ】
[1] 授業単元:プログラミング言語 [2] 問題文(含コード&リンク) 講義中の題材として扱っていた電卓を、以下の点について改良せよ。 (1)変数に文字列を代入できるようにする。たとえば s1="Programing" word="apple" のような代入が可能になる。 (2)文字を扱う関数を取り扱えるようにする。たとえば s1="Programing" s2="Language" s3=concatenate(s1,s2) 上で代入されたs1とs2を連結したものをs3に代入する。 s3 =ProgramingLanguage (5)次のようなif文を使えるようにする。→if(条件式) 実行文 例: if(a+b>10) a=a-1 条件式には、>または<が使用できるものとする。条件式が成立していたときには、実行文(複文も可)を実行する。 (6)その他、この電卓に追加するとよいと思う昨日を考え、実現してみよ。 [3] 環境 [3.1] OS:WindowsXP 上でのUNIX [3.2] コンパイラ名とバージョン: gcc (※yaccとlexのプログラミングです。 [3.3] 言語:C言語 [4] 期限: (2007年07月27日20:00まで] [5] その他の制限:講義中の題材のソースはすぐアップします。
- 885 名前: ◆TDJK/P.926 [2007/07/25(水) 18:19:36 ]
- >>884のソースです。
※ヘッダファイル:ch3-05.h #define NSYMS 20 /* maximum number of symbols */ struct symtab { char *name; double (*funcptr)(); double value; } symtab[NSYMS]; struct symtab *symlook();
- 886 名前: ◆TDJK/P.926 [2007/07/25(水) 18:20:42 ]
- >>885 続き
※lexファイル:ch3-05.l %{ #include "y.tab.h" #include "ch3-05.h" #include <math.h> %} %% ([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) { yylval.dval = atof(yytext); return NUMBER; } [ \t] ; /* ignore white space */ [A-Za-z][A-Za-z0-9]* { /* return symbol pointer */ struct symtab *sp = symlook(yytext); yylval.symp = sp; return NAME; } "$" { return 0; /* end of input */ } \n | . return yytext[0]; %% yyerror(char *errmsg) { fprintf(stderr,"ERROR: %s at %s\n", errmsg, yytext); } yywrap(){}
- 887 名前:デフォルトの名無しさん [2007/07/25(水) 18:20:50 ]
- 説明不足でした。申し訳ありません
N = 10000000 0.0 - 16.7: 0.699031 16.7 - 33.3: 0.206966 33.3 - 50.0: 0.065772 50.0 - 66.7: 0.020377 66.7 - 83.3: 0.005860 83.3 - 100.0: 0.001542 100.0 - 116.7: 0.000351 …中略… 316.7 - 333.3: 0.000000 が実行例としてありました。それぞれ体積の範囲ごとに どれくらい分布しているかを箇条書きみたいに出すみたいです。
- 888 名前: ◆TDJK/P.926 [2007/07/25(水) 18:23:05 ]
- >>886続き
※yaccファイル:ch3-05.y %{ #include "ch3-05.h" #include <string.h> #include <math.h> %} %union { double dval; struct symtab *symp; } %token <symp> NAME %token <dval> NUMBER %left '+' '-' %left '*' '/' %nonassoc UMINUS %type <dval> expression %% statement_list: statement '\n' | statement_list statement '\n' ; statement: NAME '=' expression { $1->value = $3; } | expression { printf("= %g\n", $1); } ;
- 889 名前: ◆TDJK/P.926 [2007/07/25(水) 18:25:09 ]
- >>888 yaccの続き。次で最後です。
expression: expression '+' expression { $$ = $1 + $3; } | expression '-' expression { $$ = $1 - $3; } | expression '*' expression { $$ = $1 * $3; } | expression '/' expression { if($3==0.0) yyerror("Divide by Zero"); else $$ = $1 / $3; } | '-' expression %prec UMINUS { $$ = -$2; } | '(' expression ')' { $$ = $2; } | NUMBER { $$ = $1; } | NAME { $$ = $1->value; } | NAME '(' expression ')' { if( $1->funcptr ) $$ = ($1->funcptr)($3); else {printf("%s not a function.\n", $1->name); } } ; %% /* look up a symbol table entry, add if not present */ struct symtab *symlook(char *s) { char *p; struct symtab *sp; for(sp=symtab; sp<&symtab[NSYMS]; sp++) { /* is it already here? */ if( sp->name && !strcmp(sp->name, s) ) return sp; /* is it free */ if( !sp->name ) { sp->name = strdup(s); return sp;} /* otherwise continue to next */ } yyerror("Too many symbols"); exit(1); /* cannot continue */ } /* end of symlook */
- 890 名前: ◆TDJK/P.926 [2007/07/25(水) 18:35:56 ]
- >>889 これで最後です。
void addfunc(char *name, double (*func)()) { struct symtab *sp = symlook(name); sp->funcptr = func; } int main() { extern double sqrt(), exp(), log(), sin(), cos(); addfunc("sqrt", sqrt); addfunc("exp", exp); addfunc("log", log); addfunc("sin", sin); addfunc("cos", cos); yyparse(); return 0; }
- 891 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:44:24 ]
- >>1にもある様に長文はロダ使おうぜ
その方が回答者にとってはやりやすい って書くといつもの基地外に噛み付かれるのかなぁ?
- 892 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:47:19 ]
- ◆TDJK テンプレ嫁
- 893 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:47:47 ]
- >>891
ガブ
- 894 名前: ◆TDJK/P.926 [2007/07/25(水) 18:47:51 ]
- >>891
うpロダには学校からアクセスしてるので規制されててアクセスできないんですよ(汗)申し訳ないです。
- 895 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:50:20 ]
- 2chはおkなのに?おかしな話だ
- 896 名前: ◆TDJK/P.926 mailto:sage [2007/07/25(水) 18:54:39 ]
- >>895
2ch自体にはアクセスできますがPink板など18禁系には規制かかります。 うpロダもそれで規制かかったので。
- 897 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:05:05 ]
- いくらでもあるのに規制って(´,_ゝ`)プッ
宿題まるなげするやつのいいそうなことだ。(´,_ゝ`)プッ
- 898 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:10:14 ]
- >>897
>>762
- 899 名前:デフォルトの名無しさん [2007/07/25(水) 19:11:16 ]
- 説明不足でした。申し訳ありません。
N = 10000000 0.0 - 16.7: 0.699031 16.7 - 33.3: 0.206966 33.3 - 50.0: 0.065772 50.0 - 66.7: 0.020377 66.7 - 83.3: 0.005860 83.3 - 100.0: 0.001542 100.0 - 116.7: 0.000351 …中略… 316.7 - 333.3: 0.000000 が実行例としてありました。それぞれ体積の範囲ごとに どれくらい分布しているかを箇条書きみたいに出すようです。 よろしくお願いします。
- 900 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:12:19 ]
- >>898こてはずして必死だなwww
- 901 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:54:06 ]
- >>900
>>762
- 902 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:58:05 ]
- >>882 間に合うかな?
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4746.c
- 903 名前:デフォルトの名無しさん [2007/07/25(水) 19:58:54 ]
- age
- 904 名前:デフォルトの名無しさん [2007/07/25(水) 20:01:53 ]
- スマン影響ないけど if(j > 30) j = 30; → if(j > 29) j = 29;
- 905 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:04:49 ]
- [1] プログラミング
[2] キーボードから入力された1行を読み込み,そのアルファベットを全て大文字に 変換して表示するプログラムを作成しなさい。なお,以下に与えられるメイン関数を必ず使用し, 文字列を大文字の文字列に変換する関数str_capを作成することで完成させなさい。 ヒント:小文字とは「'a'以上 かつ 'z'以下」の文字であるので,条件式が成立した場合に 小文字→大文字変換を行う。それ以外の文字はそのままにする。 Program: pt3-3.c の一部 #include <stdio.h> #define MAXLINE 1024 void str_cap(char src[], char dst[]); int main(void) { char line[MAXLINE], conv[MAXLINE]; printf("Input a line ->"); gets(line); str_cap(line, conv); printf("Original : %s\n", line); printf("Converted: %s\n", conv); return 0; } 実行結果 $ ./pt3-3 Input a line -> hiroshima city Original : hiroshima city Converted: HIROSHIMA CITY $
- 906 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:05:46 ]
-
[3] 環境 [3.1] Linux [3.2] gcc 3.4 [3.3] C [4] [無期限] [5] 関数部分をifを使って組む、toupperは使ってはいけない お願いします
- 907 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:26:03 ]
- どなたか>>810
分かりませんか? offspringを使って左右に潜っていくんだろうけど 最終的にどうなれば求める値なのかさっぱりわからん・・・・
- 908 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:29:28 ]
- >>905 mainより上にコピーして
void str_cap(char str1[], char str2[]) { int i; for(i = 0; str1[i] != '\0'; i++) { if(('a'<=str1[i]) && (str1[i]<='z')) str2[i]=str1[i]-'a'+'A'; else str2[i]=str1[i]; } str2[i]='\0'; }
- 909 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:34:48 ]
- >>908 ごめん、str1 -> src、str2 -> dst、ってことで。
- 910 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:38:18 ]
- >>905
ヒントは無視してるがやってみた #include<stdio.h> int main(void){ char lower[]="abcdefghijklmnopqrstuvwxyz"; char upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int i; printf("void str_cap(const char *src, char *dest){\n"); printf("\tdo{\n"); printf("\t\t*dest=*src;\n"); for(i=0;i<26;i++) printf("\t\tif(*src=='%c') *dest='%c';\n", lower[i], upper[i]); printf("\t\tsrc++;\n"); printf("\t\tdest++;\n"); printf("\t}while(*src);\n"); printf("}\n"); return 0; }
- 911 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:38:39 ]
- >>905
それvipでみたな ヒントもらえたのに解決しなかったのか?
- 912 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:38:40 ]
- 4文字の文字列を入力してF,R,E,Eの4文字で構成されていたらOK
それ以外なら入力しなおす。 ERFEやEERFもOK。この4文字で構成(F,RとEが2回で
- 913 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:40:28 ]
- DEAD BEEF
BAD FACE
- 914 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:42:48 ]
- >>910 は '\0' 入れ忘れてる orz
printf("}\n"); ↓ printf("\t*dest='\0';\n}\n");
- 915 名前:デフォルトの名無しさん [2007/07/25(水) 20:56:53 ]
- >>902
ありがとうございます。ギリギリ間に合いました。 お手数かけてすみませんでした。
- 916 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:04:05 ]
- >>912
宿題なら >>1 を読んで書きなおし
- 917 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:10:39 ]
- >>908
>>910 ありがとうございました。
- 918 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:22:18 ]
- >>908のように打ち込んだのですが、gets以外でfunction mainでエラーが発生し
printf("Converted: %s\n", conv);のconvの部分が出力されません newjizou.s6.xrea.com/cgi-bin/source/up0098.c
- 919 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:27:47 ]
- >>918
これじゃコンパイルできんだろ?
- 920 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:29:33 ]
- >>919
コンパイルはできたのですが、その部分が出力されないのです。
- 921 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:30:11 ]
- >>909の通りに置換されきれてない上に置換された文字が間違ってる
置換すらまともにできないのかYO
- 922 名前:デフォルトの名無しさん [2007/07/25(水) 21:36:52 ]
- >>902
度々すみません。コンパイルがうまくできてないようなんですが どこが間違っているのかわからないのですが。 お教え願いないでしょうか?
- 923 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:43:05 ]
- int main(int argc, char *argv[]) → int main(void)
にするといいかもNE!
- 924 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:43:11 ]
- >>921
コンパイルはできたのはこっちでした newjizou.s6.xrea.com/cgi-bin/source/up0099.c
- 925 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:49:44 ]
- だからね・・・
置換された文字が間違ってるからダメなんだ
- 926 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:53:32 ]
- >>925
落ち着いて見てみると修正した部分以外にも違っていた すみません、本当に自分が馬鹿でした・・・
|

|