1 名前:デフォルトの名無しさん mailto:sage [2011/03/31(木) 15:35:33.04 ] あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi codepad.org/ ←遅い時間は重い事があります ideone.com/ 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 前スレ C/C++の宿題片付けます 146代目 hibari.2ch.net/test/read.cgi/tech/1296387672/
511 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:12:00.84 ] >>484 ideone.com/IFlJ7 答えを導くのって単純な総当りからMin-Maxとか色んな解法があるけど本当に課題なの? 最後の2枚はダブりが無い4桁の整数を作るフローチャートだと思うんだけど・・・
512 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:17:29.68 ] >>488 codepad.org/Sp1WYfdV malloc, freeを追加したのが悔やまれるけど、あとはなるべく最小限の変更を努めた。
513 名前:512 mailto:sage [2011/04/28(木) 00:18:54.41 ] >>510 先人がいたw whileの解釈はそれかもだね。
514 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:22:32.90 ] >>513 mallocは手抜きしたw
515 名前:488 mailto:sage [2011/04/28(木) 00:29:49.24 ] >>510 さん >>512 さん ありがとうございます。 >>512 さんのコードのほうが綺麗に修正されてますね。 これからコンパイルして正しく動作するか確かめてみます。 ところで、コンパイルはどうやってやればいいのか、実は わかってません。
516 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:33:25.62 ] >>515 古典的な方法としては命令に対応するマシン語を直接打ち込む方法もある が普通はしない
517 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 00:49:43.56 ] >>511 すみません、下のフローチャートは関係なさそうですね フローチャート関係なしに答えを求めるものは出来そうですかね?
518 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 03:02:13.94 ] >>517 いや、関係あるだろ。 そのフローチャートが提示されている意味は作成されるコードに影響を与えるよ。
519 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 11:57:18.49 ] >>517 >>511 のコードで、以下のようにansをテーブルとして持つのもあり? ideone.com/aJ7TF
520 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 15:15:23.83 ] 「一行ごとに一単語(英単語)が書かれたファイルがある。 このとき、このファイルの内容をソートとして画面上に標準出力するプログラムを作成せよ。 ファイルの行数は不定とし、また上限を定めないこと。 また、ソートは降順あるいは、昇順のどちらにも対応できること。」 ちなみにファイルの読み込みは1回、単語格納のための配列は使ってはいけない、qsortは使ってはいけない という条件付きです。誰かわかる人お願いします
521 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 15:17:58.65 ] リストでも木でも
522 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:25:59.87 ] >上限を定めないこと 世界最大の英語辞書をソートしろってことか 単語重複許すなら100万語超もありか
523 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:33:16.11 ] >>520 #include<iostream> #include<string> #include<set> int main(void) { std::string str; std::set<std::string> dic; while(std::getline(std::cin, str)) { dic.insert(str); } for(std::set<std::string>::iterator it=dic.begin();it!=dic.end();++it) { std::cout << *it << std::endl; } return 0; }
524 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 16:43:12.45 ] >>520 int main() { system("cat filename | sort"); return 0; }
525 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 17:56:02.84 ] >>524 おまえなぁ・・・ #include <stdlib.h>つけとけよ
526 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 18:11:27.55 ] qsort()がだめならマージソートでいいじゃない シェルソートでもいいし
527 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:32:23.09 ] ボゴソート一択だろ
528 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:47:39.83 ] >>527 ボゴソートでぐぐってみたんだけど何これwww 乱数にメルセンヌツイスタでも使わないと混合合同法では停止しないかも しれないじゃないかwww
529 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 20:53:35.66 ] >>528 要素数が10なら数十秒で終わるから問題ない。 20超えると丸一日で終わらなかったりするが
530 名前:デフォルトの名無しさん mailto:sage [2011/04/28(木) 23:55:08.13 ] 質の悪いシャッフルなら要素数2でも終わらない可能性がある
531 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:01:20.32 ] >>520 > 単語格納のための配列は使ってはいけない これは何?ヒープにとろうが string を使おうが単語格納のための配列を利用する結果になると思うんだけど?
532 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:07:18.18 ] >>531 配列がだめなら動的に確保すればいいじゃない ってことでしょ
533 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:53:04.32 ] >>520 テンプレ
534 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 02:55:09.40 ] 当然だがrewindでの読み直しもungetcでの読み戻しも不可だな
535 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:00:00.30 ] >>531 当然外部ファイル書き出しも出来ないし、子プロセス作成も不可 だろね、やっぱり
536 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:04:20.22 ] ファイルポインタの配列でも作るか
537 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 03:57:37.44 ] >>534 ,>>535 そういう自縛的な発想が蔓延するから、プログラミング言語演習を 数学演習と同列にやることに反対する人が多くなるんじゃね? この「問題(愚問)」の場合は、やはり◆QZaw55cn4cとか が得意の二分木を使うのが良さげ というわけで◆QZaw55cn4cが↓に登場します
538 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 05:22:56.10 ] >>520 codepad.org/BR9gbdWg >>537 ごめん、二分木使わなかった。。。
539 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 09:11:42.78 ] >ファイルの行数は不定とし、また上限を定めないこと。 これは明らかに問題の不備だよな 無限のリソースを持っているコンピュータなど存在しない しかもファイルポインタを外部ファイルにテンポラリとして書き出すのも駄目っぽいから >>530 程度でいいのではないかと思う
540 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 09:14:12.76 ] しかしfseek()の連続でランダムアクセスの固まりだからディスクがさぞかしガリガリ 言うだろうなあ SSDを使えればそうではないだろうが早く痛みそう 問題がそのような事を要求しているようなので仕方ないが
541 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 11:53:08.54 ] >>539 静的に決め打ちするなって意味でしょ ファイルの行数は不定であってもあくまで有限
542 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:22:42.96 ] そういう問題があるから、プログラムの引数に扱うファイルやらバッファの情報を与えてもらうのがキホン そうでなきゃ実行を拒否するコードにするのがセキュリティ対策の基本だとか Windows APIとかに余計なパラメータが多いのはそのせい?
543 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:23:25.99 ] >>541 でも>>538 のプログラムは一旦ファイルを行単位で全部メモリに読み込んでない? で行の配列へのポインタをソートしている もしメモリを超えるサイズのファイルがあったら動かないよ
544 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:33:17.15 ] メモリが足りなくなったら、一時ファイルか何かを使うしかないね。
545 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 12:47:55.27 ] メモリが足りなくなったら… exit(1);
546 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 15:27:21.60 ] >>523 , >>538 のプは ソートは降順あるいは、昇順のどちらにも対応しているの?
547 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 16:35:19.14 ] >>546 プって何でしょうか?(プ
548 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:06:53.22 ] >>543 行ごとにってか、一括で読んでみた >>546 strcmpの条件反転すれば降順になる fseekは乱発してないけど、reallocとmemmoveは乱発してるので遅いよ
549 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:08:13.88 ] >>523 のは違う人が書いたコードだけど、リバースイテレータ使えば逆順にでるかと
550 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:20:04.25 ] つまりコードを書き直して再コンパイルして対応と なんか題意の読解力が有名コテと同じようなレベルだな
551 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:21:52.30 ] >>550 フラグで分岐すればいいだけじゃね?
552 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:25:52.69 ] >>550 その辺言い出すときりがないよ。caseをどうするかとか。 そうなると>>524 =俺だけど、sortコマンド使いなよってなる。 コードの雑さでいろんなものを捨ててることぐらい読み取ってくれないか。
553 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:27:03.04 ] それを最初からコードに書けってことだろ
554 名前: ◆XEE2zLj0dE mailto:sage [2011/04/29(金) 17:28:44.24 ] って、>>520 の要件に入ってたorz コード改訂しようか?いらないよね…
555 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 17:31:56.91 ] 520 がテンプレに沿って書き直すなら考える C限定っぽい気がするけどよく分からん
556 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 18:02:03.82 ] #include<iostream> #include<string> #include<set> struct less{ static bool flag; bool operator()(const std::string &x, const std::string &y) const{ return flag ? x < y : y < x; } }; bool less::flag = false; int main(int argc, char* argv[]){ less::flag = argc < 2; std::multiset<std::string, less> dic; for(std::string str; std::getline(std::cin, str);) dic.insert(str); for(std::multiset<std::string, less>::iterator it = dic.begin(); it != dic.end(); ++it) std::cout << *it << std::endl; } std::sort禁止じゃないし やっぱCなんだろうな
557 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 19:19:18.29 ] >>556 >>520 宿題で制限事項等から出題者の意向を読解して、 学生に自前で作って欲しい部分は何かって考えると ある程度はどうすべき気なのかって講義に出ていない奴でもわかるんじゃないか 本来、宿題プログラムは単に制限事項をクリアしたプログラムを作れば良いじないよな sortに関してはソート関数(部分)は自前で実装して欲しいんだと思う qsort(関数)でソートやったらソート部分を自分で作らなくても良いから禁止って事だろうな ファイルの行数は不定、上限を定めない、配列禁止は動的メモリ割り当て・使い方を学んで欲しい からじゃないか と俺は解釈 プログラムコーディング以前の話になってしまったな
558 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 19:44:41.24 ] テンプレ使ってない出題だしそういったことはあえて無視してるんじゃないの 俺はテンプレ使ってても制限特になしとかだったらそうする
559 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 20:24:31.64 ] 単語を格納する配列っていうのも、char words[10000][20];とかやらないでねってことなんだろう。
560 名前:デフォルトの名無しさん mailto:sage [2011/04/29(金) 23:23:43.29 ] そういう出題者の意図をエスパーするのが面倒だからテンプレがあるんだろ テンプレ無し問題は的外れな回答が来ても文句は言えない
561 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:47:19.43 ] 皆さん色々と意見どうもありがとうございます。>>520 です。とても参考になりました。 書き忘れてしまって申し訳ありませんが言語はC言語で、 自分はリストを作ってそこに単語を格納してソートの手順でしようと思っています。 しかし、上手くリストに単語を格納してソートするためにどうプログラムをくめばいいのかがわかりません。 2回目でスイマセンができれば引き続き教えてもらえないでしょうか
562 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:56:19.76 ] 謝らなくていいから>>1 を読め
563 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:57:10.70 ] >>561 緑、許さない絶対にだ 君 ここより C言語何でも質問掲示板 chiebukuro の方が良いんじゃね 立派なレス付いてるんだし
564 名前:デフォルトの名無しさん [2011/04/30(土) 03:57:03.56 ] >>520 32の値をもう少し大きくして、読み終わった後に必要分だけreallocするのがベターかも。 ideone.com/8tneo
565 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 06:39:06.80 ] だからこの問題は、ソース・デスティネーション共に無記憶ストリームな場合に 不定長さレコードを読み取って整列して出力するにはどうしたらいい? ということなんだろうから、答えとしては多分恐らく、2分木か(それに類するもの) が最適なんじゃないかと
566 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 06:53:04.77 ] 配列演算子まだ習ってませんとか ポインタまだ習ってませんとか は、この問題に限ってはあり得ないw
567 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 09:39:49.98 ] >>565 ファイルのオフセット位置(単語の先頭)を2分木で大小比較しつつ記憶するってこと? ストリーム的に処理するなら、システムで確保できる分のメモリ量で、ファイルの部分部分をソートしていって、 最後にファイルの部分部分同士をマージソートって気がするけど。
568 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:13:59.17 ] シリアルデバイス(例えば今でもなぜか付いているPCが多いRS232Cとか)からテキストファイル のバイトストリームを受け取ってそこへ送り戻すような場合を考えればいいんでねの? (再送要求は基本的に撥ね付けられる) バッファリング無しはそりゃ無理だろw (相手が途中で送信を要求するというのは、送ってもいない情報を予測して送り返せ というのに等しいのでそりゃ考える必要は無いだろw?) メモリしか使えない状況じゃ配列に格納するしかないだろうけど、配列は禁止らしいから やっぱし◆QZaw55cn4cさんのpush/popとか使って二分木に格納して、 相手の送信が終わったことを確認したら再帰呼び出しで一気にソーメン流しで 送り返すしかないだろうね。こういった場合は好きなやり方じゃないが、仕方が無い。 ただし相手の送信終了確認が難しいんだろうけど
569 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:24:40.38 ] 二分木つかうならせめて赤黒木使えや 糞な◆QZaw55cn4cの二分木ルーチンを見る度に「またこいつか」と思ってしまう
570 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:30:31.09 ] >>537 召還されました。 >>520 問題文に不明瞭な点があるようなので、とりあえずこれを提出して反応を待つのはどうでしょうか。 codepad.org/liRVVqr9
571 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:34:41.89 ] なんだかんだいっても◆QZaw55cn4cの人気はそれなりに高かった件
572 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 12:34:53.63 ] >>569 ん、すみません。では次回は AVL 木で組んでみます。
573 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 13:29:07.34 ] >>569 コードよろしく
574 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 13:46:05.03 ] >>572 、◆QZaw55cn4c 糞とか言っている先生に見本コードお願いしろよ
575 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:08:21.91 ] >>574 そもそも書けない人にお願いしても無駄でしょう?自分で書きます。
576 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:28:09.48 ] なんだなんだ。 レスが錯綜して登場人物が何人いるのかがわからない。 だれかユースケース図で説明して。 あとAVL木よりB木のコードがいいな。
577 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 14:55:31.80 ] AVL木とかB木とか出てきたけど、それはどういう状況で使うのが最適なのか一度考えるべきじゃねの? 一度しか検索しない対象に対して木の高さを敢えて揃える意味があるのはどういう場合かとか.. 俺にはわからないので教えてくれ.
578 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 18:12:50.29 ] ここはメモリ使用量を考えてTrie木だろ >>570 いつも思うがおまいさんのコードは分かりにくいw 複数の行に同じ単語がある場合を想定してないが、問題にも書いてないしその場合はどうするんだろうな
579 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 18:27:17.89 ] >>578 俺は分かりにくいとまでは思わないけど.. 分かりにくいという声が出る一つの原因は、コードの本質的な 部分じゃなくて多分名前の取り方じゃないかと思ったりしてる。 push/popはスタックの為に予約されているわけでもなかろうが でも、まぁ普通は先入後出の例のアレを指すわけ。 popで一気に入れた順番とは無関係に一気に出てくるってのは まぁ確かにpopなんだろうけどw FlushとかExplosionとかBlowUpとかそういった単語にすりゃ いいのにと結構思ったりする
580 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 19:04:23.34 ] >>520 codepad.org/EcRfMZ1T 単純な2分木はQZが作ってるので、双方向リストで作ってみた。(正順逆順にも対応) >>538 とやってることは変わらないので、元データがすでに逆順ソートされている(またはそれに近い)場合は 速くなってるけど、根本的に遅いのは変わらないです。
581 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 20:35:16.02 ] >>578 うーん、わかりにくいですか‥‥‥。 それは、malloc() で得たポインタを別んところで free() しているせいでしょうか? それとも二重ポインタを使っているところでしょうか? mygetline() の中身がわかりにくいのでしょうか。これは確かに改善したいものですが、アイディアが思いつきません。 >>570 では複数の行に同じ単語があれば、ソート後それらは連続して並びます。strcmp() の値が負か非負かでしかみてませんから。 >>579 名前ですか。確かにpush()/pop() はいまいちずれていますね。
582 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 20:55:33.30 ] Trie木ってなんだろ、とWikipediaをみて ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Trie_example.svg この絵から想像したアルゴリズムにしてみた。 多分斜め上だけど速度速くなったので貼っとく codepad.org/nC3d47EJ
583 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:39:54.62 ] >>581 コテ付けろよ 名無しだとQコテだってすぐに解らん
584 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:43:02.30 ] >>583 hibari.2ch.net/test/read.cgi/tech/1295273862/582 >私は一介の名無しに戻ります。 hibari.2ch.net/test/read.cgi/tech/1295273862/592
585 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:44:21.45 ] 名無しに戻るより、二度と巣から出てくるなって言われてんのにな どこまで自分に甘いんだよw
586 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:44:59.57 ] トリ付けるかここから去るか、どちらかにしてくれ できればトリつけてくれないかな、NGにしてるから
587 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:48:51.22 ] コテつければコテうざいといわれ、コテはずせばコテつけろうざいといわれ、大変だな。
588 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 21:58:51.32 ] 自分の巣以外の場所に現れなきゃ誰も文句はないだろ
589 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:15:10.59 ] >>585 自分に甘く、他人に厳しいのが自己愛性人格障害の特徴 最悪の性格と言えよう 精神科医も自己愛とボーダーの治療を一番嫌がるそうだ
590 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:15:41.33 ] その巣も壊そうとしてたじゃん。 巣を追われたら他に出てくるのは自然の摂理。
591 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:29:26.21 ] つまり◆QZaw55cn4cの言いたい事はこういう事か 「巣を壊したのはお前らだ。だから俺は宿題スレに出てくる権利がある」と さすが義務を果たさず権利だけをやたらと主張する様はどこやら人とそっくり ですね 強烈な他罰 自分を決して省みない厚かましさ こんな奴を誰が好くというのか?
592 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:34:49.71 ] 問題も出さず、回答もせず、QZのコード批判に終始している人はなんなの? そんなコード提出したらダメだよ!っていう正義感から?
593 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:38:21.09 ] 本人じゃね?
594 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:40:31.28 ] なのかなぁ。頭おかしい人を観察するのが大好きだと言っている人がいたから、 同一人物ならいいんだけど、そうじゃないならそっちの方がよほどうっとうしいよね。 まとめて巣に入ればよし。
595 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:54:01.03 ] 問題も出さず、回答もせず、QZを批判する人を叩く>>592 ってなんなの?
596 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 22:59:21.25 ] ごめん、回答するとき以外もトリップつけた方がいいの?
597 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:01:11.21 ] IDじゃなくて酉必須にするのがいいのかもね。 そうすれば出題者、回答者、それ以外と分けられる。
598 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:04:04.40 ] どっちも掲示板利用者にとっては邪魔 QZが回答しながら勉強したいなら、全然問題ないし。 内容で十分でないところがあったにしても真面目に回答をしてるとは思うよ。 批判があるなら、書いてるコードの内容に対してすべき。
599 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:06:58.00 ] こういうなんの効果もない無駄な自治も邪魔でしかないけどな
600 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:32:00.63 ] 一度トリップを使ってそれを覚えられてしまった場合は使い続ける のがマナーじゃね? グローバル変数定義しておいて実際にはそれへのポインタを 関数に与えて処理するコード書く人居るけどそれと似ていて 酷く読みにくかったりする。
601 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/04/30(土) 23:35:08.68 ] (・3・) エェー じゃあこれでいくYO!
602 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 23:41:02.16 ] ぼるじょあスレがあったころが懐かしいな まあ、あの頃もいろいろ荒れてたけど
603 名前: ◆XEE2zLj0dE mailto:sage [2011/04/30(土) 23:45:54.68 ] なんか速度計ったものの、書き込みにくい空気だなぁと思ってたら 指摘された感があったので修正ついでに測定結果を。 テストデータは7500行ぐらい(昇順ソート済み、降順ソート済み、ランダムの3種) それぞれ昇順、降順ソートを10回 もっと速くできると思うんだけど、誰かお願い。 >>538 asc to asc 1.17 asc to desc 1.23 desc to asc 0.18 desc to desc 0.16 random to asc 0.72 random to desc 0.71 >>codepad.org/gtmuVD9m (グローバル変数いらなかったので改訂、ただしそもそもメモリをたくさん使う) asc to asc 0.30 asc to desc 0.29 desc to asc 0.30 desc to desc 0.27 random to asc 0.36 random to desc 0.34 >>570 asc to asc 4.09 asc to desc 7.56 desc to asc 7.78 desc to desc 4.17 random to asc 0.09 random to desc 0.08
604 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 00:11:26.56 ] >>603 >>570 についてだけコメント >asc to asc 4.09 >asc to desc 7.56 >desc to asc 7.78 >desc to desc 4.17 ニ分木にとって入力データとしては最悪ですね。これは仕方がない。 >random to asc 0.09 >random to desc 0.08 ニ分木の左右にほぼ均一にデータが入るので、効率がよくなります。 まあデータ構造によって得意不得意がでるのは仕方がないでしょう。
605 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 00:16:10.46 ] >>604 うん、そう。qsortを使った場合でもソート済みのデータに対しては遅くなる。 同じく、自分が作ってる>>580 のリストも、正順ソートされたデータに対して最悪のパフォーマンスになる。 データが増えた場合には>>603 は仮想メモリを使用することになり、著しくパフォーマンスが落ちることが予想される。 >>577 に、こういう偏ったデータの時に単純な2分木は不利になるってレスをしようと思ったまま忘れていた。
606 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 00:20:17.43 ] 参考になるかどうかわからないけど、同じ条件での測定結果 >>580 asc to asc 1.65 asc to desc 1.63 desc to asc 0.01 desc to desc 0.01 random to asc 1.17 random to desc 1.24 >>564 asc to asc 1.71 desc to asc 8.04 random to asc 6.51 C++のと、>>524 は除外。もちろん両方とも、俺やQZのより速い。
607 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 01:02:22.29 ] >>520 codepad.org/cQhaxuN4 ・ファイルの読み込みは1回? ・単語格納のための配列は使ってはいけない? ・このensure_capacityはJavaのVector#ensureCapacityとは挙動が異なる。 ・realloc失敗したらいきなりexit(EXIT_FAILURE) ・一番素朴なバブルソート ・未保障
608 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/05/01(日) 02:38:35.82 ] (・3・) アルェー 普通に挿入ソートするだけでも おまいらが作ったのよりずっと早いYO! もっと頑張れYO!
609 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 02:55:36.70 ] >>520 正直、割と適当な記述だという自覚がある ・トライでの実装。パトリシア・ツリーも考えたが、さくっと書くのは回答者の技術的に無理だったw ・単語小文字のみ、降順表示のみ対応 ・規格Cでは保証されていない文字の性質(a〜zの文字コードが連続している)を用いている ・最大単語長が126文字を仮定。課題的に問題があるのかは分からなかった ・正しい実装である保証はない codepad.org/tDyLMi1J
610 名前: ◆XEE2zLj0dE mailto:sage [2011/05/01(日) 05:39:37.57 ] うざがられそうだなぁと思いつつ、改訂版と測定結果を貼ってみる。 >>538 の改良版 codepad.org/APIS2iA7 asc to asc 0.02 asc to desc 0.02 desc to asc 0.19 desc to desc 0.19 random to asc 0.11 random to desc 0.10 >>587 を小文字限定にしたもの(単語長の制限はないまま) codepad.org/2IuKE34U asc to asc 0.04 asc to desc 0.03 desc to asc 0.03 desc to desc 0.03 random to asc 0.03 random to desc 0.03 >>609 asc to asc 0.06 asc to desc 0.07 desc to asc 0.06 desc to desc 0.06 random to asc 0.07 random to desc 0.07 >>608 さんのコードもみてみたいです。
611 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:03:23.54 ] >>610 いや、大いに参考になります。trie でソートする、という実装が表にでてくるのも、ひとえに >>610 の人徳でしょう。 >>>608 さんのコードもみてみたいです。 さて、どうでしょうかね。
612 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:15:19.49 ] >>577 >>570 は単純な二分木、というだけではなく、それを再帰呼び出しで実装しているので、この上もなく悲惨なことが判明しました。 手元の環境では、大きなデータを食わせると予告もなく stack overflow で落ちます。(ダンプも吐かないとは‥‥‥。) いくら malloc() の返り値をチェックして最低限の予防線を張っていても、stack overflow だけは検知できない。(こんなことは DOS 時代以来‥‥。) >>569 のいうとおり、 1) 最低限、平衡二分木にする(AVL 木, 2-3 木, 2色木(赤黒木)) 2) 可能ならば再帰呼び出しは行わない。 といったところでしょうか。
613 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:15:47.77 ] トリついてなくても特定簡単すぎるw
614 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:17:10.55 ] ある程度以上のものは再帰で処理できないのは常識。 パズルとかをプログラミングで解こうとするとよくわかる。
615 名前:ぼるじょあ ◆yBEncckFOU mailto:sage [2011/05/01(日) 18:24:10.81 ] (・3・) エェー 挿入ソートのアルゴリズムは >>610 の一番上と同じだYO! qsort にすればもっともっと早くなるYO!
616 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 18:51:08.28 ] ちなみに ”Cに慣れると何でも「いきなりのC」ができると思う癖がつきやすい”と、とある先輩が... マイプログラムにいちいち仕様書書けとかいうんじゃなくて、実はもっと高級言語(C直系のものも多い) を使ってアルゴリズムとか洗練させてからCで書き直さしたほうが無難(急がば回れ)、さもなくば泥沼に 嵌ることも多い という意味
617 名前:デフォルトの名無しさん mailto:sage [2011/05/01(日) 19:41:32.80 ] >>607 修正 codepad.org/AjKZAS6o ・バブルソートを修正 ・コムソートを実装(wikipediaからほぼ丸パクリ) ・コムソートって実装カンタンな割りに平均O(n log n)、最悪O(n log n) ・未保障
618 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:42:39.82 ] [1] 授業単元:計算機実習 [2] 問題文(含コード&リンク):ttp://www.uproda.net/down/uproda293522.jpg [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: 指定なし VC++でやってます [3.3] 言語: C [4] 期限: 明日中 [5] その他の制限: ポインタ一歩手前くらいです
619 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:45:01.15 ] ここまでがんばりましたが、入力した数字が偶奇異なる場合でないと正しく動きません。助けてください。 #include <stdio.h> int main(){ int i,j=0,num,child[1000],song,song2; scanf("%d %d",&num,&song); //子供たちに通し番号を付ける。 for(i=1;i<=num;i++){ child[i]=i; } song2=song; while(j!=1){ while(song2>num){ song2=song2-num; } for(i=1;i<=num;i++){ if(child[i]!=0){ printf("%d",child[i]); } } return 0; }
620 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:47:31.69 ] >>619 じゃないです。こっちです。 #include <stdio.h> int main(){ int i,j=0,num,child[1000],song,song2; scanf("%d %d",&num,&song); //子供たちに通し番号を付ける。 for(i=1;i<=num;i++){ child[i]=i; } song2=song; while(j!=1){ while(song2>num){ song2=song2-num; } /* printf("%d %d",song2,child[song2]); getch(); */
621 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 02:50:51.70 ] child[song2]=0; song2+=song; //ループ脱出用。 j=0; for(i=1;i<=num;i++){ if(child[i]!=0){//何人残ってるか数える j++; } } } for(i=1;i<=num;i++){ if(child[i]!=0){ printf("%d",child[i]); } } return 0; }
622 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:15:43.32 ] >>618 #include <stdio.h> int main(void) { int i, j, n, l, start; int child[1000]; scanf("%d%d", &n, &l); for(i = 0; i < n; i++) child[i] = i + 1; for(i = n, start = 0; i > 1; i--) { start = (start + l - 1) % i; printf("%d\n", child[start]); for(j = start + 1; j < n; j++) child[j - 1] = child[j]; } printf("%d\n", child[0]); return 0; }
623 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:47:56.46 ] >>720 偶然、例の場合に答えが一致してるだけ コメントはずしてsong2とchild[song2]を表示させれば順番おかしいことわかるだろ
624 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 03:56:39.71 ] thx コード美しすぎわろた
625 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 04:05:57.42 ] 0を入れてくバージョンも #include <stdio.h> int main(void) { int i, j, num, length, idx, child[1000 + 1]; scanf("%d%d", &num, &length); for(i = 1; i <= num; i++) child[i] = 1; for(i = num, idx = 1; i > 1; i--) { for(j = 0; ; idx++) { if(idx > num) idx = 1; if(child[idx]) j++; if(j == length) break; } printf("%d\n", idx); child[idx] = 0; } for(i = 1; i <= num; i++) if(child[i]) printf("%d\n", i); return 0; }
626 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 08:45:30.71 ] >>520 >>570 の改良版です。AVL木(平衡二分木の一種)を一部取り入れました。 codepad.org/F4X9iMw9
627 名前:626 mailto:sage [2011/05/02(月) 09:11:00.34 ] こちらでの実測結果です。データは 10000行×120文字までのランダム長英大小文字列、10回反復して平均をとりました。 >>570 asc to asc: 6.00 asc to desc: 8.76 desc to asc: 7.57 desc to desc: 6.63 random to asc: 0.18 random to desc: 0.18 >>626 asc to asc: 0.16 asc to desc: 0.15 desc to asc: 0.21 desc to desc: 0.13 random to asc: 0.15 random to desc: 0.14 >>610 の一つ目 asc to asc: 0.17 asc to desc: 0.14 desc to asc: 0.27 desc to desc: 0.27 random to asc: 0.20 random to desc: 0.21
628 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 09:12:28.63 ] いつまでオナニー続けんだよ
629 名前:626 mailto:sage [2011/05/02(月) 10:17:25.66 ] >>520 >>626 にはバグがありましたので、訂正します。 AVL木を一部採用しています。 ideone.com/ujGUY
630 名前:629 mailto:sage [2011/05/02(月) 10:29:37.11 ] ベンチを取り直しました。条件は >>627 と一緒です。 >>570 asc to asc: 5.84 asc to desc: 8.61 desc to asc: 7.52 desc to desc: 6.68 random to asc: 0.18 random to desc: 0.17 >>629 asc to asc: 0.20 asc to desc: 0.17 desc to asc: 0.16 desc to desc: 0.17 random to asc: 0.18 random to desc: 0.20 >>610 の一つ目 asc to asc: 0.13 asc to desc: 0.13 desc to asc: 0.25 desc to desc: 0.29 random to asc: 0.19 random to desc: 0.20
631 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 10:35:04.82 ] トリップはずしてもクソのままだな
632 名前: ◆XEE2zLj0dE mailto:sage [2011/05/02(月) 10:52:55.68 ] 回答ついた宿題のことを続けるなら別スレがいいと思うんよ。 とりあえず例のスレを使ってみようとしているけど……いいのか悪いのか hibari.2ch.net/test/read.cgi/tech/1295273862/
633 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 11:03:13.81 ] >>632 隔離場所にひっこんでいてもらいたい 俺はあほな誘導するのがうざかっただけだから
634 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 13:30:26.33 ] >>631 糞は糞だよ 自己愛性人格障害は性格の病気だから一生治らん >>630 いい加減に他のスレ行ってやれカス 空気が読めないのかアホ
635 名前:デフォルトの名無しさん mailto:sage [2011/05/02(月) 23:08:09.94 ] >>625 わざわざありがとう! お世話様でした
636 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 18:11:39.70 ] >>632 回答のついた過去の問題でも、解きたい人、解けた人ははどんどんコードをアップしていいとは思ってはいます。 今回、私が叩かれているのは別の理由だったと思いますし。 そのこころは、>>268 。 現在、赤黒木を試行中です。これはなかなか手ごわい。でも赤黒木の応用範囲が極めて広いことを考えると是非征服したいものです。 今年のゴールデンウィークは「赤黒木」がテーマになりました。
637 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 18:24:45.39 ] いいわけねーだろ
638 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 22:27:16.93 ] [1] 授業単元: [2] 問題文(含コード&リンク):デフォルトの場合は Alt+K 1(DEFAULT) カスタムの場合は Alt+K 2(CUSTOM) Alt+Kが押されたらカスタムのようにしてください。 ウィンドウまたはダイアログボックスに表示お願いします。 [3] 環境 [3.1] OS:windows [3.2] VC++ [3.3] 言語: C++ [4] 期限: 5月5日 [5] その他の制限: 制限なし
639 名前:デフォルトの名無しさん mailto:sage [2011/05/03(火) 23:36:01.51 ] >>638 カスタムの意味が不明だったのでAlt+Kだけだが ttp://codepad.org/OSyJjum5
640 名前:308 mailto:sage [2011/05/04(水) 11:18:50.54 ] まずデフォルトが表示されててそこから Alt+Kを押すとデフォルトがカスタムに値を1から2に変更させたいです
641 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:23:59.42 ] 意味が分からん。
642 名前:308 mailto:sage [2011/05/04(水) 11:26:46.15 ] まぁ同じところに表示されてデフォルトだと・Alt+K 1(DEFAULT) Alt+Kが押されたら・Alt+K 2(CUSTOM) こういう風になるようにできればオkだと思います
643 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:35:26.76 ] >>642 つまり 1回目にAlt+K -> Alt+K 1(DEFAULT) 2回目にAlt+K -> Alt+K 2(CUSTOM) を表示させるってことか? とりあえずその分かりにくい日本語をなんとかしろw
644 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:42:57.39 ] Alt+K 1 という表記が分からない 2アクションとして受け取ると DEFAULTを実行する術がない 意味が分からん。
645 名前:308 mailto:sage [2011/05/04(水) 11:43:04.22 ] >>643 そのとおりです。日本語おかしくてスイマセン・・・・
646 名前:308 mailto:sage [2011/05/04(水) 11:43:55.14 ] 1と2は値です
647 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:50:21.00 ] >>646 意味が分からん。
648 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 11:52:07.80 ] まず638は日本語を勉強してくること 俺のESPを駆使すると、ALT-Kで1と表示されたものが2に変わるくらいに思える
649 名前:308 mailto:sage [2011/05/04(水) 11:52:41.21 ] 643 :デフォルトの名無しさん:2011/05/04(水) 11:35:26.76 >>642 つまり 1回目にAlt+K -> Alt+K 1(DEFAULT) 2回目にAlt+K -> Alt+K 2(CUSTOM) を表示させるってことか? こういうこと
650 名前:308 mailto:sage [2011/05/04(水) 11:54:13.11 ] とりあえずAlt+Kの位置も変わらず 1(DEFAULT)が2(CUSTOM)に変わるって事です。
651 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 12:53:32.42 ] >>650 エスパーが質問に答えるスレ hibari.2ch.net/test/read.cgi/tech/1187922645/
652 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 12:56:49.53 ] ウィンドウやダイアログボックスはそもそもスレチだろ
653 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 13:01:51.35 ] 頭が悪いんだからしょうがねーだろ
654 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 14:38:10.15 ] >>639 を直して欲しいわ。 loda.jp/_pluto_/?id=19
655 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:05:26.51 ] >>652 それ本当なのか?
656 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:15:16.07 ] 答えたくないだけだろ
657 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 18:38:33.85 ] 気に入らない依頼に回答が付かないようにするためじゃね
658 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:03:43.79 ] バカらしい答えてやろうぜこのスレの意味ないだろ
659 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:24:43.34 ] [1] 授業単元:再帰プログラミング [2] 問題文:n人でr個に分ける方法の数 nSrはStirling数という。関数Stirling 作成せよ。 ここで nSr = n-1Sr-1 + n-1Srr , nS0 = 0 , nS1 = 1, nSr = 0(r > n) [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限:5/4 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) ポインタは習っていません。よろしくお願いします。
660 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 19:27:17.61 ] 習ってないならまず習って来い
661 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 21:16:35.14 ] ウィキったけど、第2種のようなそうでないような、 とりあえず問題分をそのまま当てはめてみた。 ちなみにWindows環境、一応MinGWで試した。 ttp://ideone.com/im132
662 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 21:51:24.89 ] n-1Srrはn-1Srの誤字じゃないの?
663 名前:デフォルトの名無しさん mailto:sage [2011/05/04(水) 23:23:01.74 ] >>659 非再帰にしてみたが、即効で桁あふれするから無意味 #include <stdio.h> #define N 8192 #define table(i, j) t[r * (i) + (j)] long long stirling(unsigned int n, unsigned int r) { static long long t[N]; long long i, j; if ((n + 1) * (r + 1) >= sizeof(t)/sizeof(*t)) return -1; for (i = 0; i <= n; i++) for (j = 0; j <= r; j++) table(i, j) = 0; for (i = 0; i <= n; i++) table(i, 0) = 0; /** nS0 = 0 */ for (i = 0; i <= n; i++) table(i, 1) = 1; /** nS1 = 1 */ /** nSr = n-1Sr-1 + n-1Srr (n >= r) */ for (i = 2; i <= n; i++) for (j = 2; j <= i && j <= r; j++) table(i, j) = table(i - 1, j - 1) + table(i - 1, j) * j; return table(n, r); } int main(void) { long long n, r; if (scanf("%lld%lld%*c", &n, &r) != 2) { fprintf(stderr, "invalid input\n"); return 1; } printf("%lld\n", stirling(n, r)); return 0; }
664 名前:デフォルトの名無しさん mailto:sage [2011/05/05(木) 03:54:56.18 ] >>662 いや、おそらく (n-1Sr)r が正解だと思う。
665 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 05:10:25.33 ] int型で工夫することによって20桁同士の整数の掛け算を行い char型で計算結果を出力せよ。 これをお願いします。困っています。
666 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 05:36:40.97 ] ヒント 0x1234 * 0xabcd = 0x12 * 0xab * 0x10000 + 0x12 * 0xcd * 0x100 + 0xab * 0x34 * 0x100 + 0x34 * 0xcd
667 名前:デフォルトの名無しさん mailto:sage [2011/05/06(金) 17:24:50.84 ] >>665 intで40桁表せられるハードウェア作ればいんじゃね?
668 名前:355 mailto:sage [2011/05/06(金) 17:53:21.34 ] >>345 >>665 codepad.org/PXA5JrGF
669 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 00:48:45.13 ] [問題文]char型の配列の先頭ポインタ*cを引数として、 返数なしでcの指し示す配列にhogeを代入するプログラム codepad.org/WYd2dorv このプログラムだとエラーが出てしまいます 改善点を教えて下さい
670 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 00:54:44.26 ] >>669 つ codepad.org/Tt57ftHa
671 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 01:27:24.56 ] >>670 ありがとうございます コピペしたところ、「識別子が見つかりませんでした」とエラーがでました
672 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:19:30.93 ] >>671 #include <string.h>
673 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:22:45.40 ] >>671 codepad.org/yv4B0Lo0
674 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:24:29.05 ] ググればすぐ分かる事を教えてやることないのに
675 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 02:38:24.95 ] >>672-674 ありがとうございました
676 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:03:40.24 ] [1]授業単元:プログラミング2 [2]問題文:char型のポインタ配列の先頭ポインタ**cを引数とする 返数なしでcの指し示す配列に順に月の名前の文字列を代入 作成したプログラム(codepad.org/jf7lkdXu )だと エラーが起きてしまいます。お願いします。
677 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:06:03.20 ] char *name[6]; にしてみ。
678 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 17:10:13.64 ] ねずみ?
679 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 18:10:28.30 ] >>677 おお!できるようになりました ポインタ配列とポインタのポインタはこうすればよかったのか 勉強になりました ありがとうございました
680 名前:デフォルトの名無しさん mailto:sage [2011/05/08(日) 18:06:11.25 ] 1]授業単元:プログラミング [2]問題文:自己参照型構造体を用いて、以下の処理をするプログラムを作成せよ。 正の数入力→連結リストを辿り、初めて入力された数ならばカウンタを1増やす。同じ数が続けて入力されたらその数のカウンタをさらに1増やす。 負の数入力→負の数の絶対値と同じ回数入力された数のデータを削除(例えば、-3を入力し、それ以前に14が3回入力されていたら、それを削除) 0を入力→データを出力して終了。 データ出力→終了の流れはどうにかなりましたが、それ以外で上手い発想が思いつきません。 codepad.org/yayuXIUa 期限は明日までです。
681 名前: ◆XEE2zLj0dE mailto:sage [2011/05/09(月) 02:52:07.72 ] >>680 codepad.org/f51zggbZ 回答がついてないのでやろうと思ったんだけど、正の数入力時の内容がどうにもわからず。 「正の数入力→入力された数の入力回数を保持する」と読み替えて作ったものをうp。 意図と違ってたら、もうちょっと細かく書いてみてください。 元コードと考えが違うところは、headは有効なノードではなく、ダミーノードにした点ぐらいのはず。
682 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 05:41:56.98 ] >>681 いいんじゃね? 俺もずっと前にこの手のプログラムを山ほど作ったが ダミーノードを使った方がプログラムの見通しが良くなった。 今はC++のコンテナ std::list とイテレータで何も考えなくて 良くなったが、Cは全部書かないといけないし free() の所で バグりやすいから大変だね
683 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 14:14:21.20 ] てんぷら全部埋めないのが流行ってるの?
684 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 19:19:48.27 ] >>680 と>>681 のコード質の差が激しすぎだな 小学生の工作宿題なんかを親が小学レベルに合わせずに親の基準(俺俺基準) で作成したって感じだな。カンニングバレバレだろうな >>681 >初めて入力された数ならばカウンタを1増やす >同じ数が続けて入力されたらその数のカウンタをさらに1増やす この2つの処理を >正の数入力→入力された数の入力回数を保持する に変更ってこと?
685 名前: ◆XEE2zLj0dE mailto:sage [2011/05/09(月) 20:51:41.38 ] >>684 もとのコードは生かしたつもりだったけど、ダメだったかな。 変更内容はそのとおりで、元コードの構造体と、削除時の説明からそうしてみたけど、的外れですかね…… あとはリストの並び順とかも指定なかったので適当だったりで。 宿題ならこのほうがよくね?ってのがあるなら書いてくれると次書くときできるだけ反映します。 >>682 ありがとです。 一応、メモリリークの検査と、警告は全部潰す方向でやってます。 危うく見事にfreeまわりでバグってるとこでしたorz
686 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 21:53:00.11 ] >>685 依頼主が何も言わないのなら、それで良いんじゃないか 少しはやる気ある依頼主みたいだから>>681 を元に自分で俺様回答作成しているんじゃないか
687 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 00:19:48.64 ] >>680 の依頼主ですが、残念ながら宿題片付けはできなかったものの 自己参照型構造体のメカニズムについて少しずつ理解はしています。 C言語が得意な知人曰く、headはポインタ変数にせず普通の変数として扱い、 その中のポインタ変数であるhead.nextを使うとやりやすいとの事なので、 また考えて見ます。
688 名前:デフォルトの名無しさん [2011/05/10(火) 14:16:41.34 ] 平面上の位置座標(x, y)から相対的に(Δx, Δy)だけ移動した位置座標を求めたいとする。 (x, y)と(Δx, Δy)をそれぞれ配列として表現し、これを引数として受け取って求めたい座 標を返す関数void func1(double x[], double d[], double a[])を定義して、 その動作を確かめるプログラムkadai4-1.cを書きなさい。ただしx[]が元の位置座標、 d[]が移動分、そしてa[]に答え が代入されるものとする。 (x, y)と(Δx, Δy)はキーボードから次で入力するものとする。 scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]); 答えは以下で出力されるものとする。 printf("answer = (%lf, %lf)\n", C[0],C[1]); よろしくおねがいします
689 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:21:32.07 ] 数学の問題と違って、解き方だけでなく書き方も重視されるのが C言語の問題 だからかどうか知りませんが、点プレに沿って質問してくださいね
690 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:29:13.50 ] >>688 #include <stdio.h> void func(double x[], double d[], double a[]) { a[0] = x[0] + d[0]; a[1] = x[1] + d[1]; } int main(void) { double A[2], B[2], C[2]; scanf("%lf %lf %lf %lf", &A[0], &A[1],&B[0],&B[1]); func(A, B, C); printf("answer = (%lf, %lf)\n", C[0],C[1]); return 0; }
691 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:52:59.48 ] >>689 書き方と解き方は結構繋がっているからな
692 名前:688 mailto:sage [2011/05/10(火) 15:04:40.28 ] >>690 ありがとう 2x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。 ただしAとBはキーボードから次で入力するものとする。 scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]); 答えは以下で出力されるものとする。 printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]);
693 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:12:04.51 ] strSrcの文字列を逆にして,strDstに書き込むプログラムを作成してください. ただし,文字列の操作にはポインタ変数strDst, strSrc, pC, pDを用いることとし,strSrc[i] のような配列操作は用いないこととします. また,配列strSrc[]の1つ前の番地に0が入っていることを前提としないプログラムにしてください. codepad.org/V7e6qsPC
694 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:14:05.10 ] すいません、>>693 です。 C言語勉強したてなのですが、このような課題が出来ません… ここ数時間試行錯誤してるのですが、どうも上手く出来てないようなのでお力を貸してもらえると嬉しいです。
695 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:17:42.10 ] strSrc strDst共に文字列リテラルへのポインタなんで scanfや書き換えができるかどうかは処理系依存 殆どの処理系で禁止されている。 テンプレに嵌らない質問は別のスレで
696 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:19:53.04 ] >>693 >>1 読んでテンプレ埋めろ >>695 馬鹿は黙れ
697 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:27:05.91 ] [1] 授業単元:プログラミング言語 [2] 問題文: >>693 [3] 環境 [3.1] OS: windows7 [3.3] 言語:C言語 [4] 期限: 2011/5/12(金) [5] その他の制限: 授業では最近ポインタに入りました。ポインタの入ってから初めての課題です。 文字列のコピーは出来たのですが、どうしても文字列の反転が出来ません…。
698 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:28:07.88 ] >693 ttp://codepad.org/3jbfqS2v
699 名前:698 mailto:sage [2011/05/10(火) 22:33:21.88 ] >695 strSrc, strDstとも配列だから問題ない。 >697 コメントに書いたけど、scanfで読み取る文字列がstrSrcのバッファを溢れさせると まずいことになる。 まぁ、課題の進み具合からして、あふれるような入力は無い前提で 構わないとは思うが。
700 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:40:35.13 ] >>698 ありがとうございます!理解するのに少し時間がかかりそうですが、勉強してきます…
701 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:41:33.22 ] >>697 >>693 にはstrSrcとstrDstはポインタ変数とあるが配列でいいの?
702 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:48:15.48 ] >>701 本当ですね…問題文は一切改変してないので、問題作成者側のミスかもしれません。 授業(口頭での課題の簡単な説明)ではstrSrc , strDstを配列として扱っていたので、配列だと思われます。確認してみます…。
703 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:52:20.65 ] pC=strSrc;pD=strDst; while(*pC)pC++; if(pC>strSrc)pC--; while(pC>strSrc){ *pD=*pC; pC--;pD++; } pD=0;
704 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 22:58:02.96 ] ↑バグってる
705 名前:698 mailto:sage [2011/05/10(火) 23:02:37.42 ] バグがあった。 >703さんのコードで3行目に当たるところの処理がまずい。 pC--; → if (pc > strSrc) { pC--; } テストはほとんどしていないので、他にもあるかも。
706 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 23:13:42.89 ] >>703 (#の後ろは無修正行を意味) #pC=strSrc;pD=strDst; #while(*pC)pC++; #if(pC>strSrc)pC--; while(pC>=strSrc){ #*pD=*pC; #pC--;pD++; #} *pD=0; これでおk?
707 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 00:56:53.90 ] sizeofは覚えるとやたらと使いたくなる演算子の一つだが むやみに使う癖を付けると後で泣きを見やすい(実体験) バイトサイズオンリーで押していくシステム直属処理用の もので理論・応用レベルのコードではなかなか取れない やっかいなバグの温床になりがち
708 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:14:13.97 ] >>707 エンディアンではまったのですか?yrskrb kwsk
709 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:16:29.13 ] それとも、アラインメントですか?yrskrb kwsk
710 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 01:18:15.44 ] 馬鹿にするために聞くとは意地が悪いなw
711 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 02:00:16.99 ] >>710 そんなことはありません。sizeof を避ける、という意見は初めて聞きましたので、理由をしりたいだけです。 アラインメントの問題をさけるために assert をバンバンいれたり fwrite(), fread() で構造体のメンバ変数を ちまちま読み書きしたことがあります。 エンディアンのトラブルを避ける方法はちょっとよくわかりません。
712 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 02:07:18.55 ] むしろsizeofからエンディアンに発展した経緯が知りたいわ
713 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:09:59.23 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ボウリングのスコア計算をするプログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C [4] 期限: 本日中 [5] その他の制限: 問題文はこれだけです 習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので 可能ならばそれらでやっていただけると助かります
714 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:17:36.03 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): トランプのカード(1〜10,J,Q,K)が13枚ある。 まず、1枚のカードが表示されており、プレイヤーは次のカードが その数字よりも大きいか小さいかを当てる。 間違えたらそこで試合終了(もう一回続けるかどうか尋ねる。) 予想が正しかったら次の予想を続けるゲームのプログラムを作りなさい。 また上記のゲームのプレイヤー側の思考プログラムを作りなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C [4] 期限: 本日中 [5] その他の制限: 習った範囲は2次元配列、if、for、while、switchといった初歩的なものなので 可能ならばそれらでやっていただけると助かります ゲームのプログラムと思考プログラムはそれぞれ別のファイルでお願いします。
715 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 06:44:47.86 ] 本日中ってもっと余裕もって質問しろよw あと2つ目はわかったけど最初のボウリングの問題もっと具体的に
716 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 07:44:54.87 ] >>715 何だか色々と申し訳ないです ボーリングの問題なんですが本当に問題文これだけなんで 自分も詳しくは分からないのですがレーン毎に倒した本数を入力していく形式だと思います 一応今授業で乱数を学んでいるのですが特に関係なさそうですし…
717 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 08:22:37.56 ] 要するにストライクやスペアを取った時の処理がミソなんだろうな あと最後の投球は3回になる可能性も考慮して
718 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 09:01:27.16 ] >>716 ゴールデンウィークの前に出された問題ですか?
719 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 09:24:40.82 ] >>718 気持ち悪いので隔離スレでやってくれ
720 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 11:13:25.50 ] こんな感じで与えられるのかな? int score[10][3];
721 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 11:58:48.19 ] ストライクでたら後の2投加算で、スペアは1投加算だっけ? 単純に面倒だな
722 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:22:47.08 ] >>713 int main() { const int score[10][2] = {{0, 0}, {10, 0}, {8, 2}, {10, 0}, {10, 0}, {10, 0}, {5, 3}, {8, 2}, {10, 0}, {10, 10}}; const int extra = 10; int sum = 0; int i; for (i = 0; i < 9; i++) { if (score[i][0] == 10) { if (i != 8 && score[i + 1][0] == 10) { sum += 10 + score[i + 1][0] + score[i + 2][0]; } else { sum += 10 + score[i + 1][0] + score[i + 1][1]; } } else if ((score[i][0] + score[i][1]) == 10) { sum += 10 + score[i + 1][0]; } else { sum += score[i][0] + score[i][1]; } printf("%d\n", sum); } sum += score[i][0] + score[i][1] + extra; printf("%d\n", sum); } 合ってるかもよく分からりません
723 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:44:17.89 ] >>714 #include <stdio.h> #include <stdlib.h> int main() { const char *card[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; const int random[6] = {1, 4, 6, 5, 12, 0}; int i, res = 0; for (i = 0; ; i++, i %= 6) { printf("次は%sより大きいと思うなら1, 小さいと思うなら0を入力してください\n", card[random[i]]); scanf("%d", &res); if ((res == 0 && random[(i + 1) % 6] < random[i]) || (res == 1 && random[i] < random[(i + 1) % 6])) { printf("つぎは%sなので正解でした\n続けるなら1を入力してください\n", card[random[i + 1]]); scanf("%d", &res); if (res != 1) break; } else { printf("不正解ですい\n"); break; } } }
724 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:49:45.35 ] >>714 #include <stdio.h> int main() { int res; printf("出されたカードはなんでしたか?数字で入力してください(J = 11, Q = 12, K = 13で)\n"); scanf("%d", &res); printf("次のカードは今回より%sとおもいます\n", res < 8 ? "大きい" : "小さい"); }
725 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:33:14.90 ] 【質問テンプレ】 [1] 授業単元プログラミング [2] 問題文(含コード&リンク): 2x2の行列A,Bの差を求める関数void func2(int A[][], int B[][], int C[][])を定義してその動作を確かめるプログラムkadai4-2.cを作りなさい。演算結果はC[][]に代入されて返されるものとする。 ただしAとBはキーボードから次で入力するものとする。 scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]); 答えは以下で出力されるものとする。 printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]); [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 13日まで [5] その他の制限 特になし よろしくおねがいします。
726 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:38:51.76 ] >>725 まてその関数どうやっても作れねーよ
727 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 13:46:14.63 ] #include <stdio.h> void func2(int A[][2], int B[][2], int C[][2]) { int i ,j; for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) C[i][j] = A[i][j] - B[i][j]; } int main() { int a[2][2], b[2][2], c[2][2]; scanf("%d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[1][0],&a[1][1], &b[0][0],&b[0][1],&b[1][0], &b[1][1]); func2(a, b, c); printf("answer = %d %d %d %d\n", c[0][0], c[0][1], c[1][0], c[1][1]); }
728 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 14:12:18.39 ] 次の文を修正しなさい >ポインタ変数宣言時における構文糖 >type *p=type型配列定数宣言 >例 >int const *p={1,2,3,4,5,6,7,8,9,10}; >は許可されないので >int pbase[10]={1,2,3,4,5,6,7,8,9,10}; >int const *p=pbase; >としなければならない。 >これでは冗長なのでpがconstである場合に限り >int p[]={1,2,3,4,5,6,7,8,9,10}; >でconst ポインタ変数pが宣言されたとすることができる >Cでは配列とポインタを意図的に区別をしていない >していないからこそ処理系の裁量で「配列」が値渡し(配列的) >できるか参照渡し(ポインタ的)しか出来ないか決定できる >前者の場合は副作用の少ないすっきりとしたわかりやすい >コードが書けるが、実際には動作できないようなコードも >生み出しがち。後者は現在の標準(巨大データは参照渡)。
729 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 14:35:16.74 ] >ポインタ変数宣言時における構文糖 >type *p=type型配列定数宣言 >例 >int const *p={1,2,3,4,5,6,7,8,9,10}; >は許可されないので >int pbase[10]={1,2,3,4,5,6,7,8,9,10}; >int const *p=pbase; >としなければならない。 >それはおいといて >int p[]={1,2,3,4,5,6,7,8,9,10}; >はint型の配列pの宣言です >Cでは配列を関数の引数に渡すと >関数内ではポインタになります
730 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 15:48:32.56 ] >>722 >>717 が言及しているけど、最後の10フレーム目は、ストライクが2回続いているんで、もう1投あるね。 {10, 10, 8}
731 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 16:06:08.47 ] あ、ごめん、よく見たら const int extra = 10; が10フレームの3投目か。
732 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:20:46.96 ] >>722-724 ありがとうございます それと申し訳ないんですが>>714 のゲームプレイヤー側の思考プログラムなんですが 「ランダムに大小を選択するのではなくある程度思考して選択するように」との一文があったのですが大丈夫ですかね? それとボーリングのプログラムを倒したピンの数を標準入力していって スコアを算出するように出来ませんかね? お手数かけて申し訳ないです
733 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 17:22:52.84 ] 「これからしばらく寝ます。」
734 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:14:57.05 ] >>732 ランダムに選択していないし、ある程度かどの程度か分からないけれど、思考はしているように見えるよ。 「別の回答作ってるから少し待ってて」
735 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:19:44.77 ] void func2(int A[][], int B[][], int C[][]) いまのCはint[][]ができるのか。良い時代になったな >>727 [][2]と[][]は型が違うんじゃないか?
736 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 18:34:22.00 ] Cでは別に禁止してないけど、実装上の理由からCコンパイラの多くが 許可していない(対応していない)というのも多いんじゃね?
737 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 19:14:32.07 ] >>735 だって[][]とか不可能じゃん、こうするしかないじゃん >>726 =>>727 だし >>736 適当なこというなよ
738 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 19:27:41.45 ] >>736 おいおいこれは「ジャグ配列」と言ってC/C++の二次元配列とは全く違うぞ 強いて言えば std::vector<std::vector<int> > に近い つまり行ごとに列の要素数が違ってもいいわけだ
739 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:31:03.11 ] >>732 あってるかどうかしらないけど codepad.org/QdBVtj65
740 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:44:56.86 ] 10フレーム3投目がおかしくね?
741 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 20:48:02.57 ] ポインタでない配列をNULLで初期化するのってあってるの?
742 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 21:03:13.23 ] NULLはマクロ定義 0の場合が多いけど処理系によって違う
743 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 21:17:57.26 ] >741 間違ってるだろうね。 Cの場合は #define ((void *)0) ってなっていることが多いとおもう。 #define 0 なら結果的に問題ないけど、終端文字をNULLって書くくらい、間違っている。
744 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 00:05:07.68 ] >>742 どう定義されていようが、間違いには変わりない。
745 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:28:56.05 ] [1] 授業単元:プログラム実習 [2] 問題文(含コード&リンク): 名前・身長・体重・血液型が記録されたメモ帳(ファイル)がある。 これを身長順にソートして並べ替えてコマンドプロンプト上に 表示させるプログラムを作成せよ。 なお、今回メモ帳はstudentsdata.txtという名前で保存されていることとする。
746 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:32:21.54 ] [3] 環境 [3.1] OS: Windows vista business [3.2] コンパイラ名とバージョン: visual basic [3.3] 言語:C言語 [4] 期限:2011年5月16日(月)午前9時まで [5] その他の制限: 最後の行には身長・体重の平均、一番多い血液型を表示させること。 条件として構造体を使うこと。 長文で投稿できなかったので2回に分けました。 よろしくお願いします。
747 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 12:47:43.86 ] >>745 で、ファイルは固定長?それとも何かの区切りがあるの? >>746 つか、vbでCは無理 もう一度宿題を確認して来い
748 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 13:05:35.36 ] 名前・身長・体重・血液型の書式が指定されてるか確認した方がいいよ 勝手に決め打ちした書式でも文句は言えないぞ
749 名前:デフォルトの名無しさん [2011/05/12(木) 14:14:19.58 ] [1] 授業単元:システムコール [2] 問題文(含コード&リンク):codepad.org/a9fxM1w5 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 2011年05月17日12:00まで [5] その他の制限:codepad.org/wW5cjiF7 を元にすること どの部分で何をしているのかも分かりません。 よろしくお願いします。
750 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 15:48:58.26 ] ttp://hibari.2ch.net/test/read.cgi/tech/1304304298/ このスレの896と897お願いします 困ってます
751 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 15:58:26.35 ] [1] 授業単元:プログラミング [2] 次の連立方程式を解け x1+2x2+3x3+4x4=30 2x1+3x2+4x3+x4=24 3x1+4x2+x3+2x4=22 4x1+x2+2x3+3x4=24
752 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:03:36.10 ] 751続き [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: visual basic [3.3] 言語: C++ [4] 期限: 2011年5月13日(金) [5] できれば元の式のみを解くというだけでなく、他の数値等でも解けるように式自体を読み込まして解きたい。 数式がとても見辛いですがよろしくお願いします。ガウスの消去法です。
753 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:20:02.16 ] visual basic
754 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:28:11.08 ] >>751 ttp://www.geocities.jp/supermisosan/gauss.html ここのコピペでやっときました codepad.org/qs1bhQZW できればとのことでしたので式での読み込みは対応してません
755 名前:764 mailto:sage [2011/05/12(木) 16:51:34.82 ] 大変失礼しました。 ファイルの中は 氏名 身長 体重 血液型 氏名 身長 体重 血液型 ・ ・ ・ といった具合に並んでいます。 (空白はスペースです) あと、visual basicではなく visual studioの間違いでした。すみませんでした。
756 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 16:55:10.14 ] >>755 は746です。
757 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 17:40:32.25 ] >>755 codepad.org/YSCWRuMX データは ito 157 50 B sato 160 60 A shiro 220 89 AB itoo 170 49 AB で試しました
758 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 17:53:16.34 ] >>757 ありがとうございます! 助かります
759 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 23:09:33.05 ] >>754 double a[N][N+1]; for (int i = 0; i < N;i++){ for (int j = 0; j < N + 1; j++){ printf("a[%d][%d] = ", i+1, j+1); scanf("%lf", &a[i][j]); } }
760 名前:デフォルトの名無しさん mailto:sage [2011/05/12(木) 23:58:57.58 ] >>754 お礼が遅れてすみません。非常に助かります。 ありがとうございました!
761 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 00:30:28.83 ] >>749 codepad.org/FAALZHkg getopt() 周りは調べ物をせずに勘で書きましたので、はずれていたらごめんなさい。
762 名前:デフォルトの名無しさん [2011/05/13(金) 11:37:13.83 ] [1] 授業単元: ニュートン法 [2] 問題文:与えられた実数(a,b,c,d)に対して,つぎの連立非線形方程式 の解をニュートン法を用いて,解くプログラムを作成しなさい. f1(x,y)=y+ax^2-b=0 f2(x,y)=y^2+cx^2-d=0 ただし,初期値(a,b,c,d)を入力でき,上記の方程式の解が画面表示さ れること 【自己チェック法】 (a, b, c, d)=(0.1, 5, 1, 100)→ (x, y)=(9.306, -3.661),(-9.306, -3.661) , [3] 環境 [3.1] Windows [3.2] gcc [3.3] C言語 [4] 期限: 2011/5/15 18:00まで [5] その他の制限: できるだけ簡単な関数で よろしくお願いします.
763 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:22:07.41 ] >>762 codepad.org/MqL6Rtek
764 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:22:54.06 ] あとここからのほぼコピペです ttp://www.geocities.jp/supermisosan/newtonhou.html
765 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 12:37:13.49 ] (abcdじゃない方の)初期値も標準入力で入力できたほうが良かったでしょうか そうしないと数値を変えてコンパイルしなおさないともう一つの解を出せないですし ニュートン法の手法自体では解が一つしか出ないんですが 複数解についてなにか指示はありましたか? 一応初期値を複数とって比較すれば出せないこともないですが数学的にはかなりアレな方法な気がします
766 名前: ◆XEE2zLj0dE mailto:sage [2011/05/13(金) 13:08:08.81 ] 解は最大4つか
767 名前:デフォルトの名無しさん [2011/05/13(金) 13:31:49.67 ] 1] 授業単元:数値計算アルゴリズム [2] 問題文:f(x)=e^-x -x^2=0の解(x>0)を原始反復法とニュートン法から求め、その収束の速さを比べよ。なお、解の精度は10^-6 とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2011年5月13日18:00まで [5] その他の制限:なし よろしくお願いします。
768 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 19:06:25.30 ] 原始反復法が分からん どんなんだっけ?
769 名前:デフォルトの名無しさん mailto:sage [2011/05/13(金) 19:09:05.55 ] 知恵遅れwww detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1261759137
770 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 07:44:30.37 ] >>767 原始反復法ってなんですか?
771 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 07:54:29.23 ] 原始反復法=反復法
772 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 11:33:02.88 ] 連立方程式の反復法なら分かるんだがなあ
773 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:46:44.72 ] <問題文>キーボードから入力された商品名の価格を出力するプログラム。 入力された商品名がない場合は、「そのような商品はありません」と出力する。 codepad.org/DGGLOUGq codepad.org/h7pGT49o ↑2つのパターンで作成したんですが、両方ともエラーになります。 どうすればいいのか教えて下さい。 バージョンは、VisualC++です。
774 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:52:10.88 ] >>773 文字列の比較はstrcmpを使ってください ==ではだめです
775 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:54:27.51 ] × char *name[3] = {"tree","cake"}; ○ char *name[2][16] = {"tree","cake"};
776 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:56:21.32 ] >>775 むしろ char *name[] = {"tree","cake"} でいいだろ ていうかその◯のやつはなんなんだよwwwwww
777 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 12:57:56.33 ] >773 直接エラーになっているのは scanf("%s",&s); → scanf("%s",s); 文字列比較はstrcmpが必要になるのは>774の通り。 >775 何か勘違いしてませんか?
778 名前:773 mailto:sage [2011/05/14(土) 15:34:19.77 ] strcmpなしではできないのでしょうか?
779 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 15:37:34.83 ] >>778 できるよ 先頭から一文字づつ比較すればいい
780 名前:773 mailto:sage [2011/05/14(土) 15:42:22.33 ] >>779 それはfor文を用いるのでしょうか?
781 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:00:18.52 ] >>780 for文でも可能です
782 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:03:25.97 ] >>781 やり方を教えて下さい
783 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 16:05:03.95 ] >>782 ここは宿題すれだから、>>1 のテンプレに従って 問題文と回答方法を書いてくれると早い。
784 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 17:35:15.95 ] わかりました [2] 問題文:キーボードから入力された商品名の価格を出力するプログラム。 入力された商品名がない場合は、「そのような商品はありません」と出力する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語: C++ [4] 期限: 2011年5月18日 [5] その他の制限:strcmpは使用しない方向でお願いします codepad.org/DGGLOUGq codepad.org/h7pGT49o
785 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:13:31.83 ] >>784 codepad.org/jem1X2Ay
786 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 18:33:02.91 ] >>785 バカすぎるw
787 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 19:28:00.85 ] >>785 を修正してみた ttp://codepad.org/PkghZAMd
788 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:05:38.40 ] >>787 >const char *name[] = {"tree","cake"}; >const int price[] = {300,500}; なぜ static をはずした?
789 名前:787 mailto:sage [2011/05/14(土) 20:16:50.68 ] いつもの癖で 質問で気付いたけど呼び出し毎のスタック確保&解放防止の為なのね、 付けた方が良いのかも
790 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:37:21.04 ] 787は中途半端すぎだろconstもつけろよwwwww 改変の危険と速度面から
791 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 20:37:49.38 ] >>787 じゃねぇ>>785 だ
792 名前:デフォルトの名無しさん mailto:sage [2011/05/14(土) 23:07:51.48 ] >>784 codepad.org/sMyHxgqq
793 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 00:40:17.56 ] 本人がstrcmp使わないでとか自身で書いたコードがCなのにC++かいな、 ってか前もこの手の話なかったか?w
794 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 01:06:02.73 ] >> [3.3] 言語: C++ 仕様通り。問題無し。
795 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 03:19:24.77 ] 半端なC++化だな
796 名前: ◆6W4srb4nmo mailto:sage [2011/05/15(日) 03:28:10.33 ] A Better C.
797 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 08:50:38.83 ] コードも書かずに批評かよ… 本格的なC++化というのを見せてくれ。w
798 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 08:54:17.71 ] >>797 本格的とかいわれてもwwwww stringを使って簡略化したなら 末尾の検出のために手動で-1入れた配列とか使ってないでコンテナも使えばいいじゃんぐらいの話しよ
799 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 09:00:41.03 ] hoge.cpp
800 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 09:29:08.10 ] >>798 5月初旬じゃコンテナまで習ってないだろ。
801 名前: ◆XEE2zLj0dE mailto:sage [2011/05/15(日) 09:44:33.48 ] 本格的かどうかわからないけどやってみた。 codepad.org/lZa2IvaV なんか商品がすごいなぁ
802 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:37:07.20 ] >>800 出題者のこと考えるならそもそもstringも使うべきじゃないだろ どうみてもCだもの あくまで>>792 が半端だなぁってだけだよ
803 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:45:00.34 ] >>802 お題が、言語:C++、制約条件:strcmpは使用しない事とあるので、 std::string使えというのが出題者の意図と判断した。 もう一つの可能性(strcmpを自分で書く)は既に出ている。 質問テンプレに「これまで習った範囲」も入れた方が良いな。
804 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:45:06.08 ] テンプレぐらいちゃんと書こうよって皮肉だと思う あと、strcmpを使わないっていうのは、本来そんな制限はないけど、 出題者が思い込みで勝手につけた制限だと思う。宿題スレにはよくあること
805 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 10:50:25.42 ] >>803 あぁなるほど C++って描いてあるのに結局Cでやれってことかよって奴をちょくちょく見たので思い込んでた
806 名前: ◆/91kCCQXBo mailto:sage [2011/05/15(日) 11:13:20.99 ] >>785 tree tr trees rg で試したけど全部300
807 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 13:39:45.23 ] >>806 ご指摘ありがとうございます。 mystrcmp() に問題がありました。 >>784 バグがありました。以下に訂正いたします。 codepad.org/j4CqE1i7
808 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 13:51:40.71 ] [1] C言語GW課題 [2] キーボードから128文字以内の文字列を読み取り それが浮動小数点表現であるかどうかを検査する プログラムを作りなさい。浮動小数点表現ならば その数に1を足した数字を表示しなさい。 [3] Windows/Visual C++/C言語 [4] 5/13迄(遅れています) [5] printf,scanfしか習ってません ボインタとかまだ習ってません これ以外の関数は使えないと思います。 よろしくお願いします。
809 名前:784 mailto:sage [2011/05/15(日) 16:00:57.97 ] 784です。遅れてすいません 様々なプログラムをありがとうございました 参考にさせていただきます
810 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:33:51.45 ] 頑張ってC++してみた ttp://codepad.org/2vOLnCEL
811 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:38:38.61 ] >>810 は>>784 のコードね
812 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 16:39:39.89 ] >>808 codepad.org/UdQ3fBEH 習っていない表現があれば書き直しますので連絡ください。
813 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:22:11.31 ] >>808 追加要望 hibari.2ch.net/test/read.cgi/tech/1295273862/869 に対応しました。あとバグをいくつかとりました。 codepad.org/m9T3sxmN
814 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:29:55.59 ] >>813 エラー E2140 dai2.c 15: ここでは宣言はできない (関数 main ) またC99で書いたろカス
815 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:48:42.02 ] あと、E大文字、とか。 それは出題者で出来るだろうから宿題。
816 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 18:52:46.47 ] >>814 おっとご指摘感謝。 >>808 codepad.org/jbnR5QWF
817 名前:デフォルトの名無しさん [2011/05/15(日) 18:55:59.95 ] >>814 だってQカスだもの
818 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 19:35:09.50 ] >>808 codepad.org/QcnnVfwC 以下をテスト
819 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 19:42:20.95 ] ' 3.4' >>818
820 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 20:23:03.37 ] >>808 >>818 のバグ修正 codepad.org/Yygx9FfA 以下のパターンをテスト 1 -1 -100 +10 1.e .1 1.0 1.-10 -1.F1 -1.e1 -1.e+1 -1.e.1 -10E10 -1.e2 1.0. - + . 1.0 b 3.4 <= 行頭、行末が空白
821 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 20:25:43.42 ] >>820 ついでにこれもテスト。 3.4 3.4
822 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 22:48:15.50 ] >>820 整数.整数f+整数 という記法は無かったので、 int isexp(int c) { return c == 'E' || c == 'e'; } に修正してくれ。コメントも合わせて要修正。
823 名前: ◆6W4srb4nmo mailto:sage [2011/05/15(日) 23:19:05.41 ] 浮動小数点 スペース 浮動小数点 は2個?それともエラー? >>808
824 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 23:30:33.35 ] エラーだと思うけどなぁ
825 名前:デフォルトの名無しさん mailto:sage [2011/05/15(日) 23:30:58.48 ] もしくは、1つ目のみ処理対象
826 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 00:32:58.27 ] なんか久々にまともにこのスレで議論してるとこ見た気がする
827 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 06:30:38.81 ] 以下のsscanfの仕様と同じように作ればいいんじゃないかな? if( sscanf(buf, "%lf%s", &value, s) == 1 ) printf("%s + 1 = %f\n", buf, value + 1.0);
828 名前: ◆6W4srb4nmo mailto:sage [2011/05/16(月) 11:00:15.92 ] >>808 #pragma warning (disable:4996) // 処理:2つ以上の数は1つ目だけの処理 // 制限:scanf/printf だけを使う // 目的:復興のための再開発 #include <stdio.h> int main(void){ double data; if(scanf("%lf", &data) == 1) printf("%f\n", ++data ); else printf("error\n"); }
829 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 11:42:39.62 ] >>828 それだと小数点も指数も無い整数が通っちゃう気がする
830 名前: ◆6W4srb4nmo mailto:sage [2011/05/16(月) 11:50:33.27 ] ちなみに、もりたぽ有償くんのは、最初そのイメージだったけど、通るように直してた。 3e4とか。
831 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:09:47.86 ] QZさんを糞呼ばわりしている人はQZさん以上のものが 書けたのかな?
832 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:15:05.98 ] 本人擁護乙
833 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:33:37.31 ] 本人擁護も糞呼ばわりもわりとどうでもいい。依頼に淡々と回答を書けばいい。
834 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 12:52:17.15 ] なんか必死でスレ埋めてたな 多分こっちにも被害くるぜ
835 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:16:52.90 ] 新スレ立てるだろうし。わきまえて使えるかどうかで、それぞれの評価が決まるよ
836 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:33:53.10 ] ◆QZaw55cn4cまだいたのかw
837 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:41:21.16 ] ◆QZaw55cn4cを非難しているのは一人か二人だろうと本人が書いてたなw 幸せ回路全開だな んなわけねーだろ
838 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:48:30.22 ] >>834 そうだね そうならないためにも◆QZaw55cn4cには消えてほしいね
839 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:53:16.69 ] QZさん人気者w
840 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 13:59:17.07 ] なんで最近またトリ付けてるの? 我慢できなくなっちゃった?
841 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:00:46.70 ] >>840 無能の癖に自己顕示欲とプライドだけは無用に高いからなあw
842 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:14:43.73 ] 宿題スレ、二ついるようだね。お互い邪魔しないようにしてね
843 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:23:01.38 ] なんでID強制表示に賛成してくんないの?
844 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:34:14.23 ] >>843 過疎版になって事実上板が死ぬから
845 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:47:46.36 ] そんなに嫌なら別スレでやれば?
846 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:52:59.19 ] ◆QZaw55cn4cって「わたしの10倍速いコードなど、ありえないだろう…(キリッ」って偉そうにしてたら、 あっさり100倍速いコード書かれて涙目でフェードアウトした人のこと?
847 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 14:56:05.85 ] >>844 過疎りはしないと思うよ。単発が増えまくるだろうけど
848 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 15:56:41.13 ] >>847 いや減る ID制になった他の板を見てみろよ 全部減ってる ID表示は投稿量を減らす効果がありますと書いてあるし tiyu.to/permalink.cgi?file=1ch_gen
849 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:05:32.60 ] ぶっちゃけ過疎って困る人がいるか?
850 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:10:06.66 ] 面白半分の煽りが減るから、ユーザーには良いことだね
851 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:32:21.15 ] 書き込みが減るのか。それは良い
852 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 16:52:58.09 ] 煽り専門でム板にいる俺は困るな
853 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 17:12:21.09 ] たまにわく偽物とか居なくなるしね
854 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 17:46:55.69 ] ID導入に賛成してる奴は一人か二人が自作自演してるだけだろ 嘘だと思うならアンケ取ってみな vote1.fc2.com/poll?mode=browse&uid=10647472&no=1 アンケ板作って見たから様子を見てみるか
855 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:05:52.00 ] 通算で始めての投稿のIPにはIDを出さず,2回目以降は 都度異なるID(IPと時刻から決定される3桁英数字ハッシュコード) +積算投稿回数(10回未満:1 100回未満:2 1000回未満:3 ...) がいいと思います 荒らしと認定されたものが多いIPは赤で表示してもらうとか
856 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:08:29.88 ] >>855 ここの投票所はそれが使えないんですよ 何かいい投票所はないですか? ちなみにコメント欄入力必須にしときましたので、 あまりいい加減なコメントばかりならこの投票所を消します ちゃんと理由を記入してください
857 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:14:58.28 ] 他所でやれ、ゴミども
858 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:22:39.85 ] でもこの投票所はつなぎ直してリモートホスト変えてクッキーも消せば自作自演し放題じゃん やっぱり消すわこれ
859 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:26:00.67 ] >>858 それはIDにも言える事で・・・
860 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:26:43.39 ] >>856 投票所じゃなくてスレにそういうIDがでればいいのにって話じゃね?
861 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 18:27:45.95 ] すぐ取り消すあたりQと似てるな
862 名前:808 mailto:sage [2011/05/16(月) 20:18:24.88 ] >>812 ,813,816,818,820 友達が作ったプログラムを走らせてみると こんな感じでした。 符号を入力してください(空入力で+とします):. 符号を入力してください(空入力で+とします):+ 小数点以下0桁目を入力してください:3 3.000000000000000000 小数点以下1桁目を入力してください(空入力で終了):a 小数点以下1桁目を入力してください(空入力で終了):12 小数点以下1桁目を入力してください(空入力で終了):1 3.100000000000000089 小数点以下2桁目を入力してください(空入力で終了):4 3.140000000000000124 小数点以下3桁目を入力してください(空入力で終了): exponent表現を使いますか<Y/N>?a exponent表現を使いますか<Y/N>?y 符号を入力してください(空入力で+とします):- exponent先頭1桁目を入力してください:1 0.314000000000000057 exponent先頭2桁目を入力してください(空入力で終了): 1.3140000000000001+1.0 でも、多分皆さんが作ってくださったコードが求めるものだと 思います。感謝致します。
863 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 20:29:31.84 ] 小数点記法って正規表現で表せるのか? 表せるのだったらNP完全だが、表せないんだったら >>862 みたいに自分で選ばせるしかないな
864 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 20:46:50.65 ] >>863 Cの規格書ではBNFを使った文法を与えられているが、 たぶん正規表現でも書けると思う
865 名前:デフォルトの名無しさん [2011/05/16(月) 20:59:52.49 ] 実はこの課題は 浮動小数点表現を題材に俺なんちゃって正規表現を実装して パターンマッチングせよって課題ってことか
866 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 21:04:10.86 ] >>864 ならexponent表現を使いますかって選択肢は不要なはずだね
867 名前:デフォルトの名無しさん mailto:sage [2011/05/16(月) 21:23:17.95 ] 問題文の解釈で理系か文系かが分かれるなw ガチガチの(ちょっと叩けば粉々に崩れる)プログラマ脳か、 頓知しか出来ない俺なんちゃって脳か
868 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:34:09.84 ] [1] プログラミング言語U [2] 画像を拡大せよ(128×128→256×256)、なお拡大方法は自由とする [3] windows/Visual C++ 2008 Express edition/C++ [4] 2011/05/18 [5] きれいに拡大できる線形補間法で拡大しようとしていますがなかなか上手くいきません。 なお、複雑なwindowsアプリケーションでなく簡単なコンソールアプリケーションで作成したいです。 よろしくお願いします。
869 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:40:50.56 ] GetPixel, SetPixelでfor文ぐるぐるで終わりだと思うが
870 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:42:46.12 ] >>868 画像形式は? あとライブラリの使用はどの程度可能だ?VC2008についてる物なら何でも使っていいか (もちろん画像処理そのものは別として)
871 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 00:45:24.81 ] JPEG
872 名前:868 mailto:sage [2011/05/17(火) 01:00:43.17 ] >>869 GetPixel等を用いずにやってみました。 codepad.org/vduTwrli めちゃくちゃだと思いますが、このような感じで作成していきたいと思います。 >>870 bmpです。 ライブラリについて特に指定はありませんでした。
873 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:04:13.12 ] 問題を分割してみては (1)画素配列 int [128][128]をint [256][256]に滑らかに補完して返す関数 int *hokan(int *src) の作成 (2)指定されたファイルを探して画像ファイルかどうかを検出してint[128][128]配列に して返す関数の作成 int **resdFile(char *); (3)hokan,readFileを使ってコンソールからファイル名を読み取って256x256配列に 直してコンソールで指定されたファイルに書き込むint main(void)の作成 てな具合に それぞれ別の人が担当すりゃ空気良くならね?
874 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:04:52.99 ] >>872 bmp のヘッダとかフォーマットとか全く知らないのか? その辺りがむちゃくちゃ
875 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:27:02.09 ] >>873 聞かなきゃなんともならん部分聞いてるだけじゃねーかwwww 分割してなにが解決するんだよ
876 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 01:34:18.66 ] >>875 失礼。このスレにも流れと空気があってその関係の話ですた。
877 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2011/05/17(火) 07:12:58.70 ] GetPixel, SetPixelを使わないならそれに相当する関数を自分で作ることになるだけだが とりあえずfopenで直接バイナリを見てやるならBMPのフォーマットを調べることからやらないと
878 名前:デフォルトの名無しさん [2011/05/17(火) 13:48:34.02 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): キーボードから入力した2つの文字列を連結する関数 void addstr(char str1[], char str2[], char ans[])を定義して、 この動作を確認するプログラムkadai5-1.cを作りなさい。 ただし、addstr()はstr1とstr2を連結したものをansに代入して終了するもの とする。また、2つの文字列は次のように入力されるものとする。 scanf("%s", str1); scanf("%s", str2); 答えは以下で出力されるものとする。 printf("answer = %s\n", answer); [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)
879 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 14:29:36.56 ] #include <stdio.h> void addstr(char str1[], char str2[], char ans[]) { while(*str1) *ans++ = *str1++; while(*ans++ = *str2++); } int main(void) { char str1[128], str2[125], answer[256]; scanf("%s", str1); scanf("%s", str2); addstr(str1, str2, answer); printf("answer = %s\n", answer); return 0; }
880 名前:デフォルトの名無しさん [2011/05/17(火) 15:24:21.34 ] もう1問おねがいします。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): キーボードから入力した文字列を逆向きの文字列に変換する関数 void reverse(char str[], char answer[])を作り、その動作を確認する プログラムkadai5-2.cを作りなさい。 但し対象となる文字列はstr[]に。 答えはanswer []に代入されて返信されるものとする。 scanf("%s", str); 答えは以下で出力されるものとする。 printf("answer = %s\n", answer); [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2011年5月19日18:00まで] または [無期限] のいずれか)
881 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 15:40:54.31 ] >>880 ttp://codepad.org/PcMDvWwY
882 名前:デフォルトの名無しさん [2011/05/17(火) 16:15:11.50 ] [1]授業単元:プログラミング [2]問題文 二次元配列に保存された10組の計測データ x 23 34 45 21 34 56 68 78 89 45 y 22 28 55 17 42 56 60 87 91 39 に対して最小二乗法により直線近似した場合 の傾きと定数項を求めるプログラミングを作成しなさい。 ※二つの変数の相関係数を求めて出力しなさい。
883 名前:882の続きです。 [2011/05/17(火) 16:17:13.47 ] [3]環境 [3,1] OS:恐らくWindows7 [3,2] コンパイラ名とバージョン:すいません、わかりません。 [3,3] 言語:C [4]期限:2011年5月18日10時00分まで コマンドプロンプトと秀丸を使っています。 よろしくお願いします。
884 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 16:30:32.40 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ttp://www.dotup.org/uploda/www.dotup.org1645289.txt (上記URL先)のプログラムを機能別に分けたプログラムを作成しなさい。 また、どの点に着目して改良したかを述べなさい。 [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: Visual C++ 2008 Express edition [3.3] 言語: C++ [4] 期限: 2011年5月18日(水)22:00 [5] その他の制限: 配列の章までの範囲でお願いします。 何が何と同時に実行されているのかを明確にして頂きたいのです。 また、部分ごとにどういうプログラムを実行しているか(人数の入力など)分けて頂けると嬉しいです。
885 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 17:17:17.59 ] >>868 とりあえず暫定版 ttp://codepad.org/gvIqBgDD ・圧縮レベル0(BI_RGB)のみ対応 ・画像データは1次元配列保持になっちゃった ・コード汚い ・画像サイズは128x128固定じゃない 試した画像 ttp://www1.axfc.net/uploader/Sc/so/235061 ・test1bit.bmp ← エラー出る ・test4bit.bmp ← エラー出る ・test8bit.bmp ・test16bit.bmp ・test24bit.bmp ・test32bit.bmp
886 名前:885 mailto:sage [2011/05/17(火) 17:22:55.84 ] ちなみに参考にしたサイトは下記 ttp://www.ruche-home.net/ ttp://msdn.microsoft.com/en-us/library/dd183376(VS.85).aspx
887 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 17:56:31.42 ] >>882 >>883 codepad.org/VKAy4eAf このプログラムは直線近似だけでなく多項式近似も出来るようになっている 直線近似だけなら実はガウスジョルダン消去法は不要でたすき掛け演算で十分だが 分かりにくいのでこのようにしといた
888 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:05:48.63 ] >>880 #include <stdio.h> #include <string.h> #define MAX_LENGTH 128 void reverse( char str[] , char answer[] ) { int index ; char *pBuff ; pBuff = str + strlen(str) -1 ; for( index = 0 ; index < strlen(str) ; index++ ) { answer[index] = *pBuff ; pBuff-- ; } } int main(int argc , char** argv ) { char str[MAX_LENGTH] = {'\0'} ; char answer[MAX_LENGTH] = {'\0'} ; printf("input string:") ; scanf("%s" , str ) ; reverse( str , answer ) ; printf("answer = %s\n" , answer ) ; return 0 ; }
889 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:11:49.67 ] あたま悪いな
890 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:19:09.06 ] >>887 ガウスジョルダン消去法は最小二乗法なのか?
891 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:33:41.51 ] >>890 当然違う。
892 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:40:20.50 ] >>890 曲線近似する時は連立一次方程式を解かなければならないだろ いまはそれがxで終わっているからこんなおおげさな事はしなくていいのだが つるかめ算をするとかえってプログラムが読みにくくなる
893 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 18:49:47.36 ] クラメルの公式を使えばガウスジョルダン消去法は必要ない 元のプログラムはそうなっている
894 名前:882,883です。 [2011/05/17(火) 20:00:25.71 ] >>882 >>883 です。 ホントにありがとうごさいます。 申し訳ないんですが、もう少し短くはなりませんか? 一応、学校で配られた二次元配列のプログラムを載せます。
895 名前:894の続きです。 [2011/05/17(火) 20:08:10.64 ] 問題がわかりませんが、 #include<stdio.h> #include < stdlib.h> int main(void) { int a[2][2], i, j ; a[0][0]=1 ; a[0][1]=2 ; a[1][0]=3 ; a[1][1]=4 ; for(i=0; i<2; i++){ for(j=0; j<2; j++;){ printf(" a[%d][%d]=%d", i, j, a[i][j]); } printf("¥n"); } return(0); }
896 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 20:42:19.72 ] >>895 回帰分析を回帰直線専用に簡略化したけどこれでも長いかな? これ以上短くするのは難しいかも・・・ codepadが重いのでideoneに貼らせてもらいました ideone.com/pe3hT
897 名前:895の続きです。 [2011/05/17(火) 21:11:53.66 ] こんな感じです。 また別の例に double型のデータを格納し、配列名をa、大きさを3×5とした場合 →double a[3][5] と書いてあります。ド素人で全然わかりませんが、 よろしくお願いいたします。
898 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 21:18:10.73 ] わけがわからないよ
899 名前:デフォルトの名無しさん mailto:sage [2011/05/17(火) 21:27:54.18 ] >>895 >>897 課題と全然関係ないじゃん