- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:35:36 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/
- 862 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:34:07 ]
- >>858
wstring & wcoutを使う。 >>859 #define hoge CHoge::hoge
- 863 名前:デフォルトの名無しさん [2009/06/10(水) 14:51:54 ]
- +とか+=とか、そういった四則演算関連の演算子オーバーロードを作成したいのですが、
ネットで見ると、戻り値が参照だったり実体だったりして、演算子によって違うみたいです。 どういう考え方で参照と実体の使い分けをしているのでしょうか?
- 864 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:58:39 ]
- 関数を抜けても壊れない参照を返せるなら基本参照返し。
一時オブジェクトを返さざるをえないなら泣く泣く実体返し。
- 865 名前:デフォルトの名無しさん [2009/06/10(水) 15:49:30 ]
- float型の変数がゼロかどうか(誤差も含めて)判断するときに、
1e-4fみたいな数字で比較を行っているコードを見たんですが、 こういう数字の記述の仕方(意味)を説明してるウェブページをどこか知りませんか?
- 866 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 15:53:30 ]
- 科学表記とかでぐぐる
- 867 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:32:36 ]
- 初歩的な部分ですが、
while(i--) 処理 は「iの値が評価され、処理を実行するか決定する」→「iがデクリメントされる」 while(--i) 処理 は「iがデクリメントされる」→「iの値が評価される」 ということで、i>0なら前者は処理が i 回、後者は (i - 1)回行われるということでよいのでしょうか。
- 868 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:34:44 ]
- コーディングの最終段階に入っていて、
なるべく見通しが良くなるように関数に処理を分割したりしています。 a,b,cという関数が有って各関数はうまく行けば0を返し失敗すれば1を返します。 aがうまく行けばbを,bがうまくいけばcを行いcがうまく行けば 最後に少量の出力が有ります。 そこで、今の段階はプロトタイプとして int main() { if(a == 0) { if(b == 0 { if(c == 0{ //some print } } } return 0; } となっているのですが、ネストが深くなりすぎているような気がしてなりません。 なにか良い方法が御座いましたらご教授願います。
- 869 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:37:21 ]
- if (!a && !b && !c)
- 870 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:41:00 ]
- !(a||b||c)
- 871 名前:868 mailto:sage [2009/06/10(水) 17:43:50 ]
- 見落としていた点が有りました。
追加で書きますがお許しください。 aが失敗すればプログラム終了 bが失敗すればプログラム終了 cが失敗すればプログラム終了 とそれぞれ行いたく思います。 よろしくおねがいします。
- 872 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:50:39 ]
- それは a が false を返す代わりに exit(1) を呼び出せばいいじゃないか^-^
- 873 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:57:00 ]
- >>872
そうなんですよね、一度そのような事を考えたのですが 言語はC++なのですが、 kmaebashi.com/bbs/bbs12.html というページを見かけてなんとなく怖くなってexit()を使わなくしたのですが、 実際どうなのでしょうか? よろしくおねがいします
- 874 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:09:17 ]
- どっちにしても>>869や>>870でOK。
- 875 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:11:32 ]
- >> 874
ありがとう御座います。 無事きれいになりました!! 感謝感激です。
- 876 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:52:22 ]
- C++にはJavaのObjectクラスに相当するようなものは無いんでしょうか?
Java使い向けに書かれているデザインパターン本を読んでて 脳内翻訳するのに必要になったもので
- 877 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 18:59:05 ]
- 全然別人が話に食いつきます。
>>873が言う >ISO/IEC 14882:1998 3.6.1-4 >exit 関数を呼び出すことは現ブロックを抜けずにプログラムを終了させることであるため、 >自動記憶域期間を持つオブジェクトは破棄されない。 >静的記憶域機関を持つオブジェクトのデストラクタ中から > exit を呼び出すことは、未定義の動作を引き起こす。 これって 巻頭言 2000〜 ttp://park1.wakwak.com/~y-nagano/200001.html ここに書いてあるとおりなんだろうが、 恐ろしいよねぇ。
- 878 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 19:37:24 ]
- もよもと exit はプログラムの異常終了時くらいしか使わんからなー。
- 879 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:17:11 ]
- >>858
自分で作ればいい。 #ifdef UNICODE # define tcin std::wcin # define tcout std::wcout # define tcerr std::wcerr # define tclog std::wclog #else # define tcin std::cin # define tcout std::cout # define tcerr std::cerr # define tclog std::clog #endif あと、mainの頭で、文字コード変換が行われるように指示しておく。 std::locale l(""); // 数値を取り扱うならstd::locale l(std::locale::classic, "", std::locale::ctype);のほうがよいかも。 tcin.imbue(l); tcout.imbue(l); tcerr.imbue(l); tclog.imbue(l);
- 880 名前:デフォルトの名無しさん [2009/06/10(水) 20:57:45 ]
- C++なら例外使えばいいのに
- 881 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:00:13 ]
- >>880
誰もキャッチできない例外をスローするってこと? みんなはそうしてるの?
- 882 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:03:14 ]
- 例外のよい使い方がいまだにわからん
- 883 名前:881 mailto:sage [2009/06/10(水) 21:14:30 ]
- >>882
俺は 関数の戻り値は正常値ならおk、 異常値を返す場合は-1とか0とかそういう値に限り、 不完全なオブジェクトを返すような形は とらないようにしている。 そして不完全なオブジェクトを返さざると得ない時に 例外を使っている。 ・・・でもやっぱり俺もわからない。
- 884 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:15:49 ]
- ttp://pc12.2ch.net/test/read.cgi/tech/1241438694/
ここの>>740が妙な提案をしていたよ。 もっとも実際には出来なさそうって結論になったのだが。
- 885 名前:デフォルトの名無しさん [2009/06/10(水) 22:06:18 ]
- ABCが失敗したら例外発生させて、キャッチして適当に処理して return 0 すればいい。
- 886 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:24:46 ]
- VC++を勉強するのにお勧めの本ありますでしょうか?
初級〜中級くらいをめどに
- 887 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:29:14 ]
- いわゆるぺゾルト本。
Programing Windows 第5版。 定番なので。
- 888 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:32:10 ]
- >>886
VC++だから、MFCかも知れないが 普通にSDK使う程度なら、wisdomとか入門サイトから見るといいよ 俺はいろいろなサイト見て学んだ
- 889 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:33:06 ]
- >>887
www.amazon.co.jp/Programming-Windows-Microsoft-Charles-Petzold/dp/157231995X/ref=sr_1_1?ie=UTF8&qid=1244644307&sr=8-1 これのことでしょうか?すごくとっつきにくそうなんですが
- 890 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:37:56 ]
- 今時MFCはどうかと思うけど、お勧めの本はなさす。
中級以上なら、Effective C++のシリーズお勧め
- 891 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:38:07 ]
- この本は原著じゃなくても翻訳はまともだから大丈夫だよw
プログラミングWindows第5版〈上〉Win32 APIを扱う開発者のための決定版! (Microsoft Programming Series) (単行本) まぁ…とっつきにくい感じはするかなぁ。 まぁ、あくまで定番ってことで。
- 892 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:40:51 ]
- Effective C++はもちろん名著だけど、VCの勉強にはならんじゃろw
- 893 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:16:36 ]
- 質問です
Cでファイルに書き込むときに fwrite(str, 1, strlen(str), fp); fwrite(str, strlen(str), 1, fp); とどちらが一般的ですか?何か違いは出てくるのでしょうか?
- 894 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:24:08 ]
- VC++で、いっぱい書店においてるような本はどうなのですか?
入門〜やや中級手前レベル?の内容くらいかいてるようにはみえたのですが 役に立たないのかな
- 895 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:56:43 ]
- >>894
プログラミング言語を全く知らない人が、いきなりVCに手を出す状況とかなら 決して悪くはないんじゃないかしら?
- 896 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:49:07 ]
- >>893
fwrite(str, 1, strlen(str), fp); に1票。 なんとなく2番めの引数は型のサイズ、3番めの引数はその個数って 思っている。
- 897 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:45:58 ]
- >>893
>fwrite(str, 1, strlen(str), fp); 1バイトをstrlen(str)分書き込む、成功した際の戻り値がstrlen(str) >fwrite(str, strlen(str), 1, fp); strlen(str)バイトを1回書き込む、成功した際の戻り値が1 結果は同じ ただ、意味のあるデータなら後者の方が意味的に良くない?
- 898 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:13:39 ]
- >>895
>プログラミング言語を全く知らない人が、いきなりVCに手を出す状況 そうとうな窮地だな。
- 899 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:24:29 ]
- #include <iostream>
#include <list> int main() { std::list<int> nums1; nums1.push_back(4); nums1.push_back(6); std::cout << nums1[0] << std::endl; std::cout << nums1[1] << std::endl; return 0; } vectorで動いたソースをlistに変更してみたら動かないのでしがなんででしょうか?
- 900 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:52:45 ]
- エラーメッセージ読めよ
- 901 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:56:21 ]
- 「動かない」というのはこの場合、極めて曖昧な比喩表現でしかない。
比喩を使われても困る。
- 902 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 11:17:11 ]
- list<int>::iterator p = nums1.begin();
while( p != nums1.end() ) { cout << *p << endl; p++; } list はランダムアクセス子をもってない
- 903 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 12:24:09 ]
- www.geocities.jp/KY_webid/cpp/library/012.html
なるほど了解した。ありがと
- 904 名前:デフォルトの名無しさん [2009/06/11(木) 15:57:58 ]
- gprofって、対象のプログラムが使うライブラリが全てスタティックリンク
でないといけないのです? そういうのないですよね?
- 905 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:09:13 ]
- try {
m_pInt = new int [N]; } catch { delete [] m_pInt; // <-するべき?それとも放置? }
- 906 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:28:03 ]
- >>905
m_pIntに予め 0 を入れておけばdeleteしても問題ない
- 907 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:22:38 ]
- >>905
そんなことよりboost::scoped_array使え。
- 908 名前:デフォルトの名無しさん [2009/06/12(金) 01:31:58 ]
- ちょっとした質問です。
二分木の高さと深さは違うものですよね。
- 909 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:37:26 ]
- 木の「高さ」とノードの「深さ」のこと?
- 910 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:46:07 ]
- 下から見れば高さ、上から見れば深さ、相対的な違いか?
- 911 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 01:57:06 ]
- 視点が違うだけで数としては同じになる
- 912 名前:デフォルトの名無しさん [2009/06/12(金) 02:04:36 ]
- たとえば、a(左部分, 右部分)とあらわす。
aはroot a(b, NULL) b(c, d) c(NULL, NULL) d(NULL, NULL) c,dはleaf という風になっているとします。伝わるかわからないですが・・・ このとき、a,b,c,dそれぞれの高さは2,1,0,0で合ってますか?
- 913 名前:853 mailto:sage [2009/06/12(金) 02:07:21 ]
- Fedora11落としてきたばかりなのに。
最近は自前でカーネルコンパイルするの減ったな。
- 914 名前:デフォルトの名無しさん [2009/06/12(金) 02:50:17 ]
- すいません。だれか僕が作ったプログラミングのデバッグしてくれませんか?お願いします。
初歩中の初歩です。
- 915 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 02:56:30 ]
- お断りします
- 916 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 03:04:38 ]
- とりあえずうp汁
- 917 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 04:12:14 ]
- 住所・氏名・連絡先も忘れずに。
- 918 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 07:55:46 ]
- codepad
ttp://codepad.org/ ってところに貼れ。 貼ってどうすれば良いかは分かると思う。
- 919 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:53:27 ]
- コンストラクタの引き数の規約を与えるための仮想基底クラスを作ることはできますか?
- 920 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:00:43 ]
- codepad.org/WjzXeUiM
エラーがでるのですが エラーを日本語にしてもらえないでしょうか?
- 921 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:02:45 ]
- >>920
翻訳サイトつかってみたら?
- 922 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:06:51 ]
- codepad.org/qHGkIKzL
う〜ん
- 923 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:09:35 ]
- >>920
どこにエラーが? 警告なら出ているようだけど。
- 924 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:11:42 ]
- 三行目を
void print( const char *c ) にすればいいよ。
- 925 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:13:25 ]
- >>920
ほい、エラーを翻訳してやったよ。 -- 誤りとして扱われる警告 --
- 926 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:13:06 ]
- R255 G0 B0の赤色の1ピクセルのbitmapのデータ読み込みで
54byte飛ばして色データを読み込んで10進数で表示させたのですが 0 0 -1 0 と表示されます。 0 0 255 0と表示されないのはなぜでしょうか?
- 927 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:22:52 ]
- >>926
charに読み込んでるとか。
- 928 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:32:45 ]
- >>927
charではダメなんですか? 1バイトだからいいかと思ったのですが char unchi[10000]; fread( unchi, 1, 5000, fp ); とやっています
- 929 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:36:07 ]
- あ、わかりました
charって-127~128ですよね unsignedにすればいいですか?
- 930 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:37:24 ]
- できました。
お騒がせしてすいません ありがとうございました。
- 931 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 15:40:38 ]
- >>929
ビットマップに限った話ではないが typedef unsigned char uint8; とでもしておくと楽。 必要に応じてuint16,uint32,uint64もtypedefしといてもいいかと。
- 932 名前:デフォルトの名無しさん [2009/06/12(金) 15:51:13 ]
- char 配列に日本語が入っているとします。
改行コードが\nで統一されている場合に wchar_tにポインタでキャストしたときに文字化けしない方法はありますか?
- 933 名前:932 [2009/06/12(金) 16:05:38 ]
- キャストしたら\r\nでも文字が正しくなく・・・
windowsのwchar_tの文字コードは UTF16とか効いた気がします・・・
- 934 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:08:25 ]
- mbtowc(wchar_t *wc_str, const char *mb_str, size_t mb_scan_size);
- 935 名前:932 [2009/06/12(金) 16:10:43 ]
- ここに書いてありました。
EUCやSJISをwchar_t* にキャストして操作しても問題は出ませんか? 表示できないだけで。 ワイド文字 - Wikipedia wchar_tの内部表現もUnicodeである必要はない。 本来はCode Set Independet(符号化集合に独立)なのである。 しかし、Windowsでは16ビット (UTF-16)、 LinuxやMac OS Xでは32ビット (UTF-32)である。
- 936 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:30:16 ]
- >>935
文字列の終わりの0のサイズが違うんで、キャストしただけじゃ使えないと思う。
- 937 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:31:42 ]
- 質問です
int *Array; int *pNum; int Num = 10; Array = new int[1]; Array[0] = Num; *pNum = Array[0]; デバッグすると、このコードの最後の部分でエラーが起きます どうすればうまくいきますか?
- 938 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:34:19 ]
- >>937
pNumもメモリ確保しないと。
- 939 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:38:29 ]
- >>938
ああ、なるほど ありがとうございました
- 940 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:04:46 ]
- ユニコードとかって3バイト以上の文字もありますよね?
wchar_tは2バイトなのにどうやってこれを格納してるんですか?
- 941 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:25:10 ]
- >>940
>wchar_tは2バイト そんなこと決まってないっしょ? 言語使用上定められているのは sizeof(char)<=sizeof(wchar_t) だけじゃない?
- 942 名前:デフォルトの名無しさん [2009/06/12(金) 19:39:08 ]
- つ UTF16
- 943 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 20:44:25 ]
- 少なくともうちでは2バイトじゃないから大丈夫だなあ
- 944 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 20:55:20 ]
- cygwinはwchar_tが2バイトっていうイカれた仕様
なのでUTF-8が上手く使えない…
- 945 名前:デフォルトの名無しさん [2009/06/12(金) 21:04:42 ]
- windowsも2バイト
- 946 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:13:12 ]
- そうなのか、失敬した
- 947 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:55:53 ]
- UTF-8はマルチバイトだからchar*で扱うもの
- 948 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:09:33 ]
- 16bit整数二つ→32bit整数ひとつと変換して、配列の添え字に使いたいのですが
全部のインデックスからアクセス可能にしようとすると配列がでかくなりすぎてこまります なにかいい方法はないでしょうか?
- 949 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:12:12 ]
- inline static void foo();
と static inline void foo(); とではどちらが正しいですか? foo()はあるクラスの静的メンバ関数です。
- 950 名前:949 mailto:sage [2009/06/12(金) 22:16:02 ]
- あれ?
MyClassの宣言中では MyClass { //etc static void foo(); //etc }; と書き、 そのヘッダの中(ただし宣言の外で)実装を書いて inline void foo() { //実装 }; と書くのがただしいですか?
- 951 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:19:34 ]
- どっちでもいい。
どっちかが正しかったら、憶えなくちゃいけないから大変だ。
- 952 名前:949 mailto:sage [2009/06/12(金) 22:22:17 ]
- >>951
ありがとうございます。
- 953 名前:デフォルトの名無しさん [2009/06/12(金) 22:23:49 ]
- >>948
つ map mapなら、int x=-1; でも、a[x]がエラーにならない。 google製のmapもある
- 954 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:52:12 ]
- >>940
Windows環境ではsizeof(wchar_t) == 2で、UTF-16を格納している。 昔はサロゲートペアはサポートしていないと聞いたような気がするが今はどうだか知らん。 多くの*NIX系環境ではsizeof(wchar_t) == 4で、UTF-32(UCS-4)を格納している。
- 955 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:08:32 ]
- int型の配列に整数だけを代入したいときにはどうすればよいのでしょうか?
isdigitが数字かどうかの判定が出来るというので、使ってみたら、エラーが出ます。 これがソースの一部です。 for(i = 0; i < 10; i++){ while(isdigit(a[i]) == 0){ printf("%d個目の整数です。\n",i+1); fgets(buf, 10, stdin); sscanf_s(buf, "%d", a[i]); } } whileの中身をどうにかすればうまくいくと思うんですが。
- 956 名前:デフォルトの名無しさん [2009/06/13(土) 02:14:55 ]
- いろいろとだめだろ。
&がついてないし、入力後に確認すればいいものをループの上で判定するし たとえば変数xに数字が入っていたら代入すればいいし。
- 957 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:15:07 ]
- ソースの一部を貼るのはいいが、特に初心者ならちゃんと変数宣言とかも書いてくれ。
あとエラーメッセージもちゃんと書いてくれよ。 エスパー技能を発揮できる人間はそうそういないんだから。
- 958 名前:デフォルトの名無しさん [2009/06/13(土) 02:23:10 ]
- たとえば。
int inputsu(){ int x; do{ scanf("%d", &x); } while(x<0 || x>1000); return x; } int main(){ int i; int a[10]; for(i = 0; i < 10; i++){ printf("%d個目の整数です。\n", i+1); a[i]=inputsu(); } }
- 959 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:23:43 ]
- >>955
isdigitは、あるcharの1字が'0'から'9'までの数字に分類される文字かどうかを判定するだけ。 数値であるかどうかの判定とは違う。 a[i]に値が入るのはsscanf_sの時点。 そのsscanf_sは代入できたデータの数を戻り値にする。見るべきはこれ。 for (i = 0; i < 10; i++) { do { printf("%d個目の整数です。\n", i + 1); fgets(buf, 10, stdin); } while (sscanf_s(buf, "%d", &a[i]) != 1); }
- 960 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:36:13 ]
- >>956
入力後に確認ですか、ありがとうございます。 >>957 すいません、次から気をつけます。 visual C++ 2008EEでやっているのですが、ビルド時にエラーは出ないんです。 コンパイルしたときに Debug Assertion Failed! Program:...\Visual Studio 2008\Projects\~ Line: 56 Expression: (unsigned)(c + 1) <= 256 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. っていうメッセージが出ます。
- 961 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:48:22 ]
- >>958
>>959 言われたとおりにやってみたら、 期待したとおりの出力結果が得られました。 ありがとうございます。
- 962 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:23:58 ]
- Webを参考に全ての順列を列挙するプログラムを作ったんですが、
これをnPkが列挙できるように改良するにはどうすれば良いですか 引数を一つ増やして(int k) 終了条件をt.size()==kとしてみましたが 予想よりも多く結果が出力されてしまってうまくいきません void perm(int p,vector<int>& v,vector<int> t){ if(t.size()==v.size()){ copy(t.begin(),t.end(),ostream_iterator<int>(cout," "));cout<<endl; } for(int j=p;j<v.size();++j){ t.push_back(v[j]); perm(p+1,v,t); t.pop_back(); perm(p+1,v,t); } } int main(){ vector<int> v(5),t; for(int i=0;i<5;++i){v[i]=i;} perm(0,v,t); }
|

|