1 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:45:25 ] 教育用(?)プログラムPascalの宿題をやって頂くスレ ■丸投げOK ■全く分かってない阿呆も放置しないで優しく対応 ■他言語はよそ逝け( ゚Д゚)ゴルァ ■DelphiもTurbo Pascalも完全対応 【本家】 www.borland.co.jp/delphi/ 【前スレ】 pc8.2ch.net/test/read.cgi/tech/1089719714 【関連スレ】 くだすれDelphi(超初心者用)その15 pc5.2ch.net/test/read.cgi/tech/1087823906/l50 Pascal の初心者用の質問・相談所 pc5.2ch.net/test/read.cgi/tech/1009903617/l50 【Delphi初心者】今から始めるDelphi Part01 pc5.2ch.net/test/read.cgi/tech/1062422335/l50
925 名前:デフォルトの名無しさん [2009/06/16(火) 01:52:25 ] 123456789の順に数字を並べて,数字の間に+,−を補うことで式を作り, その値が100になる組み合わせをすべて求め,その式を出力するプログラムを作成しなさい. お願いします
926 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 18:08:51 ] 組み合わせはゼロだな。 全て足し合わせても100には満たない.
927 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 19:28:33 ] 小町算でしょ
928 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:12:12 ] >>926 頭固いなw
929 名前:デフォルトの名無しさん [2009/06/17(水) 00:09:26 ] 12345+6789だと少なくとも100は越えるな
930 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 20:00:47 ] >>925 に挑戦してるんだけど、プログラミング初心者には、難しめですか? 配列をfor文で回すので、良いのかな? 配列とかfor文って基本的な処理だと思うんだけど、うまく使えないんだよなぁ。 ネストしたループ文がゴチャゴチャしちゃって。 どなたかヒントいただけないでしょうか? 基本的な構造は、配列を使ったループ文で作ればいいのでしょうか?
931 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:52:53 ] ネストが嫌ならある程度の処理でまとめて関数にしなさい
932 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 01:40:24 ] >>925 Pascalじゃないけど。 1:12-3-4+5-6+7+89= 2:123-4-5-6-7+8-9= 3:123-45-67+89= 4:123+4-5+67-89= 5:123+45-67+8-9= 6:12+3-4+5+67+8+9= 7:12+3+4+5-6-7+89= 8:1+23-4+56+7+8+9= 9:1+23-4+5+6+78-9= 10:1+2+3-4+5+6+78+9= 11:1+2+34-5+67-8+9= kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9479.txt
933 名前:930 mailto:sage [2009/06/18(木) 02:20:11 ] >>932 おぉ、C言語ですね。 俺の頭では、難しすぎました。面白そうな例題だったんで、取り組んでみたんだけど。 最初は、配列とFor文の組み合わせで、やっていたんですけど、配列を連結するとなると、 どんどん複雑になって、分けわからなくなりました。 簡単に紙の上の手書きでやってみたんですけど、数回やっている内に組み合わせが 多くなってきて、混乱しました。 +、−、連結の3種類に分類すると言うことが、肝ですね。 連結がパターンの中の一つと考えられなかったのが、残念です。 掲載された処理、読んでみます。
934 名前:930 mailto:sage [2009/06/18(木) 02:44:28 ] これは、自分が思ってるよりも複雑でした。 パターンが3種類ということ以外にも、配列を複数個使って回してるようです。 Delphi6 personalで、C言語からPascalに書き換えてみたいと思います。 >>925 さんじゃないですけど、非常に勉強になります。 932さん、ありがとうございました。
935 名前:デフォルトの名無しさん [2009/06/18(木) 18:04:27 ] Pascalで書いてみた。 932氏のプログラムと違うのは式を計算する方法だけ。 ・・・だと思うんだけど、どう違うかまではまだ読みきれてない。 結果は同じでした。 FreePascalなんで変なオプション入ってる。 あと、同じ理由で文字コードUTF-8です。 one.freespace.jp/amber_ale/text/kadai.pas
936 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:53:12 ] >>935 932さんも、935さんもネストが深くても、全体的にコードがすっきりして見やすいです。 課題をいかに分解し、一つ一つの処理にするかが、センスなんだなぁと思いました。 初心者には、勉強になります。 935さんのコードは、文字コードをSJISにして、オプションを一つ削除することで、 Delphi6 personalで実行できました。
937 名前:デフォルトの名無しさん [2009/06/23(火) 14:31:05 ] integer変数nに適当な与えてnを素因数分解し、 その結果を表示するプログラムを作りなさい。 神様まってますっ!!
938 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:39:32 ] そんな簡単なものも思いつかないようだとプログラム関係への道は止めた方が良い。
939 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:08:16 ] >>938 スレタイをいちおくまんかい嫁。
940 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:08:26 ] >>939 お前は>>1 を同じ数だけ読んでこい >■全く分かってない阿呆も放置しないで優しく対応 これをやっただけだろ
941 名前:デフォルトの名無しさん [2009/06/24(水) 16:42:38 ] >>937 できますた lispで作るとこんなもんです。 ↓ (defun p (n) (do ((x 2 (1+ x)) (y n)) ((= y 1)) (do ((z x)) ((/= 0 (mod y z))) (print z) (setf y (/ y z)))))
942 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 20:51:42 ] >>937 C言語 /* (defun p (n) (do ((x 2 (1+ x)) (y n)) ((= y 1)) (do ((z x)) ((/= 0 (mod y z))) (print z) (setf y (/ y z)) ) ) ) */ void p(int n) { int x, y, z; for(x=2, y=n; y != 1; x++) { for(z=x; y % z == 0; ) { printf("*%d", z); y = y / z; } } } int main() { int n; scanf("%d", &n); printf("1"); p(n); }