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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:07:56 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/

287 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 11:28:37 ]
>>286
関数のプロトタイプ宣言がなされていない場合などに、スタックに積まれる内容が違ってくる。

288 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 11:38:10 ]
l -= 2 でいいと思うが、long を明示したい年頃だったんじゃないかね

289 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:33:37 ]
>>284
時代もへったくれも、きちんとロジックを追えれば済むと言っているのだが。
まぁ、対処療法プログラミングを心掛けたいのなら止めはしないが。

290 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:36:17 ]
>>287
for ループの l = l - 2L には関係ない話だね。


>>288
それならそれで、 l -= 2L でいいわけで。

>>286
つーことで、普通はそんな書き方しない。
書いた香具師に聞け。

291 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:48:03 ]
>>289
おいおい。

printfデバッグとデバッガを使うのと、本質的には何も変らないぞ。


292 名前:BjarneStroustrup mailto:sage [2007/10/09(火) 17:08:29 ]
なにこのスレワロタ

293 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:34:24 ]
64bit環境を想定したかったんじゃね

294 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:51:56 ]
そこでユニットテストですよ
ステートメント毎にログ、強制終了等処置方法を細かく選べ
大量のテストを一度に実行できて再利用もできる
これを使わない手はないね☆

>>292
うっさいハゲ!

295 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:48:57 ]
>>286
暗黙のキャストが嫌いなんじゃね?
どっちかっつーと
>fseek(fp, 0, SEEK_SET);
ry
>fseek(fp, 1L, SEEK_CUR);
ここの差が気になる。




296 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:06:16 ]
>>289
× 対処療法
○ 対症療法

297 名前:281 mailto:sage [2007/10/10(水) 21:01:28 ]
アドバイスありがとうございます。
fgetsの返り値は異常ありませんでした。
デバッカ上でステップ実行てどのようにするんですか?

298 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:05:17 ]
環境を書かないと

299 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:44:33 ]
>>297
デバッガ って何だか、わかってる?
ステップ実行 って何だか、わかってる?

いまどきのGUIの開発環境なら、ちょっとマニュアル見ればわかると思う。

300 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:45:30 ]
>>297
なんじゃそら。
プログラム実行したとたん終わるのに、fgetsで入力あんのか?
fgetsで入力待ちしてるの?

「実行したとたん終了する」の状態がさっぱり分からんくなった。

301 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:47:16 ]
すいません質問させてくださいm(_ _)m
RPGとかで誰かがしゃべると文字列が1個ずつ順次に表示されるんですが
あれ半角ならできるんですが、2バイト使用する全角の場合って、char配列2個使うので
解決できません;;

全角文字を配列に格納したり、1個ずつ表示するのってどうすればいいんでしょうか・・・
よろしくお願いします

302 名前:デフォルトの名無しさん [2007/10/10(水) 21:52:09 ]
stringつかっとけ こっちが業界標準

303 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:54:20 ]
マルチバイト使うなら俺はwstringを使うぞ

304 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:55:00 ]
>>301
半角文字のときは1個、全角文字のときは2個分進める。

305 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:01:37 ]
>>302-304
早速の回答、本当にありがとうございますm(__)m
>>304
char配列を2つ使用しているので、この配列2こを利用して表示するというのは
理解しているのですが・・・2個分進めるというのはメモリ操作のことなんでしょうか?

恐ろしく低レベルな質問をしている気がしますが、よろしくお願いいたしますm(__)m




306 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:06:49 ]
ソースを置いておきますm(__)m 連投申し訳ございません

// シーンの描画(テキスト@)
RECT rect = { x, y, 0, 0 }; // 描画領域
Font->DrawText(
Sprite, // 描画に使うスプライト
say, // 文字列
-1,      // 文字数(-1は自動計算)
&rect, // 描画領域
DT_LEFT | DT_NOCLIP,         // 左揃え&クリップしない
D3DXCOLOR(1, 1, 1, a));         // 文字色(R255,G255, B0) aは1で出る

// ここで出力
wsprintf( str,"%s","おはようございます。。" );
font1.print_char((int)x+260,(int)y+50,str);

全角を1こずつ順次だし????

307 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:21:26 ]
それは、半角なら1個ずつ順番に出せるコードなのか?

308 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:39:00 ]
>>300
もともとの質問者は、
相手に分かるように的確に説明する
というスキルが足りないからなぁ。

>>301
お前さんが言ってる「char配列」というのは何者か。
言いたいことは、なんとなくわかるが、
自分で勝手に変な用語を作り出したり使ったりされると、
話が見えにくくなるよ。

309 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:40:56 ]
>>305
面倒くさいからUnicode使え。

310 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:47:51 ]
VC++6.0Proをインストールしたのでサービスパックを当てようとしたんですが、
公式見ると最新の物はVisualStudio6.0のSP6しか見当たりませんでした。
これを当てればVC++6.0にもSP6が当たっている認識でいいんでしょうか?

311 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 23:10:03 ]
>>310
OK。
VS6を買ってVC6しかインストールしない構成もアリだからね。

312 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 23:10:33 ]
>>311
ありがとうございました。

313 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 03:12:06 ]
しばしば、(void)hoge() などと関数呼び出しの前に (void) を付けているのを見かけるのですが、あれは何のメリットがあるのでしょうか?

314 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 03:16:57 ]
>>313
専らLINTを黙らせるために付けている。
要は、値を返す関数の戻り値を利用しないことを明言するわけだ。

315 名前:313 mailto:sage [2007/10/11(木) 03:44:00 ]
>>314
ありがとうございました。



316 名前:デフォルトの名無しさん [2007/10/11(木) 18:54:16 ]
WINDOWS環境で、OS標準でない画像形式をフォルダの縮小版表示で一覧できるようにしたいと思っています。
シェル拡張を利用するdllを用意してやればよいというのはわかったのですが、サンプルがなかなか見つかりません。
MSDN内等によいサンプル等はないでしょうか?


317 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 19:33:08 ]
WindowsSDKのサンプルは漁ってみた?
なければ、
同様のことをやっているオープンソースのフリーウェアを、
SourceForge等で探そう。

318 名前:デフォルトの名無しさん [2007/10/11(木) 22:13:50 ]
WindowsSDKでビットマップ(カラー)の拡大・縮小がやりたいです。
サンプルソースなどがある良きサイトをご存知の方いましたら教えていただきたいのです。

319 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:27:08 ]
>>318
StretchBltで検索

320 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:33:50 ]
Expression Template(ET)の質問です

homepage1.nifty.com/herumi/prog/prog82.html

上記ページのETサンプルプログラム(vect2.h)
と同等の機能を持つETを使用しないコードの
実行速度を比較したところ
ET不使用の方が2倍程度早かったのですが、
どのような場合にETを使えば有効なのでしょうか??

321 名前:デフォルトの名無しさん [2007/10/11(木) 23:39:22 ]
入力パラメータが5つくらいあって、そのパラメータの条件でデータを
検索する関数を作らないといけないのですが、5つのパラメータ毎に
使用フラグがあって、フラグOFFの時は、検索条件になりません。
なので、検索条件としては、最低0個、最大5個になり、検索条件の
組み合わせもいろいろになってしまいます。
作り方としては、どういうやり方が簡単そうでしょうか?
パラメータの組み合わせがいろいろになるので、オーバーロードも
できないかなあ、と悩んでいます。

322 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 00:40:32 ]
>>320
質問の答えにはならないが・・・。

そのWebページで紹介しているノウハウは、
下手な小細工
であるが故に、かえって遅くなったのだと思うよ。

無駄な一時オブジェクトの生成は、
コンパイラの最適化によって端折られるのであれば、
素直にコーディングするのがいいと思うよ。

323 名前:322 mailto:sage [2007/10/12(金) 00:41:14 ]
文章が変だった。

無駄な一時オブジェクトの生成が、コンパイラの最適化によって端折られるのであれば、
素直にコーディングするのがいいと思うよ。

324 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 00:44:45 ]
>>321
その「使用フラグ」を見ながら検索処理するのでは、ダメ?

325 名前:デフォルトの名無しさん [2007/10/12(金) 01:10:18 ]
>>324
ありがとうございます。
お風呂に入って考えてたけど、結局それが一番見通しがいいような
気がしてきた・・・




326 名前:シロートです [2007/10/12(金) 01:41:53 ]
C++言語を使っています。質問です。
4種類の連続した数値のデータがあります。4種類の測定時間や時間間隔は一緒です。
その4種類をひとまとまりとします。そのまとまりがいくつかあります。
それぞれのまとまりから一部分だけを取り出します。その一部分のデータの特徴を
どんどんと集めていき4種類のデータの特性を求めたいです。その方法がわかりません。
すいません。ホントシロートです。質問の意味がわからないかもしれません。
でも本当に困ってます。ヒントだけでもいいのでお願いします。

プログラムが違うのかもしれませんが、
「似たようなデータをどんどん記憶していくことによりそのデータ達の
特性を求める」ということかなと自分では考えたのですがその方法も分かりません。
方法を知っているとかこんなコマンドがあるなど本当に何でもいいのでよろしくお願いします。

327 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 01:55:59 ]
エスパー以外お断りでなければもっと具体的に頼む

328 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 04:18:09 ]
「特性」ってのをもっと具体的に説明しる

329 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 05:01:45 ]
>>326
アルゴリズムの問題だね。
C/C++言語に特有の話ではないので、スレ違い。
さようなら。

330 名前:デフォルトの名無しさん [2007/10/12(金) 05:07:00 ]
      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     | 吉本いるか  
     \            
        ̄ ̄ ̄|/ ̄ ̄ ̄ ̄
                   ∧_∧      / ̄ ̄ ̄ ̄ ̄
         ∧_∧     ( ´Д`)    < 吉本いるか 
         ( ´Д` )   /⌒    ⌒ヽ    \_____
        /,  /   /_/|     へ \
       (ぃ9  |  (ぃ9 ./    /   \ \.∧_∧  / ̄ ̄ ̄ ̄ ̄
        /    /、    /    ./     ヽ ( ´Д` )< 吉本いるか 
       /   ∧_二つ (    /      ∪ ,  /   \_____
       /   /      \ .\\     (ぃ9  |     
      /    \       \ .\\    /    /  ,、  
     /  /~\ \        >  ) )  ./   ∧_二∃  
     /  /   >  )      / //   ./     ̄ ̄ ヽ    
   / ノ    / /      / / /  ._/  /~ ̄ ̄/ /   
  / ./     ( ヽ、     ( ヽ ヽ | /       ( ヽ、     
(   _)      \__つ    \__つ).し          \__つ   


331 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 05:33:44 ]
いるよ

332 名前:シロートです [2007/10/12(金) 08:49:30 ]
みなさん、説明が下手ですいません。
4種類のデータはヘリコプタの制御に使う、スロットル、エルロン、エレベータ、ラダーです。
特性はホバリングをしている時の4種類のデータ入力の特徴を見つけたいです。
よろしくお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 09:01:18 ]
私らはヘリコプタの専門家ではないから、それらのデータの特徴と言われても
何をどうすればいいか判らんのだがね。
もっと具体的に説明はできないもんかね。

334 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 09:49:43 ]
>>332
コンピュータは勝手に思考して適当によろしくやってはくれない。
処理の手順を1つずつ手取り足取りコーディングしてやる必要がある。

まずは、人間が手作業で計算して処理する手順を明らかにすること。
それくらいは自分でやってから、相談してね。

335 名前:デフォルトの名無しさん [2007/10/12(金) 11:40:08 ]
C言語で2次元変数a[4][5]として適当な文字を入れる場合、20文字入れないといけないんですよね?



336 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 11:53:19 ]
何をしたいのかよくわからん。
こういうことか?
char a[4][5] = { "This", "is", "a", "pen" };

337 名前:デフォルトの名無しさん [2007/10/12(金) 12:02:44 ]
vector配列について質問です。
現在、配列に構造体を設定しているのですが、
その構造体の内容を書き換えるとき、以下のようなコードを書いています。

struct DATA data;

data=vec[i];
data.n=5;
vec.push_back(data);

できれば、このようなコードではなく、
vector[i]のところで構造体のアドレスを得るようにして、
メンバを変更したいと思っているのですが、
そのようなことは可能でしょうか。








338 名前:デフォルトの名無しさん [2007/10/12(金) 12:08:00 ]
>>335に追加で
#include<stdio.h>
void main(){
int i,j,a[4][5];
a[0][0]='た';a[0][1]='さ';a[0][2]='か';a[0][3]='あ';
a[1][0]='ち';a[1][1]='し';a[1][2]='き';a[1][3]='い';
a[2][0]='つ';a[2][1]='す';a[2][2]='く';a[2][3]='う';
a[3][0]='て';a[3][1]='せ';a[3][2]='け';a[3][3]='え';
a[4][0]='と';a[4][1]='そ';a[4][2]='こ';a[4][3]='お';
for(i=0;i<4;i++){
for(j=0;j<5;j++){
printf("%d",a[i][j]);
}
printf("\n");
}
}
と入力しても正しく入力できないのですがどうすればいいのでしょうか?

たさかあ
ちしきい
つすくう
てせけえ
とそこお

と表示させたいです。

339 名前:デフォルトの名無しさん [2007/10/12(金) 12:09:08 ]
>>336
そういうことです

340 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:12:17 ]
>>338
ぱっと見、
printf("%d",a[i][j]);
これはおかしい。
%cだよ。

341 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:12:26 ]
>>338
1) printfの書式について調べよう
2) charについて調べてみよう
3) 全角を表示するにはどうしたらいいか調べよう

342 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:14:33 ]
>>340
無駄な指摘乙。

>>337
vec[i].n = 5ではいけないの?
安全にやるなら
vec.at(i).n = 5になるけど。

343 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:15:35 ]
>>337
vec[i].n = 5;

344 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:16:03 ]
そのコードは、
コンテナ内の既存の要素を変更しているのではなく、
コンテナ内の既存の要素をコピーし、少し変更し、新規の要素として末尾に追加しているぞ。

既存の要素を変更するなら、
vec[i].n=5 ;
でいけると思う。

あるいは、明示的に参照を使って、
DATA& data ;
data = vec[i] ;
data.n = 5;
これでもいいね。

345 名前:デフォルトの名無しさん [2007/10/12(金) 12:16:53 ]
>>340
>>341
ありがとうございます。
調べてみます



346 名前:340 mailto:sage [2007/10/12(金) 12:17:32 ]
>>342
あー、%Cの間違い。

処理系によってはサポートしていないかもしれんが。

347 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:21:52 ]
いや、
a[0][0]='た';a[0][1]='さ';a[0][2]='か';a[0][3]='あ';
とかも、
a[0][0]=L'た';a[0][1]=L'さ';a[0][2]=L'か';a[0][3]=L'あ';
にする必要あるな。

348 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 12:22:47 ]
そもそも、int はマズいな。wchar_t だ。

とにかくツケ刃じゃダメだ。

349 名前:デフォルトの名無しさん [2007/10/12(金) 12:39:49 ]
>>347
>>348
ありがとうございます
試してみます

350 名前:337 [2007/10/12(金) 13:24:28 ]
ご指摘ありがとうございます。
vec[i].nできれいにコードを書くことができましたが、
やはり構造体のアドレスを取得する方法が気になっています。
というのも、最終的に行いたいことは、
基底クラスを継承した複数の派生クラスをvetor配列に格納し、
その派生クラスのアドレスを基底クラスで受け取って、
仮想関数を呼び出すという処理をしたいからです。

CData *p;

//ここでvector配列と添字でCDataの派生クラスのアドレスをpで受け取る

p->Draw(); // 受け取った派生クラスの種類を意識せず関数を呼び出す

コードとしては、このようなものをイメージしているのですが、
実装は可能なのでしょうか。
申し訳ありませんが、よろしくお願いします。

351 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 13:25:49 ]
p = &vec[i];

352 名前:351 mailto:sage [2007/10/12(金) 13:29:06 ]
いや、まて。 なにかおかしい。

例えば
class Base{};
class Derived : public Base{};
だとして、
vector<Base> に Derived を入れることは出来ないぞ。
vector<Base*> とすることになるんじゃないか?
だったら
Base *p;
p = vec[i];
だと思うが。

353 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 13:33:12 ]
的確すぎてワロタw

354 名前:337 [2007/10/12(金) 13:52:05 ]
ご指摘ありがとうございます。
つまり、クラスのアドレスをvector配列に格納し、
実体そのものは別に管理するということでしょうか。


355 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 14:15:49 ]
>>337
>実体そのものは別に管理するということでしょうか。
yes.
vector内でのコピーがポインタのコピーで済むから動作が速くなる(可能性もある)し。
余裕があれば(管理者が許せば)boost::shared_ptrとかを検討してみるのもあり。



356 名前:337 mailto:sage [2007/10/12(金) 14:39:49 ]
vector<Base*>で上手くいきました。
ありがとうございました。

357 名前:デフォルトの名無しさん [2007/10/12(金) 14:59:31 ]
動画像からフレームを取り出してフーリエ変換したいのですが
取り出すプログラムが分かりません。
分かる方、教えて頂けると幸いです。

358 名前:デフォルトの名無しさん [2007/10/12(金) 15:01:50 ]
>357
動画像処理したいというなら、ライブラリが限られるけどDirectShowを使いたいのかな?
それならDirectShowフィルタを使うのが現実的で、次がサンプルグラバで1枚づつ画像を取り出すとかになると思う。
むつかしめだけどがんば。


359 名前:357 mailto:sage [2007/10/12(金) 15:23:15 ]
>>358
レスありがとうございます。
秒間20フレーム程度で数秒の動画なのですが
簡単なプログラムで実装出来ないでしょうか?

先生に難しいプログラムでは無いと言われました。
その2つを見てみたのですがこの分野が苦手な自分には
少し難しいです;;

360 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:13:43 ]
>>359
何のために学費払ってんだよ。
先生に聞け、先生に。

361 名前:358 [2007/10/12(金) 16:16:00 ]
fft(高速フーリエ変換)自体は画像処理系の本ではかなりあたりまえにあるコードなので難しいものではないと思うんだけど
動画から画像を取り出すのはwindows標準でライブラリとか存在したかな...。
fftが難しくないのか、動画からフレームごとの画像を取り出すのも含めて難しくないのかちょっと聞いてみて欲しい。
あと、だれかできるだけ楽な、その方法知らないですか?>all

362 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:21:51 ]
20フレームで数秒ってことは、50フレーム前後か。
そこいらの、動画を入力して、ビットマップ画像の羅列を出力するプログラムを使えばいいじゃん。

363 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:47:09 ]
いろいろなデータファイルからデータ抽出して
アルゴリズムに適用して出力結果を出すプログラム作ってんだけど
微妙に値がおかしいんだよね。大方あってるんだけど。

これはデバックでなおるのかな?
150X30くらいのデータを配列にいれて1行ずつ処理してるんだけど
領域破壊とかなってるんでしょうかね。


364 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:57:03 ]
>>363
さぁな、どんなバグがあるかは、デバッグしてみないとな。

365 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:58:47 ]
>>363
テストしたの?

本屋に行って、
「基礎から学ぶソフトウェアテスト」
とかの本を買って読んでみ。



366 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:13:30 ]
おまえらこんな抽象度の高い質問によく答えられるな

367 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:21:50 ]
回答も抽象的だし

368 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:23:55 ]
だってプログラムの概要をいってなんとかしてくれるのかい?
データファイル大量すぎて
説明しようがない

369 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:29:22 ]
4725円のやつですか?
学校で買ったソフトウェア工学じゃ駄目?

370 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:00:39 ]
学生さんか。
じゃぁ、>>365の本は向いてない。

ちゃんとしたレクチャーなんて、ここではできないから、インチキな方法を教えてお茶を濁そう。

メモリの不正アクセスは、検出するためのツールがある。高価なものから無償のものまで。
開発環境は何?

次に、プログラムが意図通り動いていないのであれば、まずはステップ実行して確認してみよう。
案外、あっさりと間違いを見つけられる。

それでもダメなら、すでに確認済のデータを入力し、正しいデータが出力されるか、確認してみよう。
おかしなデータが出力されるようなら、プログラムを部分ごとに個別に、テストデータを与えて、出力が正しいことを確認しよう。


371 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:16:09 ]
cppunitとかunittest++とかboost.testとかライブラリから学ぶのがいいと思うんだぜ
中でもboost.testはbjamと組みあわせて複数のプロジェクトを一括テストとかできるし
make書くのが面倒臭い人にはおすすめ

372 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:28:44 ]
んなものは、反復してテストするレベルに到達してからでいい。

すでにバグがあるらしいということが、わかっているのだから、まずはステップ実行だ。


373 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 01:49:15 ]
データ処理において配列をたくさん使ってプログラムを作るのは
やめておいたほうがいいですか?
グリッドでの計算で二次元配列を2つ使って行っているんです。
30X150行を2つくらい。
領域を使いすぎてはいけないと聞いたんですけど。


374 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 07:53:56 ]
>>373
たったそれだけ?
今時のPCなら問題ないでしょ。

375 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 09:19:25 ]
まーその二次元配列のファイルを2500個処理するんだけどね



376 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:02:24 ]
>>373,375
要は、そのときのメモリ使用量が使用環境において妥当かどうかだ。
30x150x2x2500と考えて、それぞれ4バイトデータとしたら、高々100MiB未満。
全部メモリ上に置いたって何にも問題ないだろ。
# 勿論、Linux@PS3やWinCE、組み込みってことなら話は別だが。

377 名前:デフォルトの名無しさん [2007/10/13(土) 11:13:23 ]
long l1 = 1.2;
long l2 = 3.4;
printf("%f\n", l1 + l2);
これで4.6または4.600のような値を表示したいのですが、どう直したらよいのでしょうか?

378 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:14:58 ]
l1とl2の型をdoubleにする。

379 名前:デフォルトの名無しさん [2007/10/13(土) 11:16:58 ]
long l1 = 1.2;
long l2 = 3.4;
はもしかしたら優秀なコンパイラなら
long l1 = 1;
long l2 = 3;
として解釈するということでしょうか?

380 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:19:57 ]
>>379
いいえ。優秀なコンパイラに限らず、気が違っていない限りそう解釈するはずです。

381 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:20:43 ]
何が優秀なコンパイラなのかは知らないが、
規格上、浮動小数点数を整数に変換する際には、
小数点以下切捨てが行われることになっている。

382 名前:デフォルトの名無しさん [2007/10/13(土) 11:21:14 ]
kzk9.net/column/time.html
の一番上のソースを見たんですが、clock_tはlongですよね。
なのに%10.30fとして小数以下を30桁出そうとしたこの人も
勘違いしているのでしょうか?

383 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 11:40:57 ]
>>376
返答ありがとう。
よくよく考えてみると配列を150X30を30X150にしたり
無駄なことをしてるから
そこらへんを直してみるわ。

384 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:03:23 ]
>>382
clock_tが実際に何型かは実装に依存する。
しかしprintfには、型が判明していなければデータを渡せない。
とりあえずdoubleにキャストすれば、大抵の環境では値が保持される。
俺ならlong longにキャストしたいところだが、long longはまだ標準にないからな…。

385 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:06:10 ]
切捨てに関して便乗で

-4 -3 -2 -1 0 1 2 3 4 ・・・

-2 -2 -1 -1 0 0 1 1 2 ・・・
にしようと思ったのですが

int X=-1;
printf("%d\n",X/2);

が0になります
とりあえずXがマイナスのときを条件分けしましたが
EXCELのINT関数だとすんなりいくので不思議な感じがします
そういうものなんでしょうか?



386 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:07:12 ]
>>382
いいえ、勘違いではなくclock_tがdoubleなどの実数型であるとでも思っているのでしょう。

387 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:08:20 ]
>>382
もとが整数なのに小数で出力しようとするのはナンセンスだが、
doubleにキャストして変換しているので、間違いではないよ。






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

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

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