- 1 名前:デフォルトの名無しさん [2017/11/04(土) 16:33:35.07 ID:NYxCuvMY.net]
- エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう 半角空白やタブでのインデントはスレに貼ると無くなります コードを貼れる所 codepad.org/ https://ideone.com/ 前スレ 【初心者歓迎】C/C++室 Ver.101【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1500329247/
- 35 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 09:37:48.99 ID:kEoXgNLC.net]
- gotoとかwwww
って思った人いるんだろうか
- 36 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 10:35:10.40 ID:FLS9cqpb.net]
- switch である必要ないな
- 37 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 11:33:23.57 ID:2d9va5Xh.net]
- >>34
ああ、素人はgoto嫌うよな >>35 もちろん必要は無い テーブルよりは色々な面でマシってだけ 普通に if ( '0' <= c && c <= '9' ) で良い 一目で意味がわかるし高速
- 38 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 12:27:45.50 ID:2VVChtYT.net]
- &&って条件分岐が入るけど、本当に高速?
- 39 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 12:44:08.80 ID:FLS9cqpb.net]
- そこはctypeで判定だね
- 40 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 13:01:31.63 ID:2VVChtYT.net]
- >>37
とおもってアセンブリ吐かせてみたら、すごかった。 48引いた上で、符号なしで10未満か
- 41 名前:判定してるので、
余分な条件分岐してなかった。 [] - [ここ壊れてます]
- 42 名前:はちみつ餃子 mailto:sage [2017/11/08(水) 13:02:27.97 ID:xvDlz0If.net]
- >>37
&& では分岐しなかった。 '0' <= c && c <= '9' を clang で -O3 付きでコンパイルしてみたらこうなった。 addl $-48, %eax cmpl $10, %eax setb %al 賢いな! 直後に分岐するなら結果をレジスタに書き込む必要はないから実質的に二命令だ。
- 43 名前:片山博文MZ mailto:sage [2017/11/08(水) 13:37:52.71 ID:TZ5JAUzS.net]
- 俺の知識も時代遅れになったな。シンプル伊豆ベスト。
- 44 名前:はちみつ餃子 mailto:sage [2017/11/08(水) 18:14:28.55 ID:xvDlz0If.net]
- もっと >>40 を高速化できないかと思って考えてみたが、
'0' を引くんじゃなくて 0x30 と xor を取ってから 10 より小さいか比較するっていうのでもいける。 ただ、最近はビット演算が算術命令より速いとも限らないみたいなんだよね〜
- 45 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 18:22:33.84 ID:8jdacwiA.net]
- >>42
まるで昔は速かったかのようだ
- 46 名前:はちみつ餃子 mailto:sage [2017/11/08(水) 18:37:11.31 ID:xvDlz0If.net]
- >>42-43
Z80 ですら足し算と XOR は 1 クロックだったわ。 スマソ
- 47 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 18:43:03.66 ID:u4hO2YM0.net]
- ん?
8086はビット演算の方が速いぞ
- 48 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 18:57:26.39 ID:GPQLPiKH.net]
- >>21
> 仕様として「両方で停止は問題ない」よな? 相談者でないとわからん 途中に'\0'があるケースについては書いてないから > そもそも相談者の仕様がおかしい それはお前が決める話じゃない
- 49 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 18:59:47.82 ID:GPQLPiKH.net]
- >>22
> ショートサーキット前提の記述をよしとするかどうかはわからん if(p != 0 && *p != '\0') みたいなのは普通に書かない?
- 50 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 19:03:40.31 ID:CwKlKlOQ.net]
- >>47
俺は書くけど それを"普通"とまで言い切ってしまって良いという自信はない
- 51 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 19:14:43.13 ID:u4hO2YM0.net]
- >>46
わからないならだまってれば 正確な要求仕様がわからない事くらい誰でもわかる 両方でとまる関数は片方で止まる関数の機能を含むので 問題になる場面は普通は考えられない 質問に書いてない、文字列の途中にNULL文字とか いうアホな事を心配しない限り
- 52 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 19:18:16.64 ID:u4hO2YM0.net]
- 全角数字の方がまだ可能性がある
- 53 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 19:42:17.13 ID:GPQLPiKH.net]
- >>49
こういう思い込みの激しい奴が要らんバグを作り込むんだよな...
- 54 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 19:51:21.87 ID:CyIcapPx.net]
- isdigit関連で性能測ってみた。
環境: Core i7-2600 / gcc 6.4 (-O2) rund() & 0xff の値で条件分岐して、真ならさらに rand() を呼ぶ、を10億回ループ。 条件式はASCII前提。 数字: 条件式 < int配列ルックアップ < isdigit 英字: 条件式 <= int配列ルックアップ < isalpha 数字英字: int配列ルックアップ < 条件式 < isalnum ロケールの影響か、isalphaなどはisdigitより遅い。 char配列ルックアップはint配列より遅い。 奇妙なことに、配列ルックアップでも、数字だけより、英字も入ってくると遅くなる。なぜだ。
- 55 名前:52 mailto:sage [2017/11/08(水) 19:54:52.03 ID:CyIcapPx.net]
- あ、ごめん、rand() 呼ぶ分、数字 < 英字 < 英数字の順で遅くなるの、当然だった。
- 56 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 20:30:53.41 ID:u4hO2YM0.net]
- 最速なら前スレの>>995や>>997
>>997は演算の依存性が高いので >>995の方が少し速いかな? まあコンパイラや環境依存でしょう x64前提なら、 64bit一気に持ってきて偶数奇数桁に分けて、 LEAで5倍してシフトして足すとか AVXで乗算してから水平演算とか 色々と考えられるけど まあ一応このスレのC言語の範囲で
- 57 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 20:49:19.11 ID:QAR8Spec.net]
- このスレの結論はこれか。
10000*a[0]+10000*a[1]+1000*a[3]+100*a[4]+10*a[6]+a[7]-5333328; これより速くする方法あるのか
- 58 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:08:26.39 ID:CwKlKlOQ.net]
- 何時の間に判定せずにすむようになったんだ
- 59 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:11:25.51 ID:u4hO2YM0.net]
- 前スレの>>997が質問者だから
フォーマットは固定と思われる
- 60 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:12:49.95 ID:u4hO2YM0.net]
- さすがに '0' * 111111 をコンパイル時に計算しないコンパイラは無いと思うので
このままで良い気はする 当然こちらの方が意味が分かりやすい
- 61 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:14:04.15 ID:u4hO2YM0.net]
- ( ) を色々とかえて時間を測ってみたけどほとんど同じ
やっぱりLEAを多用してる VS2017の64bit Releaseビルドの場合
- 62 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:39:10.43 ID:u4hO2YM0.net]
- VPMOVZXBD xmm0, a
VPMADFWD xmm0, xmm0, [掛け算テーブル] VPHADDD xmm0, xmm0, xmm0 VPHADDD xmm0, xmm0, xmm0
- 63 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:40:02.30 ID:u4hO2YM0.net]
- AVXが使えるならこれ
- 64 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:42:47.06 ID:u4hO2YM0.net]
- 微妙に間違った
メモリが連続してれば複数同時に出来る 連続してなくても複数同時にやった方が速い
- 65 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:43:54.20 ID:YMDhJx7T.net]
- >>29でメモリアクセスに言及されてる話の流れの中で
10億回ループがいちいちキャッシュクリアされてるのかが気になる
- 66 名前:デフォルトの名無しさん mailto:sage [2017/11/08(水) 21:49:19.34 ID:u4hO2YM0.net]
- 普通はキャッシュに入ったままだが、
処理次第で可能性が無いことはない 他のキャッシュを汚染する可能性もある HTTなどでは特に 他に良い方法が有るのにわざわざ面倒なテーブルにする意味がわからない
- 67 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 07:46:10.46 ID:F5y7yLWH.net]
- std::vector<std::string>からchar*const[]を作成するいい方法ってないですか。
newするしかないですかね。
- 68 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 10:26:44.91 ID:TvDreq2K.net]
- >>65
vector<char*> に各要素 s の &s[0] を入れて済むなら new は要らなさそう。
- 69 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 20:15:55.61 ID:MIqJX5DT.net]
- >>66
まあどうみても内部でnewしてるんだろうけど
- 70 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 21:01:13.10 ID:UsP+TtJI.net]
- クラスの概念がわかりません
- 71 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 21:19:13.94 ID:lLb0QJod.net]
- 構造体みたいなもの
- 72 名前:片山博文MZ mailto:sage [2017/11/10(金) 21:39:23.58 ID:x1hu0efq.net]
- >>68
クラスは構造体に関数を追加したようなもの。 クラス内部の関数はメソッドと呼ばれる。 メソッドからは、クラスのデータとメソッドを参照できる。 データとメソッドのそれぞれの項目をクラスのメンバーと呼ぶ。 クラスの実体はインスタンスと呼ばれる。メソッドからは、thisポインターにより、クラスのインスタンスを参照できる。 メンバーは、public:、protected:、private:によってアクセスを制御できる。アクセスできないメンバーを参照するとコンパイルエラーになる。
- 73 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:11:59.59 ID:x1hu0efq.net]
- class A
{ int a; }; と書くとA::aは、privateになる。構造体と同じアクセスにするには class A { public: int a; }; と書かないといけない。このようにクラスのデフォルトのアクセスはprivateになり、構造体はpublicになるという違いもある。
- 74 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:14:05.73 ID:x1hu0efq.net]
- クラスはコンストラクタと呼ばれる特殊なメソッドがあり、インスタンスの構築に使われる。
また、インスタンスが破棄されるときに、デストラクタという特殊なメソッドが呼ばれる。
- 75 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:17:22.95 ID:x1hu0efq.net]
- コンストラクタの例。
class A { public: int m_a; A(int a) {m_a = a + 1; } }; int main() { A a(2); printf("%d\n", a.m_a); }
- 76 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:19:15.61 ID:x1hu0efq.net]
- 別のコンストラクタの例。
class A { public: int m_a; A(int a, int b) : m_a(a + b) { } }; int main() { A a(2, 3); printf("%d\n", a.m_a); }
- 77 名前:はちみつ餃子 mailto:sage [2017/11/10(金) 23:02:09.42 ID:4kUQXTj6.net]
- そんなの説明してやらなくてもネット上に無数の解説があるだろ。
ちゃんとした説明を読んで理解できないなら掲示板で短い説明読んだってわかりゃしねーよ。
- 78 名前:片山博文MZ mailto:sage [2017/11/10(金) 23:14:40.61 ID:x1hu0efq.net]
- >>75
情報が多過ぎて迷子になってるんじゃないか。マニュアル読め、規格票読め、で終わればいいのだが。
- 79 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 23:21:03.62 ID:YANYSepQ.net]
- そう思うならなぜ現在地を聞く前に世界地図を渡すのか
- 80 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 23:32:23.63 ID:2wx3Dyqu.net]
- >クラスは構造体に関数を追加したようなもの
こういうアホってどこにでもいるんですね
- 81 名前: mailto:sage [2017/11/10(金) 23:40:07.53 ID:qCTAOUdD.net]
- >>78
その理解で8割がたOKだと思うのだが、何が問題なの?
- 82 名前:はちみつ餃子 mailto:sage [2017/11/10(金) 23:46:33.90 ID:4kUQXTj6.net]
- >>76
チュートリアルだってたくさんあるじゃん。
- 83 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 00:24:04.64 ID:5MIg+SHx.net]
- >>79
クラスがわからんやつにこんな説明しても通じないだろ
- 84 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 00:49:17.73 ID:1PUme0lw.net]
- 山田さんってどんな人?と聞かれて
原子の集まりだよ。って答えるようなもの 形式的にウソじゃあないんだが そこじゃないだろっていう
- 85 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 02:47:19.31 ID:fW1Ux/Kl.net]
- 純粋にC++のクラスそれ自体の概念というなら
C言語(ベース)でのオブジェクト指向プログラミングをサポートするために言語機能で用意された部品 オブジェクト指向プログラミングにおけるオブジェクト、オブジェクトの状態、 メッセージの送受信、メッセージを受けたときの振る舞いといった概念を具体化した仕組みの一例
- 86 名前:デフォルトの名無しさん mailto:sage [2017/11/12(日) 13:22:39.97 ID:134uacB+.net]
- 記憶クラスについての質問の可能性
- 87 名前:デフォルトの名無しさん mailto:sage [2017/11/12(日) 23:51:21.74 ID:nDRVLcBe.net]
- 実のところはOOPを知らないからクラスをどう使えばいいのかわからない/
他人の真似でなんとなく使ってるけどなぜクラスを使うのかがわからないといったあたりの話だろ
- 88 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 02:18:46.71 ID:jSfISRI4.net]
- 下手にクラスを説明するやつが多いせいで、コーディング経験なくても理解できる概念的なものだと思われちゃう
クラスは実用あってこそ
- 89 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 07:58:58.54 ID:gxZQPw73.net]
- アニマルクラスがわんにゃー鳴くのがオブジェクト指向です
- 90 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 17:16:56.90 ID:ehTxx6H6.net]
- メンバ関数を呼び出す際の
「オブジェクトにメッセージを送る」って言い回しも C++だと分かりにくいね。 この表現がしっくりくるプログラミング言語というか 環境もあるのだろうけど。
- 91 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 17:52:35.50 ID:NgxFNsMl.net]
- >>88
そういうのをベタで実現しているOO言語はないかな…
- 92 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 18:04:22.80 ID:evJ3QlJY.net]
- smalltalkは?
- 93 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 20:55:50.24 ID:6XHR1ElK.net]
- >>90
あれも結局、関数(メソッド)の動的なコールをそう呼ばせてるだけ 同じSmalltalkでもSmalltalk-72までさかのぼるとメッセージ送信と呼べなくもない仕組みにはなっているけど それでもオブジェクトに(メッセージを)「送る」というよりは(トークン列を)「流し込む」って感じかと まあ、ともあれC++の「オブジェクト指向」を説明するときには「メッセージを送る」とかはすっかり忘れていいよ そもそもC++の設計者の提唱するオブジェクト指向は「抽象データ型(端的にはユーザー定義の型)」を Simulaという言語から拝借した「クラス」という言語機能で実現することが主軸のアイデアなので www.stroustrup.com/whatis.pdf
- 94 名前:はちみつ餃子 mailto:sage [2017/11/22(水) 21:08:20.60 ID:Rn9KsJdK.net]
- 言語の意味論とそれを実現するメカニズムは別物だから、
仕組みがどうなっているかから考察するのは無粋だと思うけどなぁ。 まあ C++ は低水準レイヤでの仕組みを意識せざるを得ない、 意味論とメカニズムが不可分なデザインではあるから概念としてのメッセージ指向よりも メカニズムに意識が引きずられてしまうというのは確かにあるかもしれない。
- 95 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:21:24.87 ID:3PrpHuiB.net]
- メソッド呼び出しってメッセージパッシング感すげー出てない?
- 96 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:28:03.86 ID:+hB2MqUt.net]
- >それでもオブジェクトに(メッセージを)「送る」というよりは(トークン列を)「流し込む」って感じかと
違いがわからないw
- 97 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:33:35.60 ID:2YdhEIzW.net]
- >>93
メッセージパッシング言うなら、何かが静的に決定してる時点で興醒めだよ wiki.c2.com/?AlanKayOnMessaging
- 98 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:02:11.68 ID:XGz0BDt0.net]
- >>95
C++のポリモーフィックなメソッドは動的ディスパッチだろう
- 99 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:09:00.03 ID:NgxFNsMl.net]
- >>91
>抽象データ型 これがすべてなのに、どうしてメッセージ駆動の話が今でももちきりなのだろうか?
- 100 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 08:26:45.55 ID:Qr4pYIOt.net]
- >>96
C++に「動的なものは何もない」という主張ではなく 「静的に決まる何かが一つでもある」時点でそれをメッセージングに例えるのは興醒めという意味 少なくともケイは彼のOOPにおけるメッセージングを「遅延結合の徹底」の目的で提案している d.hatena.ne.jp/katzchang/touch/20080807/p2 「私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、 そして全ての物に対する強力な遅延束縛、これだけだ。 これはSmalltalkとLISPだけが実現できている。他のシステムでも可能かもしれないが、私は知らない。」 つまるところ、これはすなわち、SmalltalkやLispみたいな変態言語でもなければ、 (あるいはアクター機構のように、並列化を意識して本当にメッセージを送るのでもなければ) 無理して「メッセージパッシング」なんてたとえる必要は無いんやで、という話でしかない
- 101 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 08:27:38.45 ID:Qr4pYIOt.net]
- >>97
まったくもってその通り
- 102 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:15:04.16 ID:76J8bh8G.net]
- Cのキャストについて教えてください
int a,b; long c; の条件下で、a+b 、a*100+b*100(a*100、b*100のどちらもlong型になる) がそれぞれlong型の解になるような場合のキャストとしては 1 c=(long)a+b; 2 c=(long)a+(long)b; 3 c=(long)a*100+b*100 4 c=(long)a*100+(long)b*100 とそれぞれ、どの記載が正しいのでしょうか?
- 103 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:19:02.83 ID:5K7m7Mmt.net]
- >a*100、b*100のどちらもlong型になる
intでは表せなくてlongが必要 って意味なら3以外
- 104 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:20:46.83 ID:76J8bh8G.net]
- ありがとうございます。
1と3は似ていますが1はa,bそれぞれキャストされるが 3ではb*100はキャストされずint型で計算されてしまう、ということなのですね
- 105 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 16:57:14.87 ID:L5ESShiZ.net]
- よろしかったら教えてください
if(a==0){ } と記述するのにfor文では for(i=0;1<100;i++){} と書き、for(i==0;i<100;i++){} と書かないのはなぜでしょうか?(==の使い方)
- 106 名前:片山博文MZ mailto:sage [2017/11/24(金) 17:05:28.65 ID:ELoh0Abo.net]
- >>103
代入と比較は違う。
- 107 名前:デフォルトの名無しさん [2017/11/24(金) 17:07:52.77 ID:QRhLqwOG.net]
- スーパー初心者か?
forでも書いてもいい。だが意味がないか低い。 「=」は代入だが「==」は代入でない。
- 108 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:08:50.74 ID:L5ESShiZ.net]
- 片山先生、ありがとうございました!
そういうことなのですね。理解できました、いつもありがとうございます!
- 109 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 17:38:47.92 ID:lG8HVUMw.net]
- わかってる人にとってはクソみたいな質問だけど、
数学だと代入 (定義) するっていうのと等しいっていうのは区別がはっきりしないので、 そういうメンタルモデルで考えてると混乱しちゃうってのはわからんでもない。 とはいうものの、よっぽど出来の悪い入門書でもそこらへんわからんようなのは無いと思うんだが、 どういう学び方をしてるんだかちょっと疑問。
- 110 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:51:57.71 ID:L5ESShiZ.net]
- なんかすみません
ネットで優しそうなサイトで進めてます
- 111 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 12:50:21.53 ID:bi1wDt8X.net]
- 数学のイコールには比較(の結果等しい)の意味しかないだろう
Pascalみたいに代入が:=なら良かったのに
- 112 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 12:57:44.05 ID:cL+Re6N7.net]
- プログラムを記述する際、等しいかを比較するより、代入のほうが頻度が高いから
Cでは多く入力するであろう代入側を 1文字にして そうでない側を 2文字にした って聞いたことがある
- 113 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:22:50.66 ID:8wOk3LC1.net]
- Fortranだって代入は=だから、Cで採用されたのも仕方ない
とはいえ、文字数ごときにこだわらずに、:=を採用してくれていたらタラレバ
- 114 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:44:24.58 ID:9QEYjjOS.net]
- 力添えを頂きたい。
SunAwt系のソフト内で表示されているテキストを取得したいんだが、尻尾も掴めず困り果て、どうすれば良いか全く分からない状態。 何かヒントを頂けないだろうか。
- 115 名前:はちみつ餃子 mailto:sage [2017/11/28(火) 13:50:31.60 ID:1OfFiaid.net]
- >>112
別のプロセスから取得するって意味?
- 116 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 18:08:18.05 ID:9QEYjjOS.net]
- >>113
YES。 別プロセスからテキストを取りたい。 他の例えばIEやハンドルが取れる様なソフト内の文字ならgettextやcom操作で取ったりできるがSun系のソフトは同じ様にはいかず、メモリを読むのかどうすればいいのか、知識が足りなくて検索も上手に出来ず...頭打ち状態。 何か足掛かりになる物を教えて頂きたい。
- 117 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 00:32:03.31 ID:/GAULuFW.net]
- >>114
試したことないけどこれは? www.oracle.com/technetwork/articles/javase/index-jsp-136191.html
- 118 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:08:28.50 ID:GlJ85cMo.net]
- #include<stio.h>
int main(){ int i,num[5]; for(i=0;i<5;i++){ printf("***\n"); scanf("%*c%d"&num[i]); } } 実行し、num[]に、10、20,30,40,50と入力すると num[0]の値は0、num[1]は20、その後50まで代入されてます num[0]に10が代入されないのは何故なのでしょうか?
- 119 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:26:13.79 ID:NrhyqkWd.net]
- >>116
"%*c"のせいじゃね
- 120 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:36:20.41 ID:GlJ85cMo.net]
- >>117
そうでした。ありがとうございました。
- 121 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 14:49:53.66 ID:t+LxFq0J.net]
- テフ?
- 122 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 03:20:07.32 ID:VClmrWfc.net]
- boost::qiでマルチバイト文字を扱うにはどうすればいいんですかね
- 123 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 12:48:46.21 ID:UzEJxhfp.net]
- 5人の生徒に3教科のテストをし、その点数を入力する
入力後、 テストA テストB テストC 0点〜19点 0人 0人 0人 20点〜39点 0人 0人 0人 40点〜59点 2人 0人 1人 ・・・ 80点〜100点 1人 3人 2人 と集計する方法に悩んでいます。 どういう考え方が考えられますか?
- 124 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:06:08.20 ID:p7Y4uOcI.net]
- >>120
char_に替わるパーサー書けばいいんじゃないかね マルチバイトの最初の文字を認識する自作パーサーをmb1、マルチバイト文字のパーサーをmbcharとして mbchar = (mb1 >> char_) || char_; とか?
- 125 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:14:35.24 ID:LYbXDWPH.net]
- >>121
宿題は自分で考えるのが原則。どこまで考えた?
- 126 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:21:20.74 ID:UzEJxhfp.net]
- >>123
ありがとうございます。 入力された点数を3次元配列に格納するところまでです。 今は、繰り返し分を使い、配列に格納された数字が0でなかったら その数字をカウントして人数を集計しようとしてるのですが、できていません
- 127 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:56:35.70 ID:LYbXDWPH.net]
- >>124
なぜ3次元?生徒と教科がインデックスだから2次元では? あと、表示さえすればいいだけなら、 効率度外視である教科のある得点範囲の人数をカウントするくらいできるでしょ。 効率考えるなら表示用に0で初期化した2次元配列を別に用意する。
- 128 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 14:01:47.55 ID:UzEJxhfp.net]
- >>125
ありがとうございます。2次元です。 ten[5][3]で得点を格納したあとが進まないのです 得点範囲の人数のカウントについてもう少し考えてみます
- 129 名前:デフォルトの名無しさん [2017/12/02(土) 00:04:56.97 ID:F3lbt2G4.net]
- 中古本でプログラミング言語c++の3版が4000円で4版が6000円なんだが
やっぱり4版を買ったほうがいいのかな
- 130 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 00:18:15.85 ID:4X8AnX6A.net]
- あんまり良い本じゃないから買わなくていい
- 131 名前:デフォルトの名無しさん [2017/12/02(土) 00:54:45.18 ID:F3lbt2G4.net]
- >>128
そうなのか・・・聞いておいてよかった ありがとう
- 132 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 09:08:29.93 ID:XeWd0teH.net]
- >>125
昨日はありがとうございました 90行程度と長いプログラムになりましたが 人数をカウントし表示させることができました カウントは、教科毎にfor文で呼び出し 20以下、20〜39、・・・80〜99、100とif文で条件指定し 各範囲で人数をカウントし、最後に表示させました また分からないことがありましたらご指導お願いいたします。
- 133 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 14:58:42.41 ID:XeWd0teH.net]
- ファイルを開いた回数を記録するというプログラムを作っています
int main(){ int count; FILE *fp; if((fp=fopen("log.txt","r"))==NULL){ count=0; }else{ fscanf(fp,"log.txt",&count); fclose(fp); } if((fp=fopen("log.txt","w"))==NULL){ printf("Error\n"); return -1; } count++; printf("%d回目のプログラムを実行です\n",count); fprintf(fp,"%d\n",count); fclose(fp); } これを実行するたびに 2752513回目の・・・ 3444737回目の・・・ 2953217回目の・・・ となってしまい、ファイルを開いた数が記録されません 最初にlog.txtがない状態で実行したときの、一番最初だけ、countに1が代入され log.txtにも1が記載されるのですが、2回目以
- 134 名前:降のcountには7桁の乱数みたいのが代入され記載されてしまいます
どうして不具合が出るのか分からなくなっております。よろしくご教授くださいませ [] - [ここ壊れてます]
- 135 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 15:12:26.31 ID:jpnrbmV1.net]
- fscanfで書式の指定ミス
|

|