- 1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
- 486 名前:デフォルトの名無しさん [2007/06/29(金) 01:10:38 ]
- お願いします。
[1]C言語 [2]ファイルを読み込む I am C. CAT and ... を別のファイルに下のように書き込む 1: I am C. 2: CAT and ... [3.1] OS:Linux [3.2] gcc 3.4 [3.3] 言語: C [4]今日の午前中
- 487 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:20:49 ]
- >>486
#include <stdio.h> int main(void) { FILE *fop,*fsv; char buf[32]; int ch; printf("読み込むファイル名を入力 > "); scanf("%s",buf); fop=fopen(buf,"r"); if( fop==NULL ) return 1; printf("書き込むファイル名を入力 > "); scanf("%s",buf); fsv=fopen(buf,"w"); if( fsv==NULL ) { fclose(fop); return 1; } while( (ch=fgetc(fop))!=EOF ) { fprintf(stdout,"%c",ch); fprintf(fsv,"%c",ch); } fclose(fop); fclose(fsv); return 0; }
- 488 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:26:08 ]
- [1] 授業単元:情報系ゼミ
[2] 問題文:www.ipsj.or.jp/07editj/promenade/4407.pdf 上記URLの文中「逆方向のスキャンによる枝刈り(P759)」「ビット列の長さによる枝刈り」 の二項を聞いてる素人にも判る様に説明、解説する。という課題を受けました しかし今まで習った内容とは明らかにレベルが違いすぎるため、 また、周りが自分を含めプログラムはズブの素人ばかりなので全く理解できず、 一同困惑しています お時間のある方、この範囲のプログラム文の一行一行がどういう機能を果たしているのかを 馬鹿にも判るように解説して頂けないでしょうか? よろしくお願いします [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: 不明 [3.3] 言語:C++ [4] 期限:[2007年07月01日まで [5] その他の制限: まったく習っていない段階
- 489 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:29:47 ]
- あ、書き込むときに
1: 〜 2: 〜 のように数字をつけたいんです、3行とか4行とかにも対応できるように…。 もしよければおねがいします
- 490 名前:デフォルトの名無しさん [2007/06/29(金) 01:34:37 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4439.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland [3.3] 言語: どちらでも可 [4] 期限: 2007年07月01日23:00まで [5] その他の制限: なし
- 491 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:41:48 ]
- >>489は>>487さんへのレスです。
- 492 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:53:19 ]
- 491です。解決しました。あともう一門わからないのがあるので
もしよければお願いします [1] 授業単元: C言語 [2] 問題文(含コード&リンク): テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面とテキストファイルに表示する c→4h→1a→2 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:明日
- 493 名前:492 mailto:sage [2007/06/29(金) 01:59:20 ]
- [2]の例追加
abdcdoddooffffoo ↓ abc→1 df→4 o→5
- 494 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:01:36 ]
- >>491 >>489
>>487 の一部だけ変更。変更部分は↓の一番上と下が一致するところの中 if( fsv==NULL ) { fclose(fop); return 1; } i=1; fprintf(stdout,"%d:",i); fprintf(fsv,"%d:",ch); while( (ch=fgetc(fop))!=EOF ) { fprintf(stdout,"%c",ch); fprintf(fsv,"%c",ch); if( ch=='\n' ) { i++; fprintf(stdout,"%d:",i); fprintf(fsv,"%d:",ch); } } fclose(fop);
- 495 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:06:46 ]
- >>494 訂正
fprintf(fsv,"%d:",ch); < の2箇所を fprintf(fsv,"%d:",i); < ,i に変更
- 496 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:07:39 ]
- >>495 じゃなくて、2箇所ある
fprintf(fsv,"%d:",ch); < これを って意味ね。出力結果がおかしいから分かるだろうけど。
- 497 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:31:05 ]
- [1] 授業単元: プログラミング基礎A
[2] 問題文(含コード&リンク): 奇数かどうか判定する関数および,偶数かどうか判定する関数を作成しなさい. ◎以下を参考の事 奇数判定: int isOdd(int i) 数字iが奇数の場合1, 偶数の場合0を返す関数 偶数判定: int isEven(int i) 数字iが偶数の場合1, 奇数の場合0を返す関数 main関数ではif文を使って正しく動いているかどうか チェックしてください. ※戻り値にはboolを利用してもOKです [3] [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003 [3.3] 言語:C++ [4] 期限:2007年6月29日10時30分 [5] その他の制限:出来るだけ複雑ではなく簡単(初歩的)なものにすること。 よろしくおねがいします。
- 498 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:33:07 ]
- >>497
int isOdd(int i){return i%2;} int isEven(int i){return i%2==0;}
- 499 名前:492 mailto:sage [2007/06/29(金) 05:10:44 ]
- テンプレわかりづらかったので、もっかい質問します
是非、教えてください、お願いします。 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): テキストファイルをよみこんでたとえばファイルに cccchaa というのがかいてあったら下のような感じで画面とテキストファイルに表示する c→4h→1a→2 ほかの例は abdcdoddooffffoo の場合 abc→1 df→4 o→5 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語: C [4] 期限:5時間後くらい
- 500 名前:492 mailto:sage [2007/06/29(金) 05:13:41 ]
- >>494-496さん本当にありがとうございます!!
- 501 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:03:57 ]
- >>499
#include <stdio.h> int main(void) { int c, nc[256] = {0}, nmax = 0, n, found; while ((c = getchar()) != EOF) { nc[c]++; if (nc[c] > nmax) nmax = nc[c]; } for (n = 1; n <= nmax; n++) { found = 0; for (c = 0; c < 256; c++) { if (nc[c] == n) { putchar(c); found = 1; } } if (found) printf("→%d", n); } printf("\n"); return 0; }
- 502 名前:492 mailto:sage [2007/06/29(金) 06:27:59 ]
- >>501さんありがとうございます。
けどコンパイルしてみたらエラーがたくさん表示されて…。 あとファイルから読み込んで結果を画面に表示してファイルに書き込む プログラムをつくりたいです。またもしよければアドバイスおねがいします
- 503 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:02:16 ]
- >>500 そういや、int i; も追加だったっけ・・・ってできた?ようだから良いか。
- 504 名前:492 mailto:sage [2007/06/29(金) 07:07:45 ]
- >>503さんのをアレンジしたらできました!ありがとうございました!!
もしよければ>>499を教えてほしいです…何度もすいません。
- 505 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:24:24 ]
- >>501は全角スペースが入っているからでそ
#include <stdio.h> int main(void) { int c, nc[256] = {0}, nmax = 0, n, found; while ((c = getchar()) != EOF) { nc[c]++; if (nc[c] > nmax) nmax = nc[c]; } for (n = 1; n <= nmax; n++) { found = 0; for (c = 0; c < 256; c++) { if (nc[c] == n) { putchar(c); found = 1; } } if (found) printf("→%d", n); } printf("\n"); return 0; }
- 506 名前:492 mailto:sage [2007/06/29(金) 07:32:56 ]
- これにファイルポインタとか使いしていけばいいんですかね?
これだけだと動きませんでしたので・・・
- 507 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:38:07 ]
- >>506
題意が良くわからないんだが、要するに文字列の中の各アルファベットの数を数えろってことかね?
- 508 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:39:33 ]
- 492と493の例だと表示順がわからないんだけど。
出てきた順番でもないし、アルファベット順でも個数順でもない。
- 509 名前:492 mailto:sage [2007/06/29(金) 07:44:45 ]
- >>507さん、そうですねアルファベット順にしたいです。
cccchaaの例はちょっと間違って書いてましたすいません…。 もうひとつ例としては aaabcddddee の場合は a→3 bcd→4 e→2 です。何度もすいません…アルゴリズムがいまいち思いつかないので…。
- 510 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:01:13 ]
- アルファベットの数を数える部分はできたが、同じ数のものを並べてってのが面倒やな・・・
もう少しで出来そうだが、そこんとこで手詰まり中。まぁ、なんとかなるさ。
- 511 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 08:09:25 ]
- >>459
ソースコードを昇順ソートできるようにするという問題です。 何度もすみません。
- 512 名前:デフォルトの名無しさん [2007/06/29(金) 08:23:46 ]
- >>381お願いします
- 513 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:13:21 ]
- >>509 >>506 >>504 >>499 >>492
汚いソースだが我慢せい kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4441.c
- 514 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:15:32 ]
- >>509 >>506 >>504 >>499 >>492 訂正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4442.c
- 515 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:10 ]
- >>509 >>506 >>504 >>499 >>492 さらにマクロでシェイプアップ
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4443.c
- 516 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 09:27:58 ]
- >>515 っつか str[1024], <これ要らなかった、削除プリーズ
- 517 名前:459 mailto:sage [2007/06/29(金) 12:12:43 ]
- 時間延長してもらいました。
順を追って試してるんですがうまくいかないです・・・
- 518 名前:デフォルトの名無しさん [2007/06/29(金) 12:41:20 ]
- [1] 授業単元:プロC
[2] 問題文(含コード&リンク): ↓*ndPtrPtr が指すリストの n 番目のノード(ノード番号は 0 番から始まる)を削除する. 削除したノードに割り当てられていたメモリは解放される.ただし,リスト中のノード数が n 以下で,n番目のノードがない場合には,何もしない. 戻り値は,n番目のノードが削除できたときには SUCCESS, n番目のノードが存在せず,削除できなかったときには FAILURE を返す. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4444.c 上のnodeInsertを改良して,指定された挿入場所のインデックス n が負のときには, 新しく挿入されたノードがリストの末尾から数えて -n 番目になるようにせよ. (たとえば,n == -1 のときには,末尾に挿入される) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:月曜日まで [5] その他の制限: なし よろしくお願いします。
- 519 名前:デフォルトの名無しさん [2007/06/29(金) 12:43:12 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): 3d^2x/dt^2+dx/dt+2x=4 x(t=0)=0 dx/dt(t=0)=0 上記の微分方程式をルンゲークッタ法を用いて解け [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C言語 [4] 期限: ([2007年7月1日まで [5] その他の制限: なし お願いします
- 520 名前:デフォルトの名無しさん [2007/06/29(金) 12:58:22 ]
- [1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ふたつあります。 @文字列strをno回だけ連続して表示する関数 void put_stringn(const char str[], int no){/*…*/}を作成せよ。 A以下に示した関数をもとにして、文字列を後ろから逆に表示する("SEC"を受けたら"CES"と表示する)関数put_rstringを作成せよ。 #include <stdio.h> void put_string(const char str[]) { unsigned i = 0; while(str[i]) putchar(str[i++]); } int main(void) { char str[100]; printf("文字列を入力してください:"); scanf("%s", str); put_string(str); putchar(!\n!); return(0); } [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限:今日中なるべく早く [5] その他の制限: 明解C言語入門編テキスト使用 お手数おかけしますがどうかよろしくお願いします。
- 521 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:03:46 ]
- 明解C言語入門編
ttp://www.bohyoh.com/Books/MeikaiA01/ これか?
- 522 名前:デフォルトの名無しさん [2007/06/29(金) 13:04:27 ]
- >>521さん
そうです。
- 523 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:04:39 ]
- [1] 授業単元:C++研究
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4262.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4381.txt 上記2つのプログラムのクラス(設計図)のインスタンス生成部分をnew演算子を用いた ものに修正しなさい(すべての個所)。もちろんこのインスタンスをdelete演算子 で削除することを忘れないこと。 [3] 環境 [3.1] OS:Windows xp [3.2] コンパイラ名とバージョン:Visual studio.2005 [3.3] 言語: C++ [4] 期限: ([2007年7月1日12:00まで] [5] その他の制限:特になし よろしくお願いします。
- 524 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:06:42 ]
- >>520
#include <string.h> void put_string(const char str[]) { unsigned i = strlen(str)-1; while(str[i]) putchar(str[i--]); }
- 525 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:09:21 ]
- >>520 なんか全角が入ってたり putchar の括弧の中がおかしいから全部書くわ
#include <stdio.h> #include <string.h> void put_string(const char str[]) { unsigned i = strlen(str)-1; while(str[i]) putchar(str[i--]); } int main(void) { char str[100]; printf("文字列を入力してください:"); scanf("%s", str); put_string(str); putchar('\n'); return(0); }
- 526 名前:デフォルトの名無しさん [2007/06/29(金) 13:15:04 ]
- >>525さん
ありがとうございます。 void put_stringをvoid put_rstringにすればいいんですかね?#include <string.h>て 習っていないのですが… もしよろしければ問題@のほうもよろしくお願いします
- 527 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:23:43 ]
- 内容:
[1] 授業単元:C++ [2] 問題文: #include <stdio.h> #define NUM4 #define NAME_LENGTH 20 struct seiseki{ char name[NAME_LENGTH]; int jpn; int eng; int math; /*A*/ } int main(void){ struct seiseki i06[NUM]; double max; int max_i; int i; for(i=0;i<NUM;i++){ printf("%d番目の名前を入れてください",i); scanf("%s",i06[i].name); printf("%d番目の国語の成績を入れてください",i); scanf("%d",i06[i].jpn); printf("%d番目の英語の成績を入れてください",i); scanf("%d",i06[i].eng); printf("%d番目の数学の成績を入れてください",i); scanf("%d",i06[i].math); } /*B*/ }
- 528 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:36 ]
- >>520
#include <stdio.h> void put_stringn(const char str[], int no) { int i; for(i=0; i<no; i++) printf("%s \n",str); } void put_string(const char str[]) { int i = 0; while(str[i]!='\0') i++; while(i-->0) putchar(str[i]); } int main(void) { char str[100]; int no; printf("文字列を入力してください:"); scanf("%s", str); printf("@文字列strをno回だけ連続して表示する関数 no > "); scanf("%d",&no); put_stringn(str,no); printf("A以下に示した関数をもとにして、文字列を後ろから逆に表示\n"); put_string(str); putchar('\n'); return(0); }
- 529 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 13:31:59 ]
- 以下のプログラムに構造体を各人の名前と合計点を格納できるように拡張し、最終的には合計点が一番よい学生の名前を出力するプログラムを作成せよ。/*A*/ /*B*/に入れよ
また、成績のAランク(成績が80以上100以下)の個数を格納する変数に変更して、Aランクの数が一番多い学生の名前を出力するプログラムを作成せよ。/*A*/にAランクの数 [3] 環境 [3.1] OS:窓 [3.3] 言語:C++ [4] 期限:明日 [5] その他:制限 構造体 他にはとくになかったです。 よろしくお願いします。
- 530 名前:デフォルトの名無しさん [2007/06/29(金) 13:34:25 ]
- >>528さん
ありがとうございます。 すみません、@とAの問題は別物なんです ややこしくかいてしまってすみません >>528にかいていただいたものをどうわければいいのでしょうか… 本当にすみませんorz
|

|