- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:08:18 ]
- あなたが解けない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++の宿題片付けます 130代目 pc12.2ch.net/test/read.cgi/tech/1250204272/
- 477 名前:474 [2009/11/01(日) 21:54:55 ]
- >>475
私もそう思いましたが、 「本当に簡単なものでいいから作ってください。こういうにはあなたたちのインスピレーションしだいですので」 といわれてしまい・・・。
- 478 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:55:48 ]
- >>477
いや、教授とか講師とかがじゃなくってお前がねーよwww
- 479 名前:474 [2009/11/01(日) 22:01:25 ]
- すみません。
要求仕様など考えてから出直してきます。
- 480 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 22:58:19 ]
- >>471-472
「関数へのポインタを配列に」いれろとのことですので、そのようにしました。 codepad.org/pe70YBZf
- 481 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:16:02 ]
- [1]C言語初級
[2] 次のプログラムから仕様書を起こして、全く異なるアルゴリズム で同じ処理をするものに書き換えよ codepad.org/FjM5LBs9 [3] Windows XP/Visual studio 2005/C [4] 11/10迄
- 482 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:23:47 ]
- ああwww
関数のポインタとか見逃してた。 ごめん
- 483 名前:471 mailto:sage [2009/11/02(月) 00:36:52 ]
- >>480
ありがとうございます しかしVS2008でエラーが出るのですがどうしたらよいでしょうか?
- 484 名前:474 [2009/11/02(月) 01:07:11 ]
- <<474
<<479 入力されたメッセージ1文字をキューにいれるプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10041.txt キューからメッセージを取り出し表示をするプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10042.txt を参考にして送信用プログラムにfork()を付け加え文字を重複送信するようにするプログラム。 またセマフォを用いてアクセスを制限する。 理解が浅いため本当にこれでいいの不安なのですがよろしくお願いします。
- 485 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 03:03:19 ]
- >>481
codepad.org/Ooo9fZ4r 3の倍数と3の付く数字を 10000*10000までの範囲で列挙する。 文字列型で10を出力すると アスキーコードでは改行の意味に。 同等の処理は\nで行った。 各位の和が3の倍数であれば その数は3の倍数であることを使い求めた。
- 486 名前:satoshi [2009/11/02(月) 03:04:56 ]
- double型の引数を2つ持ち、aつの引数の積の絶対値を返す、
double型の戻値を持つ関数 absmul() を作成した上で、動作の 確認の出来るプログラムとして作成せよ。という問題と 標準入力からの入力に対して、アルファベットを全て空白文字 に変更して出力するプログラムを作成せよ。という問題がわかりません。 どなたかお願いします
- 487 名前:satoshi [2009/11/02(月) 03:06:50 ]
- aつ が 2つの間違いです。
- 488 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 07:13:30 ]
- >>483
エラーを全部貼ってください。
- 489 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 07:15:11 ]
- >>486
>>1
- 490 名前:satoshi [2009/11/02(月) 11:45:59 ]
- [1] プログラミング
[2] double型の引数を2つ持ち、2つの引数の積の絶対値を返す、 double型の戻値を持つ関数 absmul() を作成した上で、動作の 確認の出来るプログラムとして作成せよ。という問題と 標準入力からの入力に対して、アルファベットを全て空白文字 に変更して出力するプログラムを作成せよ [3] 環境 [3.1] OS: (Windowsxp) [3.2] コンパイラ名とバージョン:UNIX 2.1.4 [3.3] 言語: (C言語) [4] 期限: (11月3日 13時 [5] その他の制限: (特になし)
- 491 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:07:11 ]
- >>490
#include<stdio.h> double absmul(double a, double b){ short x=0x1234; double c; unsigned char *p, *q; c=a*b; p=(unsigned char*)&x; q=(unsigned char*)&c; if(*p==0x12) q[0]&=0x7f; else q[sizeof(double)-1]&=(~0)^0x80; return c; } int main(void){ double a=2.0, b=-3.0; printf("%f\n", absmul(a, b)); return 0; }
- 492 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:31:03 ]
- >>490
#include<stdio.h> int main(void) { int c, map[256]; unsigned char *p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; for(c=0;c<256;c++) map[c]=c; for(;*p;p++) map[*p]=' '; while((c=getchar())!=EOF) { putchar(map[c]); } return 0; }
- 493 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:38:10 ]
- アルゴリズムにsortというのがりますが、配列をsortするときにもとの配列番号が
何番に変わったか知る方法はありますか?ソートした配列を参考に別の配列も並び替えたいです。
- 494 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 12:44:27 ]
- ソートする配列と同じ長さの配列用意して、ソートする前にそこへコピーしとけば良いじゃん
あとはその二つを比較するだけ
- 495 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:06:44 ]
- >>493
構造体で例えば sruct abc { double a; int n; }; としといて、aにバラバラの値を入れ、nに連番を入れて置きます その後構造体でqsort(比較基準はabc.a)を掛ければ、nに どのようにバラバラになったか順列が入ります
- 496 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:20:40 ]
- こんな感じ
struct abc { double a; int n; }; int comp(const void *a, const void *b) { struct abc x = *(struct abc *)a, y = *(struct abc *)b; return (x.a < y.a) ? -1 : (x.a > y.a) ? 1 : 0; } int main(void) { struct abc aa[10]; int i; srand((unsigned)time(NULL)); for (i = 0; i < 10; i++) { aa[i].a = rand(); aa[i].n = i; } qsort(aa, 10, sizeof(aa[0]), comp); for (i = 0; i < 10; i++) printf("%d ", aa[i].n); putchar('\n'); return 0; }
- 497 名前:デフォルトの名無しさん [2009/11/02(月) 13:38:02 ]
- 【問題】0から40までの数字で3のつく数字と3の倍数を表示するプログラムを作成せよ
お願いいたします。
- 498 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:39:43 ]
- >>497
>>1
- 499 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:47:20 ]
- >>497
#include <stdio.h> int main(void) { printf("0 3 6 9 12 13 15 18 21 23 24 27 30 31 32 33 34 35 36 37 38 39"); return 0; }
- 500 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:47:39 ]
- もうネタとしか思えなくなってきた
- 501 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:50:08 ]
- >>499
わろたw
- 502 名前:デフォルトの名無しさん [2009/11/02(月) 13:53:31 ]
- >>497
#include <stdio.h> #include <string.h> int main(void) { int i; char buf[32]; for(i = 0; i <= 40; i++) { sprintf(buf, "%d", i); if (i % 3 == 0 || strchr(buf, '3') != NULL) printf("%d ", i); } return 0; }
- 503 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 15:10:59 ]
- >>490
アルファベットとは何ぞやということになるな。
- 504 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:50:16 ]
- ハングルはアルファベットなのか(字母と方塊字で扱いは違うのか?)なんてのは
さすがに考えないとして、ウムラウトやセディーユのついた文字はどうするのかね。
- 505 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 18:00:43 ]
- isalphaで判定できるものでいいだろ、常識的に考えて
- 506 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 19:11:19 ]
- >>483
VC++2008EE をインストールして確かめました。なるほどねえ、VC は構造体タグの name space は独立していないんですね。 codepad.org/nMou5Xbk
- 507 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 20:01:57 ]
- [1] 授業単元: C++
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10044.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10045.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:VS2008 [3.3] 言語: C++ [4] 期限: 2009/11/07 問題が2つあります。それぞれ違うファイルにしてもらえたならば幸いです。 宜しくお願い致します。
- 508 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 23:25:57 ]
- >508
コードは書いてやるから、仕様は自分でだせ。
- 509 名前:sage [2009/11/03(火) 01:38:41 ]
- [1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10047.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5 [3.3] 言語: C++ [4] 期限: [2009年11月5日23:59まで] [5] その他の制限:途中までのソースコードがありますので、そちらに追記お願いします。
- 510 名前:デフォルトの名無しさん [2009/11/03(火) 01:57:30 ]
- [1] プログラミング入門
[2] 文字列sを逆に並べる関数reverse(s) を書け。 さらにこの関数を使って、入力を行ごとに反転させるプログラムを作成せよ。という問題です。 [3] [3.1] OS: (UNIX) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [2009年11月3日12:00まで] [5]if文 while文などを勉強中です。 初心者用のプログラムでお願いします。
- 511 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 06:49:25 ]
- >>510
EUCに対応しているはず codepad.org/zGzKjJfu
- 512 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 10:30:46 ]
- >510
こんな感じでよいか? ワイド文字は考慮していません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10049.txt
- 513 名前:デフォルトの名無しさん [2009/11/03(火) 12:03:20 ]
- あ」
- 514 名前:デフォルトの名無しさん [2009/11/03(火) 12:30:32 ]
- [1] 授業単元: c言語プログラミング実習
[2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10051.txt [3] 環境 [3.1] OS: (Linux) [4] 期限: (11/4) [5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。) わかりにくい質問で申し訳ありませんがよろしくお願いします。
- 515 名前:デフォルトの名無しさん [2009/11/03(火) 12:42:05 ]
- [1] 授業単元: c言語プログラミング実習
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10052.txt [3] 環境 [3.1] OS: (Linux) [4] 期限: (11/4) [5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。) どうぞよろしくお願いいたします。
- 516 名前:デフォルトの名無しさん [2009/11/03(火) 12:47:24 ]
- 1] 授業単元: c言語プログラミング実習
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10053.txt [3] 環境 [3.1] OS: (Linux) [4] 期限: (11/4) [5] その他の制限: (大学1ねんで、まだc言語の授業は5回目です。) こちらもよろしくお願いいたします。
- 517 名前:デフォルトの名無しさん [2009/11/03(火) 12:50:55 ]
- 上の514,515,516はmewを使用して作成します。
- 518 名前:デフォルトの名無しさん [2009/11/03(火) 12:52:05 ]
- 間違えました、Emacsです
- 519 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 13:06:21 ]
- Emacsってコンパイラついてたっけ・・・
- 520 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:29:18 ]
- >>515
(1) (A)に同じ文を入れて考える #include<stdio.h> int main(void){ int i=0 j=0 k=0; int n=0; i=0; while(i<100){ while(j<100){ while(k<100){ n++; (A) k++; } (A) j++; } (A) i++; } printf("n=%d",n); }
- 521 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:30:13 ]
- >>515 (B)に同じ式を入れて考える
#include<stdio.h> int main(void){ int i=0 j=0 k=0; int n=0; i=0; while( (B) && (i<100){ while((B) &&(j<100)){ while((B) &&(k<100)){ n++; k++; } j++; } i++; } printf("n=%d",n); }
- 522 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 14:31:11 ]
- >>515
(3) (C)、(D)に適当な文を入れる #include<stdio.h> int main(void){ int i=0 j=0 k=0; int n=0; i=0; while(i<100){ while(j<100){ while(k<100){ n++; (C) k++; } j++; } i++; } (D) printf("n=%d",n); }
- 523 名前:510 [2009/11/03(火) 15:04:23 ]
- >>511・511さん
遅れましたが回答ありがとうございました。
- 524 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:19:44 ]
- >>516
#include <stdio.h> int main(void) { int i, j, n; scanf("%d", &n); for(i=1; i<n; i++) { for(j=n-i; j>=0; j--) putchar(' '); for(j=2*i-1; j>0; j--) putchar('*'); putchar('\n'); } for(i=2*n+1; i>0; i--) putchar('*'); putchar('\n'); return 0 ; }
- 525 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:36:15 ]
- 逆数を求めるプログラミングなんですが、どうしてもコンパイルできません。
間違いがあったらエロい人、、指摘してください。 #include <stdio.h> main(){ int i; float j = 1/i; for(i = 1; ;i++){ printf("%f\n" , j); } return 0; }
- 526 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:42:08 ]
- 509です。
sageをミスって申し訳ございませんでした。 どなたか、お願いできませんでしょうか? よろしくお願いします。
- 527 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:47:03 ]
- >>525
正常に動作しないだけで、コンパイルは通ると思うが。
- 528 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:48:56 ]
- >>527
float j = 1/i; で未初期化の変数を参照がエラーか警告になるかも
- 529 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:51:46 ]
- >>525
jを計算する場所が違う。 コンパイルができない、というのはエラーが出るのか警告が出るのか、 あるいは実行時エラーなのか、はっきりしてくれ。
- 530 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:52:23 ]
- 初期化に変数は使えないとか。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 15:56:50 ]
- >525
gccに食わせたけど、警告は出るけどコンパイルはできるよ。 たぶんやりたいことはこうじゃない? #include <stdio.h> int main(void) { int i; for (i = 1; i < 10; i++) { printf("%f\n" , 1.0 / i); } return 0; }
- 532 名前:デフォルトの名無しさん [2009/11/03(火) 15:57:42 ]
- [2]問題: 標準入力からの入力に対して、アルファベットを全て空白文字に変更して
出力するプログラムを作成せよ。という問題です。 [3.1] OS: (UNIX) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: [2009年11月4日9:00まで] かなりの初心者です codepad.org/nrbnRlD3 自分で作ってみたのですが、エラーが出ました。 何が足りないか、何が間違っているか改良をお願いします。
- 533 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:00:51 ]
- >509
元のコードがでかいので、デバッガでコードを追いたかったのだが、 gcc + insightでは開こうとしたとたんに落ちてしまう。 実行自体はできるのだけれど。 #conio.hがあるとコンパイルできないのだが、使っているところがないので 削った。 もう少しおってみるかな。
- 534 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:05:16 ]
- >>532
大文字
- 535 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:08:56 ]
- 大文字を小文字に修正しても希望の動作にはならないけどなw
- 536 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:09:53 ]
- 最初の while で標準入力食いつぶすしねw
- 537 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:17:35 ]
- #include <stdio.h>
#include <ctype.h> int main(){ int c; while((c=getchar())!=EOF)putchar(isalpha(c)?' ':c); return 0;}
- 538 名前:509 mailto:sage [2009/11/03(火) 16:21:37 ]
- >533
すいません。 よろしくお願いします。
- 539 名前:533 mailto:sage [2009/11/03(火) 17:41:45 ]
- >509
デバッガが使えないのでコードリーディングに手こずっている。 出題主、以下の情報ください。 1)BCalculationの仕様 コメント、mainでの使い方からして 入力"+ 6 3 " 戻り値9みたいな ものを想定していた。でも動かしてみたらそうじゃないし、 どう動いて欲しいのかわからない。 どんな入力に対してどういう戻り値を期待している? 2)MtoBの仕様 以下のようなものを想像しているが、あっているか? 入力 "6 + 3 * 3" 戻り値 "+ 6 * 3 3" (BCalculationのinputになれるもの)
- 540 名前:506 mailto:sage [2009/11/03(火) 18:27:31 ]
- >>539
つ「逆ポーランド記法」 6 3 + 6 3 3 * + デバッガは無料で手に入る VC++2008EE IDE はいかが?
- 541 名前:509 mailto:sage [2009/11/03(火) 18:29:38 ]
- >533
返答が遅くなり、すいません。 ご迷惑をおかけします。 1)BCalculationの仕様 回答の所で使用していますので、お考えであっていると思います。 ただ、"63+" の "9"と思っていました。 的外れな回答でしたら申し訳ありません。 2)MtoBの仕様 その通りです。 こちらも、"633*+"と思っていました。 実は、最初は”回答”の上に printf("変換:%s\n",str.str); を入れていました。 しかし、課題内容にはないため外しました。 変換後の結果が出るものです。
- 542 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 18:30:12 ]
- >>514
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10054.txt
- 543 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 18:52:20 ]
- 一回目はちゃんと漢字じゃないとw
- 544 名前:533 = 539 mailto:sage [2009/11/03(火) 19:35:51 ]
- >509 >541, >540
逆ポとLispを勘違いしてたみたい。 だけど6 3 +も + 6 3両方試したけど 元のコードでは期待通り動いていないみたいだよ。 とりあえず逆ポの関数書いてみた。命名則は自分流なので reversePolishNotationが元のBCalculationと思ってください。 エラーは適当にアボートしちゃっていますが、動作は期待通りでしょうか? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10055.txt
- 545 名前:509 mailto:sage [2009/11/03(火) 20:30:17 ]
- >533=539=544
返事が遅くなり申し訳ございません。 残念ながら動作しませんでした。 コンパイルは出来たでですが、実行すると 何も入力する前に、 「問題が発生したため、muda.exe を終了します。 ご不便をおかけして申し訳ありません。」 と出て終了してしまいました。 新しくコードを書いて頂いたようで、申し訳ございません。 しかし、一度前のものを提出し追加課題として「エラーを検知させよ」 だった為、条件として [5] その他の制限:途中までのソースコードがありますので、そちらに追記お願いします。 と記載しておりました。 できましたら、追記でお願いしたいのですが無理でしょうか? 宿題を解いて頂いているのに、文句言って本当にすいません。
- 546 名前:540 mailto:sage [2009/11/03(火) 20:56:58 ]
- >>545
ソースをみる限り第一引数に逆ポーランド式を指定しないとダメです。 たとえば、 foo.exe "1 1 +" とします。 >>544 おかしいですね。私のところでは、BCalculation はうまく動いていますが。(bcc32/gcc/VC++2008)
- 547 名前:509 mailto:sage [2009/11/03(火) 21:30:57 ]
- >540
逆ポーランド部分は出来ていると、自分の中では信じきっていました・・・ そうでしたか、もう一度考えてみます。
- 548 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:54:18 ]
- >>547
代数式(中置式)→逆ポーランド式(後置式)の変換は、定番の方法がありまして、 コンパイラ(とか数理言語)の教科書をみればたいてい説明されています。 ソースを得たいのであれば、 www.amazon.co.jp/dp/4874084141 にそのものがあります。ダウンロードは oku.edu.mie-u.ac.jp/~okumura/algo/archive/ からできます。これを気に書き直されるのも一興かと思います。
- 549 名前:548 mailto:sage [2009/11/03(火) 21:57:12 ]
- ×気に
○機に
- 550 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 21:58:19 ]
- >546 >547
mainを下記のように書き直して試してみた。 int main(void) { struct NewStr str; printf("式を入力\n"); gets(str.str); printf("\n"); // str = MtoB(str.str); printf("回答:%4.2lf\n\n",BCalculation(str.str)); return 0; } 例えば"6 3 +"を入力していて解答6となっておかしい、と思っていた。 コードを追っかけてみて"6 3 + "(最後にスペースが入っている)と入力すると上手く行くことがわかった。 これは仕様制限ということでよいのですよね? そういう前提でもう一度見てみる。 確認するけど、基本的に正常系の動作はしていて、 >演算不可能な場合は、エラー表示させること。 >例:6+3** 9// 9-5) 8+( という部分の実装が漏れている、ということなのかな。
- 551 名前:546=548 mailto:sage [2009/11/03(火) 22:12:06 ]
- >>550
>>509 の代数式→逆ポ変換 (MtoB()) は力作でして、(多分)うまく動いているのですが、 括弧の処理をとくにリカーシブに書いているところもあり、私もなかなか把握しきれないでいます。異常系の切り分けも難しい。 いずれ、どうあがいても、リカーシブに書かざるを得ないとは思いますが、ここで、心機一転、定石をお勧めしたしだいです。 MtoB() を自力でここまで書いたのであれば、尊敬に値します。少なくとも私にはできません。
- 552 名前:509 mailto:sage [2009/11/03(火) 22:34:48 ]
- >550
はい、その通りです。 >演算不可能な場合は、エラー表示させること。 >例:6+3** 9// 9-5) 8+( の部分が抜けています。 >551 しかし、一度提出してる手前、再度初めからとなると このエラーを表示させる課題ごと意味が無くなってしいます。 この課題に取り掛かって、1ヶ月ほど助言を受けたり、書いては 書き直ししているうちに段々訳がが分からなくなってきて気が付くと この形でした。
- 553 名前:551 mailto:sage [2009/11/03(火) 22:44:07 ]
- >>552
なるほど。 定石をお勧めしたい気持ちはやまやまなのですけれども。 ちょっと説明していただけますか?たとえば、 char stack[STR_MAX], str[STR_MAX], tempstr[STR_MAX*2]; int newstr_pos=0, i, flg=0, parentheses_flg=0, str_pos=0, minus_flg=0, tempstr_pos=0, stack_pos=-1; の各バッファ、各 pos の意味合いとか、どうしてこういう仕掛けを作ったかとか。
- 554 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 00:51:43 ]
- [1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10056.txt [3] 環境 [3.1] OS:Windows/vista [3.2] コンパイラ名とバージョン: Visual C++ 2008 [3.3] 言語: C++ [4] 期限: 2009年11月6日 [5] その他の制限: 問題を乗せているテキストに進め方があるのでそれに沿ってもらえれば。 よろしくお願いします。
- 555 名前:509, 553 mailto:sage [2009/11/04(水) 01:21:51 ]
- こっちで持っている解答を示しておきます。
codepad.org/ziaFqKsi 定石の代数式→逆ポーランド変換を行いつつ、同時に各項の値を計算させています。
- 556 名前:509 mailto:sage [2009/11/04(水) 02:12:30 ]
- >551
申し訳ありません。逆ポーランドの所が出来ていなかったので 自分で考えると言った手前考えていましたらいつの間にか こんな時間になっており、質問が来ているのに気が付きませんでした。 533さんに書いて頂いたコードと548さんに紹介して頂いたサイトのコードを 参考に逆ポーランドの部分も間違いが直す事ができ、課題も完了する事が 出来ました。 皆様本当にありがとうございました。
- 557 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 02:23:14 ]
- 処理時間を計る関数の中で、最も最小単位まで計れる関数は何でしょうか?
教えてください
- 558 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 02:47:09 ]
- QueryPerformanceCounter
- 559 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 11:42:51 ]
- [1] 授業単元:プログラミング2
[2] 問題文(含コード&リンク):ユークリッド互除法を使って二つの数字の最大公約数を求める。ただし、マイナスの数も求められるようにする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: Gcc3.4(MinGW) [3.3] 言語: C言語 [4] 期限: 今日中 [5] その他の制限: 特になし よろしくお願いいたします。
- 560 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 13:06:15 ]
- >>559
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10058.txt
- 561 名前:デフォルトの名無しさん [2009/11/04(水) 20:08:57 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10060.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 11/13 16:00まで [5] その他の制限: 特になし よろしくお願いします。
- 562 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 21:30:08 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10061.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 11/6 12:00まで [5] その他の制限: 特になし おねがいします
- 563 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 23:32:32 ]
- [1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク): (π/4) = tan^-1(1) = 1 - (1/3) + (1/5) - … + (-1)^k * (1/(2k+1)) + … の公式を用いて、第n項までの多項式近似により円周率を求め、その誤差と計算時間を測定するプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:オールインワンエクリプス [3.3] 言語:C [4] 期限:できれば明日までに [5] その他の制限:特になし
- 564 名前:デフォルトの名無しさん [2009/11/05(木) 00:29:07 ]
- 【質問テンプレ】
[1] 授業単元:C言語 [2] 問題文 問題文1 整数 n を入力すると 'a' から n個目までのアルファベットを全て表示するプログラムを作成せよ。 (例:n=6 の時 abcdefを表示) 問題文2 整数 n を入力すると1からn までの間で 3の倍数か、 5の倍数のどちらかであるような数の和を表示するプログラムを作れ。 (例:n=10 の時 3+5+6+9+10=33) 問題文3 次のプログラムの (a)-(j)の部分をfor 文を使って書き直せ。 #include<stdio.h> int main() { int a[10]; double sum,ave; sum=0; a[0]=1; a[1]=5; a[2]=7; a[3]=2; a[4]=4; a[5]=1; a[6]=9; a[7]=4; a[8]=20; a[9]=5; sum=sum+a[0]; /* (a) ここ */ sum=sum+a[1]; /* (b) ここ */ sum=sum+a[2]; /* (c) ここ */ sum=sum+a[3]; /* (d) ここ */ sum=sum+a[4]; /* (e) ここ */ sum=sum+a[5]; /* (f) ここ */ sum=sum+a[6]; /* (g) ここ */ sum=sum+a[7]; /* (h) ここ */ sum=sum+a[8]; /* (i) ここ */ sum=sum+a[9]; /* (j) ここ */ ave=sum/10; printf("総和は %d です。平均は %d です。\n",sum, ave); } 問題文4 整数を5個入力すると、まずそのまま表示し、次に逆順で表示するプログラムを作れ。 実行例: 数を入力して下さい: 3 数を入力して下さい: 7 数を入力して下さい: 1 数を入力して下さい: 2 数を入力して下さい: 5 そのまま表示 3 7 1 2 5 逆順に表示 5 2 1 7 3 プログラムのテキストをコピーして下のテキスト入力フィールドへ出力結果と共に貼り付けて提出すること。 [3] 環境 [3.1] OS: XP [3.3] 言語: C++ [4] 期限: 明日まで [5] その他の制限 #include <stdio.h> int main() スタートでお願いします。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:48:10 ]
- [1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10062.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 11月05日18:00まで [5] その他の制限: 問題文どおりです
- 566 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 00:53:39 ]
- [1]授業単元 C言語実習
[2]コマンドラインで指定された英数字と空白、タブ、改行記号 のみから構成されるテキストファイルに含まれる単語の頻度を アルファベット順に出力するプログラム。 単語とは英数字のみで構成されているものを指す。 一つの単語が1回現れた時は部分単語すべてが現れたものとする。 部分単語とは、その単語の連続する部分文字列のことである。 授業で述べた多重ハッシュテーブルを利用すること。 行の長さ、行の総数、単語の長さに制限は無いが、頻度は 32bit整数(符号付き)で正の範囲に表せるものとする。 [3] Linux/gcc 4.0/C言語 [4] 今週の金曜日夕方18:00迄
- 567 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:03:37 ]
- 先ず答える前に問題の水準を誰かが大まかに分類しそれぞれの
水準別に解答貼付け専用スレを立ててそこに誘導したほうが 良くね?高校生レベルの問題と大学院修士課程レベルの問題とかが 混在したら回答者の精神衛生に問題が生じる可能性があるから
- 568 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:05:55 ]
- >>563
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10063.txt
- 569 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:33:33 ]
- [1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク): 台数近似を用いて、分割数nに対する I = ∫[1,2]ln(x)dx の値を求めるプログラムを作成し、誤差を求めよ。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:オールインワンエクリプス [3.3] 言語:C [4] 期限:今日中 [5] その他の制限:特になし
- 570 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 01:42:04 ]
- やれるやつがやる
分類の必要なし 各人のスキルは違う 高校生が大学院生よりプログラムできることはある
- 571 名前:566 mailto:sage [2009/11/05(木) 02:02:07 ]
- 条件が一つ抜けてました。
《追加条件》 ファイルを読み込んでいる間に、記憶している単語別頻度の順位に変更が発生したら、その時点でアルファベット順に都度出力すること
- 572 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 02:04:18 ]
- 授業で述べた多重ハッシュテーブル
これわからん
- 573 名前:566 mailto:sage [2009/11/05(木) 02:16:21 ]
- >>572
お答え下さいましてとりあえずありがとうございます。 わたしも良くわからないんですが、ハッシュテーブルが 衝突だったら別のハッシュ関数でその下にテーブルを 作るとかかなんとかだったと記憶してますけど... ノートには次のように写してます。(板書写しなんで 間違ってるかもです) if( array[ hash1(string) ] = NIL ) array[ hash1(string) ] := string; else if array[hash1(string)][ hash2(strin) ]=NIL array[hash1(string)][hash2(string)]:=string; else ........
- 574 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 05:28:40 ]
- ch[n]がcharとしてpを素数として
ch[0] + p * ch[1] + p^2 * ch[2] + ・・・ + の上か下の何ビットかをハッシュにしたらいいのでは。 異なるハッシュがいくらでも作れる。
- 575 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 08:57:24 ]
- >>565
ひでーやり方だなw
- 576 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:03:31 ]
- なぜかヴァニラアイスのスタンド思い出した
- 577 名前:デフォルトの名無しさん mailto:sage [2009/11/05(木) 09:34:47 ]
- >>565
for(i=p; i<=q; i++) a[i] = b[j] < c[k] ? b[j++] : c[k++];
|

|