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