エスケープシーケンスや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(水) 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で書式の指定ミス
133デフォルトの名無しさん
2017/12/02(土) 15:16:24.33ID:XeWd0teH134デフォルトの名無しさん
2017/12/02(土) 15:18:37.18ID:Jd1ioDh8135デフォルトの名無しさん
2017/12/02(土) 15:35:47.69ID:XeWd0teH136デフォルトの名無しさん
2017/12/02(土) 18:53:18.55ID:K6qIkKEG 超初心者です
c言語でGetPixelが動きません
どうすれば直るのか教えてください
COLORREF GetPixel (float 変数x, float 変数y); //指定座標の色取得。
if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行
//以下、実行するコード
c言語でGetPixelが動きません
どうすれば直るのか教えてください
COLORREF GetPixel (float 変数x, float 変数y); //指定座標の色取得。
if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行
//以下、実行するコード
137デフォルトの名無しさん
2017/12/02(土) 19:09:54.54ID:4pmjT1Fk >>136
>if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行
if (GetPixel(x, y) == RGBCOLOR( 0, 0,255)) {
条件が真のとき実行するコード
}
ではどうですか?
>if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行
if (GetPixel(x, y) == RGBCOLOR( 0, 0,255)) {
条件が真のとき実行するコード
}
ではどうですか?
138デフォルトの名無しさん
2017/12/04(月) 17:32:02.17ID:K3o+GgF3 boost::qiって読み方ブースト・チーでいいの?
139デフォルトの名無しさん
2017/12/04(月) 18:32:18.36ID:m/Ygi57i boostのパーサの使い方わかんね
140デフォルトの名無しさん
2017/12/04(月) 21:33:58.20ID:K2rBoL+r >>138
氣
氣
141デフォルトの名無しさん
2017/12/05(火) 04:28:16.53ID:NJ16QKFF 組み込みの場合例えばRs232Cのチャンネルが三つあるようなばあいにクラスに
するとIOの初期化がそれぞれ違う。しかもチャンネル1を初期化するとチャンネル3
にも影響する場合がある。こういう場合にはどんな風にクラスをつくったらいい?
するとIOの初期化がそれぞれ違う。しかもチャンネル1を初期化するとチャンネル3
にも影響する場合がある。こういう場合にはどんな風にクラスをつくったらいい?
142デフォルトの名無しさん
2017/12/05(火) 10:59:54.97ID:BooJAJ3p よろしくお願いします。
fp=fopen("out.txt","r");
while(fscanf(fp,"%d",&da2[i])!=EOF){
fscanf(fp,"%d",&da2[i]);
i++;
}
fclose(fp);
これを実行するとテキストファイルに記録されている整数を
一行飛ばしで読みだしてしまいます
どうして飛ばされる行ができてしまうのでしょうか?
fp=fopen("out.txt","r");
while(fscanf(fp,"%d",&da2[i])!=EOF){
fscanf(fp,"%d",&da2[i]);
i++;
}
fclose(fp);
これを実行するとテキストファイルに記録されている整数を
一行飛ばしで読みだしてしまいます
どうして飛ばされる行ができてしまうのでしょうか?
143デフォルトの名無しさん
2017/12/05(火) 11:22:39.33ID:tMsGMSrl >>141
friend
friend
>>142
fscanf() を二箇所に書いているけれども、それでいいのですか?
fscanf() を二箇所に書いているけれども、それでいいのですか?
145デフォルトの名無しさん
2017/12/05(火) 11:54:34.95ID:GUcDlKUg >>142
whileでのfscanfのあとでiを変更してないから次のfscanfで同じda2[i]に上書きしてる
whileでのfscanfのあとでiを変更してないから次のfscanfで同じda2[i]に上書きしてる
146デフォルトの名無しさん
2017/12/05(火) 12:02:08.68ID:BooJAJ3p147デフォルトの名無しさん
2017/12/05(火) 15:40:18.03ID:BooJAJ3p 再びよろしくお願いいたします。
int main(){
char ch1,ch2;
printf("二文字入力\n");
scanf("%c",&ch1);
scanf("%c",&ch2);
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
これを実行すると、2回目のscanfを飛び越えてしまいます。
その理由と回避方法をご指南いただけませんでしょうか?
よろしくお願いいたします。
int main(){
char ch1,ch2;
printf("二文字入力\n");
scanf("%c",&ch1);
scanf("%c",&ch2);
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
これを実行すると、2回目のscanfを飛び越えてしまいます。
その理由と回避方法をご指南いただけませんでしょうか?
よろしくお願いいたします。
148片山博文MZ ◆T6xkBnTXz7B0
2017/12/05(火) 15:46:59.33ID:KBxdaLdg 再びよろしくお願いいたします。
int main(){
char buf[3], ch1,ch2;
printf("二文字入力\n");
fgets(buf, 3, stdin);
ch1 = buf[0];
ch2 = buf[1];
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
int main(){
char buf[3], ch1,ch2;
printf("二文字入力\n");
fgets(buf, 3, stdin);
ch1 = buf[0];
ch2 = buf[1];
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
149デフォルトの名無しさん
2017/12/05(火) 16:20:49.08ID:BooJAJ3p150デフォルトの名無しさん
2017/12/05(火) 16:50:17.51ID:VZfNuCLu151デフォルトの名無しさん
2017/12/05(火) 16:59:28.01ID:BooJAJ3p >>150
ありがとうございます
しっかり理解できるには時間がかかりますが
とりあえず、お礼申し上げます
改行文字を処理しないと次のscanfが改行文字を読んでしまうのですね
とても勉強になりますし、皆様のおかげで前進できます
ありがとうございます
ありがとうございます
しっかり理解できるには時間がかかりますが
とりあえず、お礼申し上げます
改行文字を処理しないと次のscanfが改行文字を読んでしまうのですね
とても勉強になりますし、皆様のおかげで前進できます
ありがとうございます
152デフォルトの名無しさん
2017/12/07(木) 00:17:29.58ID:fcKh4od9 皆すげーな
俺みたいなライブラリのインクルードが通せなくて
そもそもコンパイルって何だっけってところから調べるような奴には恐れ多いわ
俺みたいなライブラリのインクルードが通せなくて
そもそもコンパイルって何だっけってところから調べるような奴には恐れ多いわ
153デフォルトの名無しさん
2017/12/07(木) 12:53:50.82ID:4zvLzkC0 毎日すみません。ご教授お願いします。
out,txtに記録されている下記文字に対して
---------------
AAA BB
ababb
099
---------------
ファイルを開いて、文字列を読み出し
配列で一文字一文字を表示させようとしています
i=0;
fp=fopen("out.txt","r");
while(fscanf(fp,"%c",&c)!=EOF){
i++;
}
for(t=0;t<=i;t++){
printf("%c\n",c[t]);
}
これだと18行表示されますが
表示されたのは全く異なるものでした
どこが不適切なのか2日考えても分かりません
いつも申し訳ありません><よろしくご指導願います
out,txtに記録されている下記文字に対して
---------------
AAA BB
ababb
099
---------------
ファイルを開いて、文字列を読み出し
配列で一文字一文字を表示させようとしています
i=0;
fp=fopen("out.txt","r");
while(fscanf(fp,"%c",&c)!=EOF){
i++;
}
for(t=0;t<=i;t++){
printf("%c\n",c[t]);
}
これだと18行表示されますが
表示されたのは全く異なるものでした
どこが不適切なのか2日考えても分かりません
いつも申し訳ありません><よろしくご指導願います
154デフォルトの名無しさん
2017/12/07(木) 13:10:52.74ID:dicAL8ON >>153
c は大きさの十分ある char への配列と想定した前提で
fscanf の引数がおかしい
1文字毎に配列へ順繰りに読み込ますのなら
fscanf(fp,"%c", &c[i]);
こうなってないと
c は大きさの十分ある char への配列と想定した前提で
fscanf の引数がおかしい
1文字毎に配列へ順繰りに読み込ますのなら
fscanf(fp,"%c", &c[i]);
こうなってないと
155デフォルトの名無しさん
2017/12/07(木) 13:39:27.89ID:4zvLzkC0 >>154
&が抜けていたのは恥ずかしいです
申し訳ありませんでした
しっかり覚えさせていただきます
プログラムもちゃんと動きました
いつも簡単なことばかりなのに理解が浅くてすみません
とても勉強になりました。ありがとうございました
&が抜けていたのは恥ずかしいです
申し訳ありませんでした
しっかり覚えさせていただきます
プログラムもちゃんと動きました
いつも簡単なことばかりなのに理解が浅くてすみません
とても勉強になりました。ありがとうございました
156デフォルトの名無しさん
2017/12/07(木) 16:08:02.33ID:dicAL8ON 書いてあることが違うけど(&が抜けていたのではなく [i] がない)
本当に分かっているのか不安になる返答だが、そのうち慣れてくるだろう。
(文字と文字列の違いと (f)scanf に渡すフォーマットの指示と 変数をどう渡すか
の一連が整理されてないと、また繰り返すだろう)
本当に分かっているのか不安になる返答だが、そのうち慣れてくるだろう。
(文字と文字列の違いと (f)scanf に渡すフォーマットの指示と 変数をどう渡すか
の一連が整理されてないと、また繰り返すだろう)
157デフォルトの名無しさん
2017/12/07(木) 16:29:02.63ID:4zvLzkC0 >>156
はい、ありがとうございます。
配列にして直してあります。
fscanf(fp,"%s",c)として読み込んだ後に
c[i]で一文字一文字表示させられると思い込んでいました
先ほどの156のおかげでfscanf(**** &c[i])を覚えられました
ありがとうございます!感謝してます
はい、ありがとうございます。
配列にして直してあります。
fscanf(fp,"%s",c)として読み込んだ後に
c[i]で一文字一文字表示させられると思い込んでいました
先ほどの156のおかげでfscanf(**** &c[i])を覚えられました
ありがとうございます!感謝してます
158デフォルトの名無しさん
2017/12/08(金) 15:46:12.24ID:b0CgZ3o1 こんにちは。どうか本日もよろしくお願いいたします。
10人分の点数を入れて表示するプログラムです。
下記のように作成したのですが、main()内から関数を呼び出すところで
parameter names(without typesというエラーがでてしまいます。
どうかよろしくお願いします。
#include<stdio.h>
void da(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d input ",i);scanf("%d",&ten[i]);
}
return;
}
void out(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d人目 : %d点\n",i,ten[i]);
}
return;
}
int main(){
int ten[10];
void da(ten);
void out(ten);
return 0;
}
10人分の点数を入れて表示するプログラムです。
下記のように作成したのですが、main()内から関数を呼び出すところで
parameter names(without typesというエラーがでてしまいます。
どうかよろしくお願いします。
#include<stdio.h>
void da(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d input ",i);scanf("%d",&ten[i]);
}
return;
}
void out(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d人目 : %d点\n",i,ten[i]);
}
return;
}
int main(){
int ten[10];
void da(ten);
void out(ten);
return 0;
}
159片山博文MZ ◆T6xkBnTXz7B0
2017/12/08(金) 15:56:23.80ID:8LWGXCju >>158
#include <stdio.h>
void da(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d input ", i); scanf("%d",&ten[i]);
}
}
void out(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d人目 : %d点\n", i + 1, ten[i]);
}
}
int main(void) {
int ten[10];
da(ten);
out(ten);
return 0;
}
#include <stdio.h>
void da(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d input ", i); scanf("%d",&ten[i]);
}
}
void out(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d人目 : %d点\n", i + 1, ten[i]);
}
}
int main(void) {
int ten[10];
da(ten);
out(ten);
return 0;
}
160デフォルトの名無しさん
2017/12/08(金) 16:02:05.10ID:C0Y4l8FE そろそろうっとしいな
161デフォルトの名無しさん
2017/12/08(金) 16:06:39.52ID:b0CgZ3o1 すみません、ここは質問するところじゃなかったのですね
他のC言語のスレから誘導されたので、こちらで質問していいかと思ったのですが
今後質問は控えます。自力で学習を進めようと思います。
ご迷惑をおかけしてすみませんでした。
片山先生、本日もありがとうございました。感謝です。
他のC言語のスレから誘導されたので、こちらで質問していいかと思ったのですが
今後質問は控えます。自力で学習を進めようと思います。
ご迷惑をおかけしてすみませんでした。
片山先生、本日もありがとうございました。感謝です。
162デフォルトの名無しさん
2017/12/16(土) 05:14:03.17ID:Nra/Nglb #pragma pack(1)
struct {
char a;
short b;
int c;
} x;
Cでバイナリデータとかパディング除けに上のような感じに書いて読み書きしたりしますが(例は適当)、
C++ではpragmaを使用せず記述量も少ないスマートな記述方法はあるでしょうか?
struct {
char a;
short b;
int c;
} x;
Cでバイナリデータとかパディング除けに上のような感じに書いて読み書きしたりしますが(例は適当)、
C++ではpragmaを使用せず記述量も少ないスマートな記述方法はあるでしょうか?
163デフォルトの名無しさん
2017/12/16(土) 09:10:24.00ID:67ZudMHx ない
164デフォルトの名無しさん
2017/12/16(土) 09:52:53.87ID:Nra/Nglb ありがとうございます。やっぱりないですか。
pragmaがコンパイラ依存とか書かれてて非常に嫌なんですが慣れます。
pragmaがコンパイラ依存とか書かれてて非常に嫌なんですが慣れます。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★3 [蚤の市★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 日本人の間で脱税がブーム 所得税の追徴課税額1400億円超、過去最高 [402859164]
- 女の子集合!
- 今年の漢字、きょう発表😉 [583597859]
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
- 百合営業してるアイドル「これは営業だから…んっクチュクチュ」←これ
- 【悲報】メモリだけでなくSSDも値上がりがはじまる♥
