[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 08:32 / Filesize : 231 KB / Number-of Response : 986
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

スレを勃てるまでもないC/C++の質問はここで 10



1 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:35:36 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
スレを勃てるまでもないC/C++の質問はここで 4
pc11.2ch.net/test/read.cgi/tech/1221633708/
スレを勃てるまでもないC/C++の質問はここで 5
pc11.2ch.net/test/read.cgi/tech/1230516307/
スレを勃てるまでもないC/C++の質問はここで 6
pc11.2ch.net/test/read.cgi/tech/1231564903/
スレを勃てるまでもないC/C++の質問はここで 7
pc11.2ch.net/test/read.cgi/tech/1232983248/
スレを勃てるまでもないC/C++の質問はここで 8
pc12.2ch.net/test/read.cgi/tech/1235921779/
スレを勃てるまでもないC/C++の質問はここで 9
pc12.2ch.net/test/read.cgi/tech/1240022781/

281 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:19:50 ]
>>279

int foo(bool arg1, bool arg2)
{
return arg1 ? 1 : arg2 ? 2: 3;
}


282 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:32:52 ]
static int f[][] = {{3, 2}, {1, 1}};
int foo(bool arg1, bool arg2){
  return f[arg1][arg2];
}

283 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:46:34 ]
static int* f = {3, 2, 1, 1};
int foo(bool arg1, bool arg2){
  ASSERT((!!arg1) == arg1 && (!!arg2) == arg2);
  return f + ((arg1 << 1) | arg2);
}

284 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:47:21 ]
>>279

速くするんだったらinline asmかな
やり方知らんから教えられないけど

285 名前:279 mailto:sage [2009/05/24(日) 18:06:32 ]
>>280
速く動作するように記述したいという意味です。
確かに速記でもするかのような書き方でした。

>>281-283
ありがとうございます。

>>284
ありがとうございます。
一応標準C++だけで書きたいと思っております。


みなさんありがとうございます。
連続質問で申し訳ないのですが、
int bar(bool arg1, bool arg2)
{
if(arg1&&arg2){return 1;}
else if(arg1||arg2){return 2;}
else return 3;
}
でしたらどう記述するのが(動作速度的に)ベストでしょうか?

286 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:11:24 ]
前のもそうだがその程度ならそのまま書くのが一番良いと思う。
特定の環境を想定しないのなら尚更だ。

287 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:12:35 ]
>>286
たしかに、ボトルネックにならないなら素直な書き方が一番ですかね。
ありがとうございました。

288 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:15:00 ]
ここ行けば、そういうの好きな人いっぱい居るぞ。
pc12.2ch.net/test/read.cgi/tech/1226143920/

俺は面倒くさいからパス。

289 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:14:35 ]
数人の身長が記されているtxtファイルを読み込んで、

140 ー 145cm **
145 ー 150cm *
150 ー 155cm **
155 ー 160cm **
160 ー 165cm ****
165 ー 170cm **

の、ようにヒストグラムで出力するプログラムの作り方を教えてください。



290 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:17:07 ]
読み込んで出力すればいいよ

291 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:35:54 ]
>>289
1.テキストファイルを読み込む
2. int配列にそれぞれの範囲の要素を加算していく
3 配列の要素の値の数だけ*を表示する。

順番に作っていけばいい。


292 名前:287 mailto:sage [2009/05/24(日) 21:47:55 ]
>>288
ありがとうございます。
・・・ボトルネックになるようでしたら挑戦してみます。

293 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:49:47 ]
float A[4][21];
でA[2]とA[4]を入れ替える方法教えてください

294 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:56:24 ]
>>293
std::swap(A[2][x],A[4][x])
でxを0〜21まで回せばいいんじゃない?


295 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:58:01 ]
for(int i = 0; i < 21; i++){
float t = A[2][i];
A[2][i] = A[4][i];
A[4][i] = t;
}

296 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:58:36 ]
普通にmemcpy3回じゃない?
ビットスワップでもいいけど

297 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:03:43 ]
どうかなぁ。並列化考えたらmemcpyは不利な気がした。

298 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:09:07 ]
どのデーター量なら>>295が一番早い

299 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:14:08 ]
d 一個一個交換する方法でやってみます

こんな風にしてたんだけど何故か変な値になっちゃうんだよね。
memcpy(B,A[i],sizeof(float)*(n+1));
memcpy(A[i],A[i+j],sizeof(float)*(n+1));
memcpy(A[i+j],B,sizeof(float)*(n+1));



300 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:15:50 ]
A[4][n+1]; B[n+1];としてね

301 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:16:02 ]
クラスの2次元配列を用いるにはどう宣言すればよいでしょうか
具体的には、
class Complex {
public:
double re;//実部
double im;//虚数部
};
という複素数のクラスを用いて行列を作成したいのですが、メインで
#define SIZE 5
int main(){
Complex **comp_mat;
comp_mat = new Complex[SIZE][SIZE];
}
のようにしますと(*)[5]型は**型に変換できませんとエラーが出ます。

どのようにすればいいのかわからないので1次元で宣言して以下のように
アクセスしていました。(comp + i * SIZE + j )の記述がわかりにくいので
簡単にしたいのですが、よろしくお願いします
int main(){
int i , j ;
Complex *comp_mat ;
comp_mat = new Complex[SIZE*SIZE] ;
//compを(-1 , -1)の値で埋める
for( i = 0 ; i < SIZE ; i++ ){
for( j = 0 ; j < SIZE ; j++){
(comp + i * SIZE + j ) ->re = -1.0 ;
(comp + i * SIZE + j ) ->im = -1.0 ;
}
}
・・・・省略・・・・
}

302 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:20:57 ]
>>291
ありがとうございます

303 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:42:23 ]
>>293
std::swap(A[2],A[4])はどう?

304 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:52:58 ]
C++で
fout << "Hello World" << endl ;
などでファイル書き込みができますが、
foutで複数ファイルへの書き込みを区別するにはどうすればいいのでしょうか

FILE *f_eng_p , *f_jpn_p ;
fprintf( f_p , "Hello World ") ;
fprintf( f_s_p , "こんにちは 世界") ;
のようにファイルポインタを2つ宣言してfprintfで行うのでしょうが、
fprintfは記述がめんどくさいのでどなたか知恵をお貸しください

305 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:54:40 ]
すみません、上の f_p と f_s_p は以下の間違いです
FILE *f_eng_p , *f_jpn_p ;
fprintf( f_eng_p , "Hello World ") ;
fprintf( f_jpn_p , "こんにちは 世界") ;

306 名前:294 mailto:sage [2009/05/24(日) 23:04:25 ]
>>303
配列へのポインタだから無理だろ。
だから>>294を提唱するぜ。

307 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:04:51 ]
>>304
出力ストリームを複数持てばいいだけじゃないの?

308 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:15:46 ]
>>303
それだとエラーでちゃいます。swap(A[2][x],A[4][x])の方法で上手くうごきました。
あと、すみませんがもう一つ質問お願いします。

void func(二次元配列を受け取る){
  処理
}

int main(){
  float A[x][y];
  A[0〜x][0〜y]に値を代入;
  func(?);
  return 0;
}

ここで関数funcはA[4][5]でもA[99][99]でもどんな大きさの二次元配列でも
受け取れるようにしたいんですが、関数funcの宣言の引数と、main関数内で
関数funcに渡す引数はどのようにすればいいですか?

309 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:29:22 ]
それは無理なので
std::vector< std::vector< float > >
使っとけ



310 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:33:40 ]
void func(float *a, int m, int n){
 処理
}

int main(){
  float A[x][y];
  A[0〜x][0〜y]に値を代入;
  func((float*)A, x, y);
  return 0;
}


311 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:34:59 ]
ありがとうございます。無理なんですね。どうりで調べてもA[][5]とかしか出てこないわけだ
C言語でしたいのでA[]にしてA[y*x+y]でアクセスすることにします。

312 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:45:01 ]
>>311
前にも同じような質問が出ていましたが、最近のCの規格では

void func (int m, int n, float a[m][n]) { 処理 }

といった書き方ができますよ。mとnは呼び出し側で決められます。

【初心者歓迎】C/C++室 Ver.65【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1239326399/
>>836 あたりからの書き込みにも情報があります。

313 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:57:32 ]
>>312
これは知らなかった。でも、VS2008でやってみたらエラー出て無理だった

314 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:59:01 ]
マイクロソフトはC99シカトしてます。

315 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:04:33 ]
0Xどうするんだろうね。

でも、C++/CLIはもはやC++なのかどうなのかも怪しいw

316 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:19:10 ]
>>314
VS2010でauto、decltype、λ式、右辺値参照、static_assertは取り敢えず入れる
予定だそうだ

それ以上のC++0x対応は今の所未定

317 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:29:27 ]
C++ なんだから配列には vector 使おうよとか
配列の配列をポインタのポインタに置き換えられないことは
大概の教科書で懇切丁寧に説明しているはずなのでもう一度教科書読んでねとか
全力でマクロは避けろ( C++ Coding standards )とか
なぜに FILE 構造体?とか

いろいろ思った^^

318 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:37:58 ]
>>317
その辺りはD&Eを読んでもらえば歴史的経緯がよくわかる

Cは一人、いや二人の人間が独善で作った言語だが
C++はコミュニティに属する数多くの人の意見を元に作られてる

中心人物は禿だったがもはや禿が一人で作ったC++とは絶対に言えまい

319 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:45:46 ]
>>301
動的二次元配列の作成と削除は
Complex **comp_mat = new Complex *[SIZE];
for ( size_t i = 0; i != SIZE; ++i )
comp_mat[i] = new Complex();
for ( size_t i = 0; i != SIZE; ++i )
delete [] comp_mat[i];
delete [] comp_mat;

でも、C++でこんなことしちゃらめ。



320 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:58:46 ]
>>319
なんでダメなの?
俺はよく使ってるぜ
コンストラクタとデストラクタにぶち込んでおけば十分じゃん

vectorを使う事もあるけど少なくとも速度が最大要求の
科学技術計算では>>319の方法をよく使うぞ

321 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:13:03 ]
速度重視ならクラスで包んじゃダメでしょ。

・・・それはさておき、C++のモダンなスタイルは可読性重視になってるからっていう弱い理由。
もちろん、わかって使う分には問題ないよ。


322 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:19:41 ]
「速度が最大要求」ならクラスはおろか関数呼び出しもNGでしょ^^
なにより new と delete 自体が遅い。
memcpy を使うほうが一般的。
どうしても C++ ライクに書きたいなら、せめて allocator クラス使おうよ。


323 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:22:42 ]
memcpy じゃなくて malloc の間違いでした^^スマンコ

324 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:38:26 ]
そもそも速度優先なら、そんなに頻繁にメモリの確保/解放はしない。
どうしてもって言うのなら、自前でメモリ管理する。

325 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:38:35 ]
>>321-322
いや速度重視ならmallocもそのままでは使わないだろ。自前でプールとかしてさ。

326 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:41:30 ]
だな。つか new 遅すぎ。

327 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:45:08 ]
っていうかC++が速くない
Cより5%遅いが開発の指標だったから

328 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:51:20 ]
OCN規制で携帯でしか書けないのが辛いぜ。

329 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:53:35 ]
支援



330 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:56:08 ]
これlj(x)の分子が0になっちゃうんだけど、これで合ってるの?

331 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:56:25 ]
ttp://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%B0%E3%83%A9%E3%83%B3%E3%82%B8%E3%83%A5%E8%A3%9C%E9%96%93

URL忘れてたこれ

332 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 06:04:25 ]
なんか一気にレベル低くなってね?

333 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:36:57 ]
※スレを勃てるまでもない低俗なC/C++の質問はここでお願いします

334 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:27:15 ]
C++で文字列を入力し、そこに指定されていた文字が含まれている場合、そうでない場合に分けて処理を行いたいです。
どう書けばいいでしょうか?
文字列はアルファベットなのですが、
指定するすべての文字についてif,elseifで判別するしかないのでしょうか?

335 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:31:35 ]
>>334
そうだよ

336 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:45:53 ]
>>335
ありがとうございます。

もう一つお願いします。

たとえば、
abddみたいな文字列があって、
先頭の1文字づつ判別していきたいです。つまり、
1回目の処理はaについて、
2回目の処理はbについて・・・
のような感じです。
どう考えればいいでしょうか?

337 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:29:58 ]
何をどう判別するのかわからん。
具体的な入力例と、期待される結果を示してくれ。

338 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:45:19 ]
>>337
アルファベットと書きましたが、半角英数すべてで、
accaと入力したとすれば

aが1個存在するので coutで1と出力
cが2個存在するので coutで2と出力
aが1個存在するので coutで1と出力
みたいな感じです。

よろしくお願いします。

339 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:03:30 ]
#include <iostream>
#include <string>
using namespace std;
int main(){
    int n = 0;
    string s;
    cin >> s;
    for(int i=0; i<s.size(); i++){
        n++;
        if(s[i]==s[i+1]) continue;
        cout << n << endl;
        n = 0;
    }
    return 0;
}



340 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:40:58 ]
ファイル操作にはいろいろとエラーチェック用のメソッドが用意されてますが、例外機構をつかわない理由はあるのでしょうか?

341 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:11:06 ]
例外を使いたくない環境ってのが結構あるからかも

342 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:31:02 ]
C言語そのものの質問とはちょっと違うのですが#ifdef,#ifndefに対応する#endifを見つけて、
どれとどれが対応しているかのコメントを追加するようなツールは無いでしょうか?


//////////入力///////////
#if AAA
...
#if BBB
...
#endif
...
#endif

///////////出力///////////
#if AAA
...
#if BBB
...
#endif //BBB
...
#endif // AAA


343 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:16:37 ]
>>342
知らないなぁ。

俺は大抵はコメントを毎回記載しちゃう派だし。
あるいはエディタの機能で対応する#〜に飛んだりするし。

良い課題として作ってみてよ。
そして是非とも公開してくれ!

344 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:04:28 ]
charで配列の要素数を変数にしています。
cinで入力後、この要素数の最大値を調べたいのですがどうしたらいいでしょうか?

345 名前:馬牛 [2009/05/27(水) 17:14:21 ]
C++です。
a=10,b=3,c=2として、!aかつb>cの戻り値、!aまたはb>cの戻り値はそれぞれどうなりますか?
よろしくです。

346 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:15:56 ]
felse true

347 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:33:15 ]
18時まで引っ張ろうぜw

348 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:44:52 ]
>>345
君は、C++をやる前に離散数学を勉強することをお薦めする。

>>347
どこの誤爆だ

349 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:46:29 ]
pc12.2ch.net/test/read.cgi/tech/1242655611/346
これだろ



350 名前:デフォルトの名無しさん [2009/05/27(水) 18:03:03 ]
https通信をOSによらずに行いたいと思っているのだが、手の込んだことするのは
面倒になりcurl.exeを呼び出すことで解決することにした。
先頭の10KBとかは読めないと思っていたら対応していた。

351 名前:デフォルトの名無しさん [2009/05/27(水) 21:26:13 ]
main{

func1();

}


func1{
char array[100];
array[1] = 10;

func2();

}

func2{

char sum[10];

sum[0] = array[1];
}

このようにプログラムする場合、func2にてarray[1]をセットする場合、
グローバル宣言するしかないのでしょうか?

できれば、main内でfunc1が終了した時点でarrayで使用していた変数を消滅させたいのです。
メモリ使用量を少なくする意味で

352 名前:デフォルトの名無しさん [2009/05/27(水) 21:29:16 ]
func2(array[1] );

353 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:31:49 ]
>>350
何のことを言っているのだい?
curl.exeはWindows専用ではないのかい?

354 名前:デフォルトの名無しさん [2009/05/27(水) 21:36:15 ]
>>352

func1{
char array[100];
array[1] = 10;
array[2] = 5;

func2();

}
func2{

char sum[10];

sum[0] = array[1];
sum[1] = array[2];
}

こうだった場合は、func2();
の中は何になるのでしょうか?

355 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:39:11 ]
>>354
参考書とにらめっこしてこい。 コードの書き方からしてお前は根本的に理解できていない。

356 名前:デフォルトの名無しさん [2009/05/27(水) 21:48:55 ]
すみませんお願いします

357 名前:デフォルトの名無しさん [2009/05/27(水) 21:50:33 ]
353
SYSTEMの中身を対応するのに変える MACでもUNIXでもあるはず
curl.hの使い方がわかればいいんだけど、メモリやファイルに読み書きするのに
専用の関数を用意しなければならず難しかった。
それなら直接exeを動かしたら簡明と思った。

358 名前:デフォルトの名無しさん [2009/05/27(水) 21:51:13 ]
func2(array);

359 名前:353 mailto:sage [2009/05/27(水) 22:57:24 ]
>>357
UNIX系でも〜.exeって名前なの?




360 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:59:06 ]
>>354
お前ふざけてんの?
何言ってるの?
スレタイ読めよ、ここはC/C++の質問部屋だぞ!!
そんな謎の言語は知りません!


361 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:25:31 ]
質問します。

Windows環境で、とあるC++用ライブラリ hoge.lib があります。
このライブラリには、関数を呼び出すためのヘッダファイル hoge.h が用意されていますが、
実際のソースは提供されていないものとします。
また、ライブラリ内部だけで使われている関数は、hoge.h には記述されていないようです。

さて、このライブラリには名前空間は設定されていません。
そのままでは使いにくいので、Hoge::〜 という名前でライブラリの関数を呼び出せたら便利だと思いました。

この状況(*.h と *.lib のみ)で、ライブラリの関数に名前空間をセットすることは可能でしょうか?


362 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 06:25:28 ]
>>361
君がhoge_ns.hとかいうヘッダを自作して、
hoge_ns.hでは
namespace Hoge
{
inline int bar(int x)
{
return bar(x);//hoge.hの。
}

//...etc
}
のようにラップしたらだめかな?

363 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 06:30:49 ]
c/c++で仕事している人たちに質問です。
基本情報技術者試験って、最低限必要な資格ですか?

364 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 07:01:46 ]
5000円程度で取れるんだから、とっとけ。

365 名前:デフォルトの名無しさん [2009/05/28(木) 07:09:15 ]
生産性と資格には関連はないだろ。
未経験なら持っていたら考慮されるとか一時金や給料がすこしだけ良くなるとかだろう。

366 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 07:18:18 ]
>362
ありがとうございます。
諦める決心がつきそうです。

367 名前:デフォルトの名無しさん [2009/05/28(木) 07:29:43 ]
webページを解析したいのですが、HTMLを整形済みXMLに変換するライブラリはありますか

368 名前:デフォルトの名無しさん [2009/05/28(木) 07:57:22 ]
自己解決しました。 
HTMLのパーサーがあるみたいでそっちのします。

369 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:06:12 ]
くわしく



370 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 10:32:40 ]
>>366
C用のライブラリだったら
namespace hoge {
extern "C" {
#include "hoge.h"
}
}
である程度ごまかせるんだけどな。

それにusing hoge::hogedata_t
とか#pragma comment(lib)とかも使って。

371 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 17:29:11 ]
fstream& getLogFile() {
static fstream logFile;
return logFile;
}
として、非局所的なオブジェクトのコンストラクタ内でもログを取れる用にしたんですけど、
logFileの破壊と非局所的なオブジェクトの破壊はどちらが先に起こるか決まってるんですか?
非局所オブジェクトの破壊時にもログをとるのに使えるのか知りたいので。

372 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:02:56 ]
フーリエ級数展開をするプログラム を作ったんだけど異常値しか出ないのでどこが悪いか教えてください
↓のプログラムの場合はf(x)=x [xが0-5] , 0 [xが5-10] で波長が10でループするような式
//最初にxの値を入力してから
hani_suu = 2;//範囲の数
hani[0]=0.0; hani[1]=5.0; hani[2]=10.0; //(0〜5),(5〜10)という意味

double temp=0,temp_cos,temp_sin;

for(int j=0;j<hani_suu ;j++)//以下a0の計算
for(double i = hani[j];i<hani[j+1];i+=0.1)temp += 0.1 * kansuu(i,j);//積分計算   ※kansuu(i,j)はjが0のときf(x)=x,1のときf(x)=0を返す

for(int n=1;n<50;n++)//以下an,bnの計算 
{
temp_cos=0; temp_sin=0;

for(int j=0;j<hani_suu;j++)
for(double i = hani[j];i<hani[j+1];i+=0.1) //積分計算
{
temp_sin+= 0.1 * kansuu(i,j)*sin((2.0*PI*i*n)/10);
temp_cos+= 0.1 * kansuu(i,j)*cos((2.0*PI*i*n)/10);
}

cos_v[n] = temp_cos; //an
sin_v[n] = temp_sin;//bn
}

temp = temp/2.0; //以下a0+Σ(ancos+bnsin)
for(int n=1;n<50;n++)
temp = temp + cos_v[n] * cos((2.0* PI * n * x )/10) + sin_v[n] * sin((2.0* PI * n * x )/10);
//最終的なtempが答え
見にくいですがお願いします

373 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:05:24 ]
勉強用に、シンプルな多倍長加算を作ってるのですが
もっとシンプルに出来ますでしょうか
効率は意識していません

string add(string l,string r){
int carry=0;
stringstream ss;
if(l.size()>r.size()){swap(l,r);}
reverse(l.begin(),l.end());
reverse(r.begin(),r.end());
int i=0;
for(;i<l.size();++i){
unsigned int tmp=(l[i]-'0')+(r[i]-'0')+carry;
if(tmp/10){carry=1;}else{carry=0;}
tmp%=10;
ss<<tmp;
}
for(int j=i;j<r.size();++j){
unsigned int tmp=r[i]-'0'+carry;
if(tmp/10){carry=1;}else{carry=0;}
tmp%=10;
ss<<tmp;
}
if(carry){ss<<'1';}
string ret=ss.str();
reverse(ret.begin(),ret.end());
return ret;
}

374 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:40:36 ]
>>372
感覚で読むとfor ( ; i<hani[j+1]; )が臭うコードに見える。

>>373
C++は、よくわからないが、やりたいことはなんとなく伝わる。
for()は、二つに分ける必要があったのかな。
似たようなことをしているから、for()のなかで、if()するようなコードが浮かびそう。
引数を参照にしたり、const char *foo = bar.c_str()で添字アクセスとか
ただの高速化だけど。

375 名前:デフォルトの名無しさん [2009/05/28(木) 20:17:36 ]
ヘッダファイルでプログラムソースファイルを分割することができますが
ヘッダファイルも分割する方法があったら教えて下さい

376 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:20:20 ]
ヘッダファイルはいくらでも分割できます。

377 名前:デフォルトの名無しさん [2009/05/28(木) 20:38:31 ]
VC++2008を使ってるのですが
自動修復情報の保存ってのが左下にでてしょっちゅう重いです
なんですかこれ

378 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:59:40 ]
事故解決
ttp://blog.goo.ne.jp/field_light/e/491cb15fde3d807c3d7a235f0a86eebb

379 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 21:38:47 ]
実際の数学みたいにxを数字にせずxとして計算するにはどうしたらいいですか?
例えば2x*3x=6x^2みたいな感じで計算して、あとで6x^2のxに色々な数字を代入
できるようにしたいんですが



380 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 21:54:57 ]
関数電卓のソースを探して見てみよう!

381 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 22:08:34 ]
ある関数内でnewして得たアドレスを返り値にして
それを外で受け取ったらそのまま、受け取らなかったらdeleteする
みたいな記述はどうやったらできますか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<231KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef