【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/02/14(土) 09:15:14.82ID:FDUkjNpdただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417179292/
0153デフォルトの名無しさん
2015/02/28(土) 11:03:43.60ID:yyMmVQQk0154デフォルトの名無しさん
2015/02/28(土) 12:00:46.80ID:j5d61nKt3つ数字入力させて、合計を表示してるのは分かるけど、これくらいなら、電卓とか、エクセルでやったはうが早くない?
0155デフォルトの名無しさん
2015/02/28(土) 12:06:03.03ID:8paVhiekライブラリによる。GUIとか
オブジェクト指向かどうか
STLをつかうか
0156デフォルトの名無しさん
2015/02/28(土) 12:29:41.22ID:C0E19LHHやる必要があれば、それも可能なのがC++の利点
今でこそC++らしい書き方のほうが多くなったけれども
「better C」という、C言語風だけどC++の良いとこ取りもする、というスタイルは
昔はけっこうよく行われてたよ
0157デフォルトの名無しさん
2015/02/28(土) 13:17:05.10ID:jpnAzhvw0158デフォルトの名無しさん
2015/02/28(土) 13:22:59.63ID:pzuzIoSR0159デフォルトの名無しさん
2015/02/28(土) 13:33:07.23ID:3oOu8rEl0160デフォルトの名無しさん
2015/02/28(土) 13:37:26.92ID:0w0p4VdY0161デフォルトの名無しさん
2015/02/28(土) 14:13:05.54ID:nS9zO5v80162デフォルトの名無しさん
2015/02/28(土) 14:38:37.66ID:9NkDqAQU0163デフォルトの名無しさん
2015/02/28(土) 15:04:24.71ID:RGSE2jA1使ったグローバル変数があっちこっちに
合計十数個出てきて、収集がつかなくしまいました。
グローバル変数を上手い具合に管理する方法有りますか?
グローバル変数を使うなという意見は勘弁して下さい。私の能力では使わずにはプログラム組めませんので。
よろしく。
0164デフォルトの名無しさん
2015/02/28(土) 15:07:38.09ID:0lfA+oAx0165デフォルトの名無しさん
2015/02/28(土) 15:08:19.96ID:VJzk6ZT60166デフォルトの名無しさん
2015/02/28(土) 15:20:13.40ID:RGSE2jA1クラスも使っているんですが
幾つかのクラスの中ではstatic変数も
使っていて、それも混乱の一因です。
クラスの中でstatic変数使うのは駄目でしょうか。
0167デフォルトの名無しさん
2015/02/28(土) 15:42:23.94ID:rkeHMBrB0168デフォルトの名無しさん
2015/02/28(土) 15:49:56.35ID:RGSE2jA1publicにしています。
0169デフォルトの名無しさん
2015/02/28(土) 15:54:02.54ID:4l+NWV3Bその場しのぎで追加するようなグローバル変数は実際は引数渡しで事足りる場合ばっかりだろうからそこを作り直せば数が減って収集がつくと思うよ。
0170デフォルトの名無しさん
2015/02/28(土) 16:25:53.70ID:jpnAzhvwとりあえずグローバル構造体かクラスにまとめて全量洗い出して取捨選択
0171片山博文MZ ◆T6xkBnTXz7B0
2015/02/28(土) 21:57:16.55ID:OFsucKZW#include <pshpack1.h>
typedef struct {
int a : 8;
int b;
} X;
#include <poppack.h>
このとき、sizeof(X)==8になるが、
メンバーaをint a : 9;にするとsizeof(X)==6になる。
何でやねん! ビットを増やしたらサイズが減るのか!
0172デフォルトの名無しさん
2015/02/28(土) 22:00:53.02ID:kDCn/ge4いいきっかけだから他のプログラムでも使用できそうな機能は機能毎にしちゃう
0173デフォルトの名無しさん
2015/02/28(土) 22:18:47.25ID:yyMmVQQk分からなくなってきた。
そろそろクラスとかも覚えて使ってみたいし新たに1からつくるか・・
0174片山博文MZ ◆T6xkBnTXz7B0
2015/02/28(土) 22:30:33.27ID:OFsucKZWこれを馬鹿にもわかるように論理的に説明して下さい。
0175デフォルトの名無しさん
2015/02/28(土) 22:36:30.21ID:TqhvQe1k>>1も読めないバカは去れ
0176片山博文MZ ◆T6xkBnTXz7B0
2015/02/28(土) 22:38:52.76ID:OFsucKZW0177デフォルトの名無しさん
2015/02/28(土) 22:47:07.04ID:kDCn/ge4VC++ 2010 EEで両方8になったんですが
0178片山博文MZ ◆T6xkBnTXz7B0
2015/02/28(土) 23:34:27.82ID:OFsucKZWありがとう。
VC++とGCCのABIの違いのため-mms-bitfieldsつけないとダメだと。
ビットフィールドのせいで一日つぶれた。。。
0179デフォルトの名無しさん
2015/03/01(日) 13:55:28.56ID:YTVpAllVpublic privert potected これわかりやすく
解説したサイト知りませんか?
0180デフォルトの名無しさん
2015/03/01(日) 14:04:57.89ID:SZqmQTGeprivate そのクラスだけアクセスできる
protected そのクラスと、派生クラスだけアクセスできる
0181デフォルトの名無しさん
2015/03/01(日) 14:25:44.99ID:YTVpAllV0182デフォルトの名無しさん
2015/03/01(日) 14:33:42.98ID:VYwW9Vyn期待した解答と違うとおもったなら自分の質問にもっと具体的な補足をしろ
できねーなら死ね
0183デフォルトの名無しさん
2015/03/01(日) 14:34:32.89ID:uDqKnlJ3protected 継承 元publicをprotectedへ 元protectedをprivateへ
public継承 元の状態を維持
だったっけか?
0184デフォルトの名無しさん
2015/03/01(日) 14:45:45.97ID:5nggEOp/0185デフォルトの名無しさん
2015/03/01(日) 15:05:46.90ID:9nAO1Mr4そんなモン誰も知らねぇよ
0186デフォルトの名無しさん
2015/03/01(日) 15:11:24.18ID:NOqABy0N0187デフォルトの名無しさん
2015/03/01(日) 18:08:53.80ID:xHJpp+wqpublic そのまま
protected publicだけprotectedへ
private 全部private
0188デフォルトの名無しさん
2015/03/01(日) 23:34:19.53ID:VA+mmmdG0189デフォルトの名無しさん
2015/03/01(日) 23:47:53.89ID:NUTnmFf9メンバ変数は基本的に全てprivateにしてsetter getterを関数に書いて
派生クラスから基底クラスのメンバ変数を呼ぶときは全てsetter getterを通じて扱うのが本来のオブジェクト指向な気がするけどどうなんだろう
0190デフォルトの名無しさん
2015/03/02(月) 00:05:32.07ID:XG6Dbdai気にしないで、ガンガンPUBLIC使うべし。
いちいち代入のために関数作ってたら、生産性わろし
関数ひとつ追加するコストは、ドキュメントやテスト、IFの構成などの影響を考えると高くつく
学者のべき論と実戦は異なるのだよ
0191デフォルトの名無しさん
2015/03/02(月) 00:09:11.15ID:hseo5gVdお前アホか
本来のオブジェクト指向()とやらでは実現できない「実装の再利用」のために
friend/private継承/protected継承があるんだよ。
オブジェクト指向の考えに形式的に当てはめようとして
getter/setterにする方がクレイジー
0192デフォルトの名無しさん
2015/03/02(月) 00:22:49.89ID:3n4sVnGfそうなのか・・・
本とか一部サイトではsetter getterを通した方が値のチェックを行えて安全とかあるから混乱してたんよ
0193デフォルトの名無しさん
2015/03/02(月) 00:29:21.36ID:fPhyyxiK内部の変数へのアクセスを許すのは
オブジェクト指向の考えに反します
getterを作れば良いと言うものではありません
0194デフォルトの名無しさん
2015/03/02(月) 00:51:01.27ID:/crQ+lASそれにあわせてgetter作ってたらオブジェクト指向じゃない
0195デフォルトの名無しさん
2015/03/02(月) 00:57:41.76ID:g6u+STTf0196デフォルトの名無しさん
2015/03/02(月) 01:09:06.37ID:XG6Dbdaiそれは、言語仕様の矛盾だよね。
でも現場ではpublicしか使わないから関係ないけどね(制御系とか金融のプロジェクトは知らないけど)
0197デフォルトの名無しさん
2015/03/02(月) 01:12:04.73ID:/eLULHxy0198デフォルトの名無しさん
2015/03/02(月) 03:22:53.77ID:Cc4ZXjAzそこから派生させるのではなくそのクラスのインスタンスを
メンバとして持てば十分でしょう。
その方が良いならそうすべきで、かつそのクラスを
テンプレート引数として汎用化できないかも考慮すべき。
0199デフォルトの名無しさん
2015/03/02(月) 13:58:13.91ID:u4npGgFL普通にクラスを作って楽しく使いましょう。
0200デフォルトの名無しさん
2015/03/03(火) 10:05:19.01ID:k6QUuUZDなかなか貴重で異常なご意見で
0201デフォルトの名無しさん
2015/03/03(火) 22:53:35.90ID:E8cNZHFYなぜ配列ではない関数も同じように関数名で先頭アドレス確保出来るのでしょうか?
関数名に「&」を付けるなら分かるのですが・・・
int i[5]={1,2,3,4,5};
int* pi = i; // OK
int i=1;
int* pi = &i // &が必要
******************* こっから下が分からない *******************
void kansuu(char* str){
std::cout << str << "\n";
}
void (*po[])(char* str)={kansuu}; // なぜ&kansuuでなくてよい?
po[0]("なぜじゃ");
0202デフォルトの名無しさん
2015/03/03(火) 23:02:49.41ID:HsY4gQ31一種の例外だし、それを好まずそう書かない人々もいる
0203デフォルトの名無しさん
2015/03/03(火) 23:41:13.44ID:E8cNZHFY&をつけてもコンパイル通るんですね。例外了解です。
0204デフォルトの名無しさん
2015/03/03(火) 23:48:42.41ID:aTqVdZca&なしは関数オブジェクトと関数が同じ表記法になれる
テンプレートの場合では&をつけるわけにはいかない
そのため付けないのが主流となる
0205デフォルトの名無しさん
2015/03/04(水) 02:08:06.64ID:7qqVQ1bqそもそも配列も関数と同じで、&をつけてもつけなくても同じ扱い。
http://ideone.com/bYtnim
0206デフォルトの名無しさん
2015/03/04(水) 09:35:28.98ID:/apgWJr20207デフォルトの名無しさん
2015/03/04(水) 09:40:16.23ID:HeTEjgTnANSI-C以降の話しね。ポータブルCとかK&Rは駄目(豆)
0208デフォルトの名無しさん
2015/03/04(水) 14:53:14.64ID:Ta/FEbLeここに自分が書いたソースコード張ったらダメ出しみたいなのしてもらえる?
テストの点数とそれに対応する順位をつけて、同じ点数は同じ順位にするってプログラムを組んだんですけど
一応目的の動作はしてくれます
0209デフォルトの名無しさん
2015/03/04(水) 15:06:01.49ID:CTtxiq5X0210デフォルトの名無しさん
2015/03/04(水) 15:20:31.89ID:Ta/FEbLeこれだけのことに変数を使いすぎてる気がするのと
もっとスマートに書ける部分があったらおしえてほしいです
0211デフォルトの名無しさん
2015/03/04(水) 15:50:29.68ID:HeTEjgTnつ qsort
0212デフォルトの名無しさん
2015/03/04(水) 16:57:59.31ID:mnA608p+直してみたよ
http://codepad.org/vCg6eNwh
解説
・変数名はc0など意味の分かりにくいものにせず、pointとかorderとかにしよう(↑では変えてないけど)
・10や9や8といった定数は、配列の要素を後で増減させる時に修正しやすいよう、変数などに定義しよう
その際は、要素数(人数)に合わせて'10'を使うのがいい
基本的に、配列をfor文で辿る時は (変数=0; 変数 < 要素数; ++変数) という形になるのでこのまま憶えよう
本当は配列のサイズからも分かるけど、それはもうちょっと先のレベル
・同じ点数の人が同じ順位になるよう、順位を示す変数は途中では変えず、後でまとめて人数分増やす
そうすれば後半のややこしいループは不要
・main関数の引数と戻り値が間違い
0213デフォルトの名無しさん
2015/03/04(水) 19:46:11.27ID:Ta/FEbLe便利ですね覚えておきます
>>212
ありがとうございます、すごい参考になります
引数と戻り値は勉強しなおしておきます
0214デフォルトの名無しさん
2015/03/05(木) 03:01:06.15ID:o2c8GLXQintよりもlongのが扱える範囲は大きいはずだからおかしいよな・・・?
0215デフォルトの名無しさん
2015/03/05(木) 03:25:16.98ID:+ThMXw+2size_tが_int64にでもなってたんじゃね
0216デフォルトの名無しさん
2015/03/05(木) 03:34:33.64ID:lVmgOndi0217デフォルトの名無しさん
2015/03/05(木) 03:35:29.33ID:o2c8GLXQインテリセンス君はunsigned intだったけどたどっていってみたら__w64なる接頭句が
0218デフォルトの名無しさん
2015/03/05(木) 03:46:27.62ID:lVmgOndiLLP64 っていって、long long とポインタが64bit
そのあおりで size_t と ptrdiff_t (ポインタの差) も64bit
64bit CPU の先駆け Alpha AXP の頃は LP64 といって
long とポインタを 64bit にしてたけど、その時の経験で
long は 32bit のままの方が 64bit 化にあたってのコードの
修正が少なくて済むとわかってLLP64 が主流になった
0219デフォルトの名無しさん
2015/03/05(木) 03:47:28.28ID:9F0iYt50作業用ポインタとqsortを使った方法、こんな方法もあるよとだけ
http://codepad.org/FjFQ2dNL
0220デフォルトの名無しさん
2015/03/05(木) 08:51:27.87ID:OANpNxqpこう言うウソをしれっとつくバカは死んだ方が良い。
win16からの移行を容易にする為にすでにグダグダになっていたwin32
それからの移行を容易にするための選択がLLP64
0221デフォルトの名無しさん
2015/03/05(木) 08:52:56.70ID:+Q5gJwG8同じことを言ってる
0222デフォルトの名無しさん
2015/03/05(木) 09:06:17.01ID:PF6nrNXa0223デフォルトの名無しさん
2015/03/05(木) 09:25:50.71ID:OANpNxqpMS帝国(大分おちめ)の奴隷は引っ込んでいろ。
LLP64なんか採用してるのはwin64だけ。
0224デフォルトの名無しさん
2015/03/05(木) 13:04:15.43ID:HSYDbrXJ64ビットの先駆けとなったDEC Alpha系もLP64だったような
0225デフォルトの名無しさん
2015/03/05(木) 13:22:27.44ID:3j9lgICf> たいていの x86_64 や arm64 のコンパイラは
> LLP64 っていって、
いやいや、そんな珍しいものは唯一windowsだけじゃないの?
0226デフォルトの名無しさん
2015/03/05(木) 16:44:14.07ID:JyN3EgEg//#define AAAA BBBB
#define AAAA CCCC
と記述した後に、任意の場所で、
AAAAがCCCCとしてdefineされているかを判定することはできないでしょうか?
0227デフォルトの名無しさん
2015/03/05(木) 17:17:46.08ID:I89WrdEHreturn true;
}
0228デフォルトの名無しさん
2015/03/05(木) 17:25:22.76ID:0g2YeNLY#if(WINVER >= 0x0500)
#endif
こういうのは見たことがあるが、特定のシンボルに定義されているかどうかを
#if で判定してるのは、見たことがないな(&それが可能なのかは知らないな)
0229デフォルトの名無しさん
2015/03/05(木) 20:57:00.72ID:l9SFIH0J0230デフォルトの名無しさん
2015/03/05(木) 22:21:47.81ID:HeQ72Txgスレチ
0231デフォルトの名無しさん
2015/03/05(木) 22:26:38.06ID:/PZ+wdBr0232デフォルトの名無しさん
2015/03/05(木) 22:37:42.95ID:4qwAFJaB10 OPEN DIR("*.csv") AS #1
20 sizeof(#1)
30 GOTO 10
40 END
0233デフォルトの名無しさん
2015/03/05(木) 23:13:15.75ID:LULabTRsfind . -name "*.csv" | wc -l
0234デフォルトの名無しさん
2015/03/05(木) 23:21:23.33ID:puWRUP/J$ find ./a -name "*.csv" | ruby -rcsv -lne 'p [CSV.read($_).size, $_]'
>>233
xargs
0235デフォルトの名無しさん
2015/03/06(金) 01:14:22.96ID:Sg/+JleUint i = 0;
while ( fgets( ) ){
i++;
}
fclose();
return i ;
0236デフォルトの名無しさん
2015/03/06(金) 03:51:20.50ID:+A6TrZmofind a -name '*.csv' -exec wc -l {} \;
0237デフォルトの名無しさん
2015/03/06(金) 05:54:19.35ID:ffY3VuPRダブルクオートの中に改行が入る場合を考慮しないといけない
0238デフォルトの名無しさん
2015/03/06(金) 07:24:52.70ID:GC5TMZRE0239デフォルトの名無しさん
2015/03/06(金) 07:43:06.27ID:jAQDMMU6C#でTextFieldParserを使うのが一番簡単かな?
0240デフォルトの名無しさん
2015/03/06(金) 08:06:38.46ID:dsDP5DeS今は
find a -name '*.csv' -exec wc -l {} +
って、やるんだよ。
20世紀からきたおじいちゃん。
0241デフォルトの名無しさん
2015/03/06(金) 08:34:58.66ID:zfR7oXUXExcel仕様というか、今はそれでRFCになってるけどな。
0242デフォルトの名無しさん
2015/03/06(金) 09:28:41.05ID:uUtd6mTH(csv) ファイルの行数なのか
そもそも行数とは何か
難しい
0243デフォルトの名無しさん
2015/03/06(金) 09:33:08.83ID:liXUjwAw0244デフォルトの名無しさん
2015/03/06(金) 12:08:08.56ID:DihBiSVk0246デフォルトの名無しさん
2015/03/06(金) 21:02:18.67ID:FTmThQC80247デフォルトの名無しさん
2015/03/06(金) 22:15:46.04ID:CKRqkh4t0249デフォルトの名無しさん
2015/03/06(金) 23:53:29.97ID:2n7TyHez0250デフォルトの名無しさん
2015/03/07(土) 00:35:11.21ID:Ya/TYd9Lint c;
int i=0,行数=0;
while ( c = fgetc(fp) ){
if( c == 区切り文字 ){
i++;
if(i >= 項目数){
行数 ++ ;
i=0;
}
}
}
fclose(fp);
return 行数 ;
0251デフォルトの名無しさん
2015/03/07(土) 01:24:24.47ID:C8DOhXGu0252デフォルトの名無しさん
2015/03/07(土) 15:20:31.76ID:bUPPfM5U■ このスレッドは過去ログ倉庫に格納されています