[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/15 20:47 / Filesize : 260 KB / Number-of Response : 900
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題片付けます 147代目



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
課題と全然関係ないじゃん








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef