スレを勃てるまでもないC/C++の質問はここで 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/17(水) 15:41:48過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0002デフォルトの名無しさん
2008/09/19(金) 00:40:38『500年ROMってろ!!』
と言われた者です。
あれから500年、ひたすらROMに徹してきました。
来る日も、来る日も。
そして今、
やっと念願叶って書き込みをしようとした矢先に、
2をget出来るだなんて………
感動で……胸が一杯です。
人間、辛抱すれば良いことって有るんですね!
こんな僕ですが、
僭越ながらとらせて貰います…!
2get!
0003デフォルトの名無しさん
2008/09/19(金) 05:51:240004デフォルトの名無しさん
2008/09/19(金) 10:55:200005デフォルトの名無しさん
2008/09/19(金) 11:07:400006デフォルトの名無しさん
2008/09/19(金) 21:55:33fopenでバイナリ読み込んで
それを並び替えればいいだけですか?
0007デフォルトの名無しさん
2008/09/20(土) 00:05:300008デフォルトの名無しさん
2008/09/20(土) 21:04:31並び替えただけじゃ圧縮になってないし、元にも戻せませんがな。
しかもC/C++の問題じゃないし。
0009デフォルトの名無しさん
2008/09/20(土) 21:04:380010デフォルトの名無しさん
2008/09/21(日) 19:46:010011デフォルトの名無しさん
2008/09/21(日) 20:58:55参照型ならポインタを使うように書き換えて↑
それ以外はboost::optional
0012デフォルトの名無しさん
2008/09/25(木) 10:49:310013デフォルトの名無しさん
2008/09/25(木) 12:11:470.0000000000000000000000000000123
とかの極小数も1.23×10の-何乗みたいに、ちゃんと入るんでしょうか。
それとも小数点下の十何桁までしか覚えられない?
0014デフォルトの名無しさん
2008/09/25(木) 12:31:130015デフォルトの名無しさん
2008/09/25(木) 13:05:230016デフォルトの名無しさん
2008/09/25(木) 21:07:01printf("%d",(int)(2.014*1000));
結果>>2013
上記のように
2.014 * 1000 をint型でキャストすると
2013になってしまいます。
2.013 * 1000 はちゃんと2013なのにー
何か綺麗な解決方法あるでしょうか。おねがいします
環境はGCCです。
0017デフォルトの名無しさん
2008/09/26(金) 00:31:390018デフォルトの名無しさん
2008/09/29(月) 12:02:19整数になるはずなら、四捨五入でもすれば。
正の領域なら、int(2.014 * 1000 + .5)でOK。
0019デフォルトの名無しさん
2008/09/30(火) 15:59:160020デフォルトの名無しさん
2008/09/30(火) 23:58:08func1、func2、func3という基底クラスがあって
それらを継承して
SubA_func1、2、3・・・
SubB_func1、2、3・・・
SubC_func1、2、3・・・
というクラス群があるとき
base、SubA、SubB、SubCとファイル分けするか
func1、func2、func3と分けるのか
どちらがよいでしょうか?
0021デフォルトの名無しさん
2008/10/01(水) 10:28:070022デフォルトの名無しさん
2008/10/01(水) 20:36:02ビルドできないんですがどうすればいいのでしょうか?
応答なしになってしまいます・・・
0023デフォルトの名無しさん
2008/10/01(水) 21:00:180024デフォルトの名無しさん
2008/10/01(水) 21:18:32それか別の変換方法ってある?
元々はVC9でfstreamのパスに日本語があると開けないやつの対策用に変換がしたいわけで・・・
0025デフォルトの名無しさん
2008/10/01(水) 22:28:05setlocaleしないとまともに動かないぞ。
002624
2008/10/01(水) 22:39:410027デフォルトの名無しさん
2008/10/03(金) 12:32:57例の補足としては、c[0][0]にはa=1、b=2 c[0][1]にはa=5、b=3が入っているとしたら c[0][3]=c[0][0]+c[0][1]の計算した場合 c[0][3]はa=6、b=5になるようなことです
0028デフォルトの名無しさん
2008/10/03(金) 12:36:220029デフォルトの名無しさん
2008/10/03(金) 23:34:08根本的にやり方を変えないと出来ないんじゃないか?
0030デフォルトの名無しさん
2008/10/03(金) 23:40:21外部からの入力をメンバ関数で受け取って同じ関数内で再計算までやってしまえばいいんじゃないかね
もう解決してそうな気もするけどな・・・
0031デフォルトの名無しさん
2008/10/04(土) 01:12:09class Huga
{
public:
Huga( int i = 0 ){ printf("%d\n", i); }
~Huga(){}
};
int _tmain(int argc, _TCHAR* argv[])
{
//Huga *huga = new Huga(5); みたいな感じにしたい
Huga *huga = new Huga[10]; // ここでコンストラクタへ引数を渡したい。
delete[] huga;
return 0;
}
なにかよい知恵があればお授けください。
0032デフォルトの名無しさん
2008/10/04(土) 01:16:18仕様上無理です。
後からsetter()でもループして回しましょう。
0034デフォルトの名無しさん
2008/10/04(土) 20:27:50どなたか流れを教えてください。よろしくお願いします。
#include
int sub(int *x, int *y) {
(*x)++;
(*y)++;
return *x + *y;
}
main() {
int a = 0, b = 0;
b = sub(&a, &a);
printf(“%d %d\n”, a, b);
}
(1) 0 2
(2) 0 3
(3) 1 3
(4) 2 3
(5) 2 4
0035デフォルトの名無しさん
2008/10/04(土) 21:02:23これでOK?
int sub(int 0, int 0) {
0++; => 1
1++; => 2
return 2+2; => 4
}
0036デフォルトの名無しさん
2008/10/04(土) 21:46:29ご回答ありがとうございます。
1++; => 2 ←なぜここで1++になるのですか?*y=0ではないのですか?
return 2+2; => 4 ←これも、なぜ*x=2になるのですか?1ではないのですか?
よくわかりません。お手数ですが、お教え願います。
0037デフォルトの名無しさん
2008/10/04(土) 21:53:07長くてごめん。
>b = sub(&a, &a);
となってるからとしか言えないんだけど。
重要なのは0という数値じゃなくて0が入ったaのアドレスが渡されてるってこと。
xもyも指してる実体は同じaだから、xへの操作はyへの操作と同じだし同様にyへの操作もxへの操作となる。
だから実際は以下と同じようになってるってわけ。
int sub(int *x) {
(*x)++;
(*x)++;
return *x + *x;
}
0038デフォルトの名無しさん
2008/10/04(土) 22:24:01理解できました。ありがとうございました。
0039デフォルトの名無しさん
2008/10/05(日) 03:03:40#if sizeof(time_t) == 8
/* time_t が 64 bit のときの処理 */
#else
/* time_t が 32 bit のときの処理 */
#endif
みたいな書き方ってできなかったっけ?
0040デフォルトの名無しさん
2008/10/05(日) 09:41:190041デフォルトの名無しさん
2008/10/05(日) 21:06:33自分の場合、、、。
構造体を使わなかった場合は、
関数への引数が多くなってしまったり、
関数の戻り値を1つの型ですませることができなくなったりして
不便です。
なので、関数の引数や戻り値で大活躍です。
その他、いろいろ使っています。
共用体は自分の場合はあまり使わないです。
BYTE(unsigned char)型みたいに1byte単位での
入出力が必要な場合に、ある程度決まった型に変換が必要な
場合とかには使う場合があります。
と実務経験があまりない自分が言ってみるテスト。
0042デフォルトの名無しさん
2008/10/05(日) 21:36:12うんできない
0043デフォルトの名無しさん
2008/10/06(月) 09:36:06じゃあ>>39みたいなことしたい場合は、autoconfとかを使って、
コンパイル前にあらかじめsizeof(time_t) を調べておく必要があるってことですね。
うーん、今作ってるのは小さいプログラムだからあんまり大げさなことはしたくないなあ。
なんかいい方法があれば教えてください。
0044デフォルトの名無しさん
2008/10/06(月) 10:27:02プリプロセッサとsizeofとどっちの処理が先か考えりゃわかるべ。
0045デフォルトの名無しさん
2008/10/06(月) 10:54:53time_tが64bitの環境はまだ少ないんだし、その環境向けのifdef (OSと
かCPUとか)で分ければいいでない?
0046デフォルトの名無しさん
2008/10/06(月) 11:06:21} else {
}
じゃだめなのか?
#include <limits.h>
#if SIZE_MAX == 4294967295
#else
#endif
とか
0047デフォルトの名無しさん
2008/10/06(月) 11:11:470048デフォルトの名無しさん
2008/10/12(日) 14:55:45グローバルのポインタ変数にmallocし、領域を確保。
その後、他のローカル関数B内で、関数A内で確保した領域を使うことって
出来ましたっけ?
004948 補足説明
2008/10/12(日) 15:14:03#include <stdio.h>
#include <stdlib.h>
char *g_pcX;
int sub001(char *pcX)
{
pcX = (char*)malloc(256);
for(int i=0; i<256; i++)
{
pcX[i] = i;
}
return 0;
}
void main()
{
sub001(g_pcX);
for(int i=0; i<256; i++)
{
printf("%d ", g_pcX[i]);
}
}
0050デフォルトの名無しさん
2008/10/12(日) 17:41:40・そのサンプルではコンパイルできません。
・グローバル変数であるメリットが全くありません。
・そもそも関数内で確保した場所を誰にも伝えていないのに誰かが使えるわけがありません。
・ポインタと関数の引き数について勉強しなおすべきです。
>>48
できます。しかし、そうすべきではありません。
0051C言語始めました
2008/10/12(日) 18:51:19{
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=0.;
}
}
}
main(){
int n=4;
vector< vector<double> > a( n , n );
zero(// ????? //);
}
????
↑の部分はどのように宣言したらいいのでしょうか?
0052デフォルトの名無しさん
2008/10/12(日) 19:09:05向こうで教わったでしょ。
0053C言語始めました
2008/10/12(日) 19:12:59{
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=0.;
}
}
}
void main(){
int n=4;
vector< vector<double> > a( n , n );
zero(n, vector< vector<double> > & a);
}
さっぱりピーマンです…
0054デフォルトの名無しさん
2008/10/12(日) 19:27:30>>53
次のどれかを選択しろ。
・STLの勉強をする。
・C初心者スレ辺りでやりたいことから提示して初歩から教わる。
・PCを窓から投げ捨てる。
0055C言語始めました
2008/10/12(日) 19:35:24火曜日になれば教えてもらえるけど早く使い方知りたかったんで。
基礎とかは二の次で使えたらいいのでどうか教えてください。
0056デフォルトの名無しさん
2008/10/12(日) 20:58:43--
#include <vector>
void zero(std::vector<std::vector<double> > & a){for (unsigned i = 0; i < a.size(); ++i) for (unsigned j = 0; j < a.at(i).size(); ++j) a.at(i).at(j) = 0;}
int main(){const unsigned n = 4;std::vector<std::vector<double> > a(n, n);zero(a);return 0;}
0057C言語始めました
2008/10/12(日) 21:30:04ありがとうございます。
がんばって噛み砕きます。
0058デフォルトの名無しさん
2008/10/12(日) 23:07:57一応コンパイルは通りそうだが?
0059デフォルトの名無しさん
2008/10/12(日) 23:30:21あー確かにコンパイルは通るね。ダメダメなことに変わりはないけど。
0060デフォルトの名無しさん
2008/10/13(月) 00:02:270061デフォルトの名無しさん
2008/10/13(月) 22:44:34fatal error C1083: include ファイルを開けません。'iostream.h': No such file or directory
というエラーが出ます。
VC++2005EEをインストールしただけじゃだめなのでしょうか?
ソースは↓です。
#include <iostream.h>
int main()
{
cout << "テスト" ;
return 0;
}
0062デフォルトの名無しさん
2008/10/13(月) 22:53:03君は浦島太郎だ。今のC++に<iostream.h>は無くなった。
#include <iostream>
int main()
{
std::cout << "テスト" ;
return 0;
}
0063デフォルトの名無しさん
2008/10/13(月) 23:20:34正常に実行できました。
ありがとうございます。
参考にしていたサイトが古かったので、浦島太郎でした。
0064デフォルトの名無しさん
2008/10/14(火) 07:52:07[環境]VC++2005
TCHARで開くファイル名を指定して TEXT("\\Data\\foo.jpg") と
しているが、CreateFileでファイルを開くことができない。
以下、プロジェクトをhogeとしている場合のフォルダ構成。
hoge.sln
hoge.ncb
hoge.suo
+[debug]
+[hoge]----+[Data]---foo.jpg
+[Source]---main.cpp
その他ソースコード
※プロジェクトのプロパティ>C/C++>追加のインクルードディレクトリ
で、SourceフォルダとDataフォルダを追加している。
Dataフォルダの追加を行っているが、これはコンパイルするときに
読み込むもののみに有効?
※foo.jpgを[hoge]フォルダ直下においた場合は読み込める。
006564
2008/10/14(火) 07:58:48すんません、フォルダ構成記述ミスりました。
<最上位階層>
hoge.sln
hoge.ncb
hoge.suo
+[debug]
+[hoge]
<hoge階層>
+[Source]
+[Data]
hoge.rc
hoge.vcproj
hoge.ico
<Data階層>
foo.jpg //こいつを読み込みたい
<Source階層>
main.cppなどなどその他ソースコード
0066デフォルトの名無しさん
2008/10/14(火) 09:25:21本を読んでもUNIXの鯖がどーたら
で全然意味がわかりません。
鯖を共有メモリにするってことですか?
0067デフォルトの名無しさん
2008/10/14(火) 09:53:36釣りだろ!?
釣りだと言ってくれッ…!
0068デフォルトの名無しさん
2008/10/14(火) 10:41:33ネットワークプログラムなしにネットワークを使えると思っているのですか?
あなたか書き込んでいるここはいったい何だと思って・・・
0069デフォルトの名無しさん
2008/10/14(火) 15:29:420070デフォルトの名無しさん
2008/10/14(火) 22:58:0080点以上100点以内 A
65点以上80点未満 B
50点以上65点未満 C
0点以上50点未満 D
それ以外の整数に対しては「ありえない」と出す
0071デフォルトの名無しさん
2008/10/14(火) 23:13:51C/C++の宿題を片付けます 116代目
http://pc11.2ch.net/test/read.cgi/tech/1222813731/l50
0072デフォルトの名無しさん
2008/10/21(火) 09:35:45内容も変更しないという意味だったっけ?
たとえば
void Map_Class::second(std::map<std::string, int>& m) const {
のようなメンバ関数があったとすると
このメンバ関数の中では値を変更しちゃいけないんだっけ?
0073デフォルトの名無しさん
2008/10/21(火) 11:33:31いいえ、メンバ関数内でメンバ変数を変更できないだけです。
その例ではmを変更できてしまえます。
0074デフォルトの名無しさん
2008/10/21(火) 14:23:21では、何のための const なのでしょう?
0075デフォルトの名無しさん
2008/10/21(火) 14:33:49Map_Class自体がconstの場合のため。
std::map<std::string, int> m;
const Map_Class map_class;
map_class.second(m);
secondがconstでなければ呼べない。
map_classはconstのため変更不可だが、mはconstではないので変更可。
0076デフォルトの名無しさん
2008/10/21(火) 14:33:55だから、メンバー変数を変更しないという意味でconstでしょ。
0077デフォルトの名無しさん
2008/10/22(水) 21:04:59オブジェクト指向で汎用性を高くもたせるか迷ってます
構造体バリバリで書くと後のソースいじるときに大量のソースになり
保守するのが難しくなりやすいのと
オブジェクト指向で書くと汎用性を維持するためのコードで複雑になりやすく
これまた保守が難しくなりやすいかと考えています
どちらの手法で組んでいくか、また、別の手法があるかアドバイスいただけませんか?
0078デフォルトの名無しさん
2008/10/22(水) 21:09:150079デフォルトの名無しさん
2008/10/23(木) 07:52:12mapを変更したくないなら、
void Map_Class::second(const std::map<std::string, int>& m) const {
のようにmをconst参照にすればよい
すると、second内ではmのconstメンバー関数しか呼び出せなくなる。
0080デフォルトの名無しさん
2008/10/23(木) 07:52:50>>73 → >>74
0081デフォルトの名無しさん
2008/10/23(木) 13:51:51アイコンファイルってサイズ指定するとこないですよね?
Visual C++です。
0082デフォルトの名無しさん
2008/10/23(木) 13:53:21LoadImageならサイズも指定できるよ。
0083デフォルトの名無しさん
2008/10/23(木) 16:34:30下記のクラスの定義で、<RTC::TimedLong>の部分の意味が分かりません。
(山カッコの使い方が分からないです…)
よろしくお願いします。
class Multiply
: public RTC::OnWriteConvert<RTC::TimedLong>
{
:
:
};
0084デフォルトの名無しさん
2008/10/23(木) 16:47:000085デフォルトの名無しさん
2008/10/23(木) 16:55:20理解できました。
有難うございます。
0086デフォルトの名無しさん
2008/10/23(木) 17:07:020087デフォルトの名無しさん
2008/10/23(木) 18:51:43HICON ico;
ico = AfxGetApp()->LoadIcon(IDI_ICON1);
って感じで読み込んでます。
■ このスレッドは過去ログ倉庫に格納されています