1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:30:56 ] あなたが解けない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++の宿題を片付けます 108代目 pc11.2ch.net/test/read.cgi/tech/1211980711/
32 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 04:49:08 ] #include <stdio.h> int main(void) { int i, ch; printf("文字列を入力して下さい:"); for(i=0; (ch=getchar())!='\n'; i++); printf("文字の長さ:%d\n", i); return 0; }
33 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 05:29:30 ] #include <stdio.h> int main(void) { int i, ch; printf("文字列を入力して下さい:"); for(i=0; (ch=getchar())!='\n' && ch!=EOF; i++); printf("文字の長さ:%d\n", i); return 0; }
34 名前:デフォルトの名無しさん [2008/06/09(月) 10:22:30 ] >>20 ようするにクッキーの生地(長方形)から型(円)を何個とれるか、てこと?
35 名前:20 mailto:sage [2008/06/09(月) 10:44:00 ] >>34 そうです
36 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:33:25 ] >>21 外部プログラムとして動かすのにforkなの?
37 名前:20 mailto:sage [2008/06/09(月) 12:38:46 ] どなたか20の解答お願いします!!
38 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:53:25 ] >>37 難しいです 解法plz
39 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:18:42 ] むずいね。 しかも今日中か。
40 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:21:42 ] しかもこれがコンピュータ入門すか。 前回の課題とかせっかくだから載せてもらえる? できれば作成したソースも。
41 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:25:31 ] >>20 とりあえず a<b ならそれなりの解が出るソースコード 解法plz #include<stdio.h> #include<stdlib.h> #include<math.h> int pattern1(double a, double b, double c){ int x, y; y=(a-2*c)/(sqrt(3.)*c)+1; x=b/(2*c); return x*y-y/2; } int pattern2(double a, double b, double c){ int x, y; y=a/(2*c); x=b/(2*c); return x*y; } int main(int argc, char *argv[]){ double a=20., b=30., c=3.; int num, maximum; switch(argc){ case 4: c=atof(argv[3]); case 3: b=atof(argv[2]); case 2: a=atof(argv[1]); } maximum=pattern1(a, b, c); num=pattern2(a, b, c); if(num>maximum) maximum=num; printf("円の数:%d 使用率:%.3f%%\n", maximum, (c*c*M_PI*maximum)/(a*b)*100); return 0; }
42 名前:41 mailto:sage [2008/06/09(月) 13:44:20 ] >>20 >>41 の訂正 return x*y-y/2; ↓ return x*y-((b-x*2*c<c)?y/2:0);
43 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:47:56 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): abbcという問題の中にabがあればそのabをxyzに置き換えるプログラムをつくりなさい、です。 また、なかった場合は問題をそのまま出力するようにしなさい、です。 問題と単語は自分で適当に入力するようにプログラムするようにしなさい、です。 どうぞよろしくお願いします。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: (2008年6月12日まで [5] その他の制限: ポインタ変数を習ってまもないです
44 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:00:10 ] >>43 #include<stdio.h> #include<string.h> void replace(char dest[], const char src[], const char modify[], const char org[]){ const char *p; int org_len; org_len==strlen(org); while((p=strstr(src, org))){ dest+=sprintf(dest, "%.*s%s", p-src, src, modify); src+=p-src+org_len; } sprintf(dest, "%s", src); } int main(void){ char *src="abbc", *org="ab", *modify="xyz"; char dest[1024]; puts(src); replace(dest, src, modify, org); puts(dest); return 0; }
45 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:01:03 ] >>44 の == を = に訂正しておいて
46 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:52:14 ] ここのスレって、意外と勉強になる、、、、
47 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:53:51 ] >>46 ここも一緒に見てると、C言語に詳しい人があれこれ討論して て知らないことも詳しくでてきたりするのでいいよ。 C言語なら俺に聞け(入門篇) Part 29 pc11.2ch.net/test/read.cgi/tech/1212329099/
48 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:22:34 ] >>44 ありがとうございます。 あと、聞きたいのですが、xyzに置き換えるのはそのままでアルファベットを任意でprintf,scanfして行う場合は どのようにプログラムを書いたらいいのでしょうか?
49 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:38:39 ] [1] 授業単元:Cプログラミング [2] 問題文: 入力した文字からキャラクターを作成し、名前とパラメーターを表示。 入力した文字によってパラメーターが変化する。 例)・生命力 = 入力した文字コードの合計 ・攻撃力 = 入力した偶数番目文字コードの合計 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:VC++6.0 [3.3] 言語:C [4] 期限:6月13日まで [5] その他の制限:文字列操作を習ったばかりです。 例にある生命力、攻撃力の場合のプログラムをお願いします。
50 名前:デフォルトの名無しさん [2008/06/09(月) 16:44:54 ] リナックスの問題で 1+(1+2)+(1+2+3)+(1+2+3+・・・+n) 二重ループを用いて書いてください。 よろしくお願いします
51 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:46:22 ] >>49 #include <stdio.h> #include <string.h> int main(void) { char name[1024]; int code = 0; int hp = 0, at = 0; int i = 0; gets(name); for (i = 0; i < strlen(name); i++) { code = name[i]; hp += code; if (i % 2 == 0) { at += code; } } printf("名前:%s 生命力:%d 攻撃力:%d\n", name, hp, at); return 0; } 間違ってたら自分で治してね☆
52 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:15:12 ] >>51 無事エラーも出ず、例のとおり実行できました。 ありがとうございます。
53 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:22:15 ] >>50 #include <stdio.h> int main(void) { int i, j, n, sum = 0; scanf("%d", &n); for(i=1; i<=3; i++) for(j=1; j<=i; j++) sum += j; for(i=1; i<=n; i++) sum += i; printf("%d", sum); return 0; }
54 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:33:09 ] 1 + (1 + 2) + (1 + 2 + 3) + ・・・ + (1 + 2 + 3 + ・・・・ + n)
55 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:47:37 ] [1] 授業単元:グラフ理論2 [2] 問題文: ノード数100、平均リンク数4の、 ランダムネットワークを生成。 各ノードには予め1or-1の値をランダムで割り振る。 このネットワーク全体の熱量を求めるプログラムを考えよ。 *注意1 Ni(ノードi)とNj(ノードj)、 熱量=Ni*Nj 上記の式を全リンクで計算し、結果を足し上げていく。 すなわち、接続しているノード同士が同じ値だと全体の熱量は増していく。 *注意2 ランダムネットワークとは、リンク数とリンク先がランダムに選択されたネットワークのことで、今回は分断されてないネットワークを利用すること。 [3] 環境 [3.1] 言語:C [4] 期限:6月11日まで 以上、よろしくお願いします。
56 名前: [2008/06/09(月) 19:31:20 ] 内容: [1] 授業単元: c言語 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6830.txt [3] 環境 [3.1] OS:Windows vista [3.2] コンパイラ名とバージョン: [3.3] 言語: c [4] 期限: ([yyyy年mm月dd日hh:mmまで] 今週中に [5] その他の制限:問題文の部分に書いてます。
57 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:13:55 ] >>50 int main(void){ int i=0; int total=0; int n=0; scanf("%d",&n); for(i=1;i<=n;i++){ total+=1+i*i/2; } return 0; } え?二重ループ? 無駄はない方がいいよ
58 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:18:12 ] ん、計算順序おかしいや total+=(1+i)*i/2; だね ついでに printf("%d",total); も足しといて
59 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:26:21 ] 問題の指定を守らないのは回答する資格ないから
60 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:53:40 ] >>20 は壮大な釣りだよ。最密充填はそれほど簡単な問題ではない。 ここ数百年かけてかなり解けるようになってはいるけどね。 多数の数学者の頭脳を持ってしても手こずっている問題だと 推して知るべし。
61 名前:55 mailto:sage [2008/06/09(月) 20:56:21 ] 失礼しました。 再度お願いいたします。 [1] 授業単元:グラフ理論2 [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6843.txt [3] 環境 [3.1] 言語:C [4] 期限:6月11日まで
62 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:20:35 ] >>60 そこまで大仰なものでもないだろ
63 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:24:52 ] 長方形に円をつめるだけなら簡単。
64 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:28:25 ] >>56 vistaでの日本語文字コードって何だっけ? Shift-jis と仮定してよいなら、 int c; while ((c = getchar()) != EOF) { if (c & 0x80) { putchar(c); c = getchar; } else if (islower(c)) c = toupper(c); else if (isupper(c)) c = tolower(c); putchar(c); }
65 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:29:35 ] >>60 最適解を求めることができればそれはとてもすごいことだということは 分かるが、自分の思いつく範囲で可能な限りたくさん、というのを 試しているのだと思うよ。 a b がともに2*cよりも大きい →円は1個でき、(c*c*PI)*100/(a*b) パーセント という、とても稚拙なものであっても、とりあえず要求は満たされてるんだよ ということで、>>20 にはがんばってもらいたい。
66 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:31:21 ] getchar; -> getchar(); orz
67 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:34:39 ] [1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク):() kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6846.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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 明日以降でも提出はできるのですが、一応期限は今日までなのでよろしくお願いします。
68 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:35:55 ] >>67 たぶん前スレとかによく似たのがあるよ。 今日中ってのもアレな話だけど、がんばれ。
69 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:40:52 ] 誰も見ていないし更新もされていないだろうwikiにスタック載ってるなw
70 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:07:40 ] >>41 ありがとうございます!
71 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:08:54 ] [1] 授業単元: Cプログラミング [2] 問題文(含コード&リンク):() kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6847.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ChSciTE [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 今日中 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ファイル読み込み、書き込み
72 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:15:12 ] >>68 前スレっていうと自分の頼んだ課題かもしれません。前スレでも依頼したので・・ 長くて面倒そうだからやってもらえないのかもしれませんが、どうにかよろしくお願いします。。
73 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:32:55 ] >>71 ですが、 コンパイラはBorlandCでもいいです。
74 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:43:09 ] >>72 pc11.2ch.net/test/read.cgi/tech/1211980711/866 この人?なら回答してくれてない? 既に依頼済みならあらためてアップロードしてる意味がちょっと 分からないです。しかも必要な内容削られてるし。。。なぜ。。
75 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:45:27 ] >>74 その通りです。 1つ目の課題はやってもらったのですが、 もう一つの課題が残っていまして・・それが>>67 なのです。。
76 名前:74 mailto:sage [2008/06/09(月) 22:45:59 ] ちゃんと動いたって報告してるしやっぱり違う人でしょかー。 例題のソースからもコメントがばっさり抜かれてるし、どういうことだろう。
77 名前:67 mailto:sage [2008/06/09(月) 22:46:15 ] ちなみに・・長すぎると読むのが面倒かなと思って、短く削ってアップロードし直しました。
78 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:53:22 ] >短く削って 何を削っていいか判断できるぐらいなら宿題も自分で解けるだろw
79 名前:67 mailto:sage [2008/06/09(月) 22:58:26 ] >>78 プログラミング上級者のここのスレの方達だと、例題のコメントや余計な制約は邪魔なだけかなと思って削らせていただきました。 何分実力不足なので、私自身の力では無理です。。力を貸して下さい
80 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:59:57 ] [1]プログラミング [2]問題文 画面に「こんにちは」と表示して改行する、void hello(void)関数を作る。 [3-1]windows [3-2]gcc [3-3]C言語 [4]明後日まで。 よろしくお願いいたします。
81 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:01:19 ] >>80 void hello(void) { printf("こんにちわ\n"); return; }
82 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:04:05 ] >>79 上級者(ってなんだ?)になればコメントが不要になるか? →必要 制約を無視していいか? →よくない ということなんで、素直に kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6813.txt の課題2をお願いしますって言っとけばよかったのに。 むやみにアップロードして資源を使うこともないよ。
83 名前:67 mailto:sage [2008/06/09(月) 23:06:06 ] >>82 そうですね、すいません。余計なことをしてしまいました。。 これからは気をつけます。
84 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:31:55 ] >>59 回答するつもりも無いならレスする必要(ry こうですか?わかりません>< この言い方古いのかな
85 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:33:55 ] >>84 っつーか2重ループの回答あがってるし、 どうでもいい
86 名前:21 mailto:sage [2008/06/10(火) 01:56:32 ] >>36 確認しましたが、特に指定はないとのことです… 曖昧な返答で申し訳ありません。どうかよろしくお願いします。
87 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:58:16 ] 制約を守らないのにループを残した>>57 はなんだ? どうせならこうするがね。 int main(void){ int n=0; scanf("%d",&n); printf("%d\n", n*(n+1)*(n+2)/6); return 0; }
88 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:01:11 ] >>19 お願いします。できれば今日中に・・・
89 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:09:47 ] >>86 forkを使って、fork1.c fork2.cそれぞれから生成される実行体を 外部プロセスとして呼び出すのですか? という意図の質問をしてしまったのであれば、前回の課題を実力で 解答したのではないことがばれたかと。 理解しなかったっしょ。もったいない。
90 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:42:29 ] >>88 アフィン変換とかでぐぐってみればどうだろう。
91 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:28:18 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): 二つの整数値を入力したら最大公約数を表示してくれるやつ作れ [3] 環境 [3.1] OS: windows [3.2] borland c++ 5.5.1 [3.3] 言語: C 自分で作ってみたのですがうまく動きません どこが間違ってるんでしょうか? #include <stdio.h> int main (void) { int x,y,z=0,i=1; printf("二つの整数を「,」で区切って入力してください:"); scanf("%d,%d",&x,&y); while(i==1){ if(x>y) z=x-y; if(x<y) z=y-x; else break; } printf("最大公約数は%d\n",z); return 0; }
92 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:50:48 ] >>91 です 意味ないかもしれませんが 正解に近づいたかもしれないので貼ってみます #include <stdio.h> int main (void) { int x,y,a,b; printf("二つの整数を「,」で区切って入力してください:"); scanf("%d,%d",&x,&y); a=x; b=y; while(a!=b){ if(a>b) a=a-b; if(a<b) a=b-a; } printf("%d%dの最大公約数は%d\n",x,y,a); return 0; }
93 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:52:44 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク):() kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6849.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Microsoft Visual Studio 2008 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 明日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 無し お願いします。
94 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:12:00 ] #include <stdio.h> int main(void) { int i, j, count[11] = {0}, n; while(1) { scanf("%d", &n); if(n==-1) break; if(0<=n && n <= 100) count[n/10]++; } for(i=0; i<10; i++) { printf("%3d -%3d %d人 ", i*10, i*10 + 9, count[i]); for(j=0; j<count[i]; j++) putchar('*'); putchar('\n'); } printf("100 %d人 ", count[10]); for(j=0; j<count[10]; j++) putchar('*'); putchar('\n'); return 0; }
95 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:16:28 ] >>92 #include <stdio.h> int main (void) { printf("二つの整数を「,」で区切って入力してください:"); scanf("%d,%d",&x,&y); int a,i; if (x>y) { for (i=1;i<=y;i++) { if (y%i == 0) { if (x%i == 0) a = i; } } } else { for (i=1;i<=x;i++) { if (x%i == 0) { if (y%i == 0) a = i; } } } printf("%d%dの最大公約数は%d\n",x,y,a); return 0; }
96 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:19:57 ] >>93 発展 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, j, count[11] = {0}, n; srand(time(NULL)); while(1) { n = rand() % 102 - 1; if(n==-1) break; count[n/10]++; } for(i=0; i<10; i++) { printf("%3d -%3d %3d人 ", i*10, i*10 + 9, count[i]); for(j=0; j<count[i]; j++) putchar('*'); putchar('\n'); } printf("100 %3d人 ", count[10]); for(j=0; j<count[10]; j++) putchar('*'); putchar('\n'); return 0; }
97 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:43:15 ] >>95 ありがとうございます
98 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:55:23 ] while(a!=b) { while(a > b) a -= b; a = a + b; b = a - b; a = a - b; }
99 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:56:26 ] >>92 ,で区切る意味が全く分からない 再帰を使わずに作ると #include <stdio.h> int gcd(int a, int b); int main(void){ int x, y, z; scanf("%d", &x); scanf("%d", &y); z = gcd(x, y); printf("%d\n", z); } int gcd(int a, int b){ int c; while (b > 0){ c = a % b; a = b; b = c; } return a; }
100 名前:22 mailto:sage [2008/06/10(火) 05:12:14 ] 結構プログラムを書き換えましたが、以前さっぱりです・・・ いつでもいいので、どうかよろしくお願いします。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6850.txt
101 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:43:56 ] >>21 #include <sys/types.h> #include <sys/wait.h> #include <stdio.h> #include <unistd.h> int main(void) { pid_t c[2], p; int s; switch (c[0] = fork()) { case -1: perror("fork"); break; case 0: execlp("./fork1", "fork1", NULL); perror("fork1"); _exit(1); /* NOTREACHED */ default: break; } switch (c[1] = fork()) { case -1: perror("fork"); break; case 0: execlp("./fork2", "fork2", NULL); perror("fork2"); _exit(1); /* NOTREACHED */ default: break; } while (c[0] != -1 || c[1] != -1) { int i; if ((p=wait(&s)) == -1) { perror("wait"); break; } else for (i = 0; i < 2; i++) if (p==c[i]) { if (WIFEXITED(s)) printf("fork%c exit(%d)\n", i+1, WEXITSTATUS(s)); else if(WIFSIGNALED(s)) printf("fork%c killed(%d)\n", i+1, WTERMSIG(s)); c[i]=-1;break; } if (i==2) {fprintf(stderr, "?\n"); break;}} return 0; }
102 名前:101 mailto:sage [2008/06/10(火) 05:45:59 ] どうして 「backslash n」が消えるんだ???
103 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:57:44 ] >>102 ソースを貼るのには適さないんだし、行が多い場合はテキストファイルを ここ用のロダにあげなよw
104 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:17:36 ] 学科の出席簿作成。 15人分の学生を表示し、入力により内容を変動させる。 表示順番:出席表 <入力>学生番号0〜14 <入力>曜日番号0〜6 <入力>時限番号0〜3 <入力>出欠番号0〜1 <入力>学生番号0〜14の時に99を入力するとプログラム終了。
105 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:17:59 ] ここまでは自力でできた。 #include <stdio.h> int main() { int gakusei,youbi,jigen,syukketsu; printf("学生Noを入力してください----"); scanf("%d", &gakusei); printf("曜日番号を入力してください----"); scanf("%d", &youbi); printf("時限番号を入力してください----"); scanf("%d", &jigen); printf("出欠番号を入力してください----"); scanf("%d", &syukketsu); if(gakusei=99){ printf("学生番号は99以外の数字を入力してください。\n"); } if(gakusei>=0||gakusei<=14 || youbi>=0||youbi<=6 || jigen>=0||jigen<=3 || syukketsu>=0||syukketsu<=1){ printf("学生No%d\n",gakusei); printf("月曜日\n"); printf("時限番号%d\n",jigen); printf("出欠番号%d\n",syukketsu); }else{ printf("エラーです\n"); } return 0; }
106 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:05:18 ] >>101 forkしてexecか。なる。 出題者じゃないが勉強になった。
107 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:20:46 ] そういう事柄に関しては 小耳に挟んだ ということと 勉強になったということは 根本的に違うということは区別しようね。
108 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:28:22 ] それにして、インデントがないと、ソースが読みにくい(><)
109 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:33:35 ] まあ手元ソース書く場合はメモ帳とか使うんだろうからせめて TAB1個->全角スペース3個とかで置換かけてから投下しようよw それがあれならアップローダーにあげるとかさ・・・
110 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:33:57 ] >>5 の問題の補足なんですが 円の中心に原点をおくと、格子点はi,jを整数として座標(i,j)で表される。(i,j)が円環に含まれる場合に1,含まれない場合に0を返却する関数 is_inrarge(double r, int i, int j) を作成し、これを用いて、半径Rをキー入力することでn(R)を表示するプログラムを作成しなさい。 とのことなのでこれを踏まえてもう一度この問題の解答をお願いします。
111 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:53:24 ] >>109 全角はねーよw
112 名前:デフォルトの名無しさん [2008/06/10(火) 13:05:53 ] [1] 授業単元: C++ [2] 問題文キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。 ただし入力される数値が2以上でない場合、繰り返し入力を求めること。[3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: C++ ([[4] 期限:今日の5時mで [5] その他の制限:なし
113 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:07:32 ] >>110 #include <stdio.h> int is_inrange(double r, int i, int j) { return r * r >= i * i + j * j; } int main(void) { int i, j, r, count = 0; scanf("%d", &r); for(i=-(r+1); i<=r+1; i++) { for(j=-(r+1); j<=r+1; j++) { if(is_inrange(r+1, i, j)&&!is_inrange(r, i, j)) count++; } } printf("%d", count); return 0; }
114 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:08:44 ] そういうオープンな問題が出るわきゃないだろ 出した講師か教師が糞 2^2^1024-1が素数かも判定しなきゃならなくなる罠
115 名前:ルート mailto:sage [2008/06/10(火) 13:11:11 ] [1] 授業単元: プログラミング C言語 [2] 問題文(含コード&リンク): 【課題】 BMPファイルを読み込み、以下の処理を行って下さい。 @2値化(白黒画像) 閾値は指定できること Aディザ法による2値化 B誤差拡散法による2値化 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC++ [3.3] 言語: C [4] 期限: 〜6月13日0:00 [5] その他の制限: 無い
116 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:12:25 ] なんか、ここを見てるとプログラミングを嫌いにさせたいのか と思うような出題内容が多いよな。 まあIT業界は悲惨なので学生時代に嫌いにさせておいて 就職口から外す講師の親心なのかもしれないけどw ってそれはねーかw
117 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:18:15 ] 口だけクンががんばってるなw
118 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:19:34 ] @ [1] 授業単元: C++ [2] 問題文 キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。 ただし入力される数値が2以上でない場合、繰り返し入力を求めること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 6月10日 [5] その他の制限: なし A [1] 授業単元: C++ [2] 問題文 直角三角形の表示を行うフローチャートは左下が直角の直角三角形を表示するプログラムであった。直角が左上側、右上側、右下側の三角形を表示するプログラムをそれぞれ作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C++ [4] 期限: 6月17日 [5] その他の制限: なし お願いします。
119 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:24:22 ] 書くだけクンが大きなこと言えるのかなw
120 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:24:34 ] >>112 #include <iostream> int main(void) { int n, flag = 1; do { std::cout << "2以上の整数を入力してください:"; std::cin >> n; }while(n < 2); for(int i = 2; i*i<=n; i+=2) { if(n % i == 0) { flag = 0; break; } } std::cout << n << "は素数" << (flag ? "です" : "ではありません") << std::endl; }
121 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:32:01 ] 2以上の素数を入力して下さい 15 15は素数です
122 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:32:56 ] ミスった i+=2 → i++
123 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:33:47 ] >>118 #include <iostream> int main() { int i, j, n; std::cin >> n; //左上 for(i=n; i>0; i--) { for(j=i; j>0; j--) std::cout << '*'; std::cout << std::endl; } //右下 for(i = 0; i<n; i++) { for(j=1; j < n - i; j++) std::cout << ' '; for(j=0; j<=i; j++) std::cout << '*'; std::cout << std::endl; } //右上 for(i=0; i<n; i++) { for(j=0; j<i; j++) std::cout << ' '; for(j=n; j>i; j--) std::cout << '*'; std::cout << std::endl; } }
124 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:44:20 ] 2以上の素数を入力して下さい:2 2は素数ではありません
125 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:50:00 ] >>124 バカ発見
126 名前:デフォルトの名無しさん [2008/06/10(火) 14:02:11 ] [1] 授業単元: プログラミング C言語 [2] 問題文(含コード&リンク)課題:ファイル"test.txt"から文字列を読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005 [3.3] 言語: C [4] 期限: 〜6月11日11:00 [5] その他の制限: ポインタを使う
127 名前:110 mailto:sage [2008/06/10(火) 14:10:22 ] >>113 ありがとうございます
128 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:15:28 ] >>126 #include <stdio.h> void f(FILE *in, FILE *out) { int ch = fgetc(in); if(ch==EOF) return; f(in, out); fputc(ch, out); } int main(void) { FILE *f_in, *f_out; if((f_in=fopen("test.txt", "r"))==NULL) return 0; if((f_out=fopen("sample.txt", "w"))==NULL) return 0; f(f_in, f_out); fclose(f_in); fclose(f_out); return 0; }
129 名前:デフォルトの名無しさん [2008/06/10(火) 14:31:41 ] >>128 正しく実行できません。
130 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:37:33 ] >>126 int main(void) { FILE* in; FILE* out; int c; char ss[1024]; int i = 0; in = fopen("test.txt", "r"); if (in == NULL) { return -1; } out = fopen("sample.txt", "w"); if (out == NULL) { return -1; } while ((c = fgetc(in)) != EOF) { ss[i] = c; i++; } ss[i] = '\0'; i--; while (i >= 0) { fputc(ss[i], out); i--; } fclose(in); fclose(out); return 0; } 適当すぎたorz
131 名前:130 mailto:sage [2008/06/10(火) 14:39:26 ] おかしかったら自分でなんとかして。 結構、初心者向けに書いたつもりなので
132 名前:20 mailto:sage [2008/06/10(火) 15:38:13 ] >>41 >>41 int pattern1(double a, double b, double c){ int x, y; y=(a-2*c)/(sqrt(3.)*c)+1; x=b/(2*c); return x*y-((b-x*2*c<c)?y/2:0);; } すみませんがここの処理が何をやってるのかわからないのですが 説明していただけませんか?