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


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

【初心者歓迎】C/C++室 Ver.59【環境依存OK】



1 名前:デフォルトの名無しさん [2008/09/06(土) 22:45:12 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。

【前スレ】
【初心者歓迎】C/C++室 Ver.58【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1218023777/

【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

◆ソースのインデントについて
半角やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのが最も良いですが、
直接貼るのであれば、全角空白か に置換しておくことをお勧めします。

331 名前:デフォルトの名無しさん [2008/09/18(木) 14:18:48 ]
mbstowcsという関数のバグと思います。 
これはなんの変換もしていないみたいです。
BCC2009です。

332 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 14:19:29 ]
ロケール設定してないからだろ

333 名前:デフォルトの名無しさん [2008/09/18(木) 14:28:55 ]
いい状態になりました

#include <iostream>
#include <locale.h>
using namespace std;

main(){
setlocale(LC_ALL, "japanese");
unsigned char a[]="Aあ"; wchar_t b[10];

printf("a[] no size = %d\n",strlen(a));
for(int n=0;a[n]!=0;n++) printf("%d ",a[n]);
mbstowcs(b,a,strlen(a)+1);
printf("\n\nb[] no size = %d\n",wcslen(b));
for(int n=0;b[n]!=0;n++) printf("%d ",b[n]);
}

334 名前:デフォルトの名無しさん [2008/09/18(木) 16:43:57 ]
while(true) {
 for(int i=0; i < 10; i++)
  ;
}

上のやつってwhileが回っている間int型の変数分のメモリをどんどん食っていく?
開放せん?

335 名前:デフォルトの名無しさん [2008/09/18(木) 16:46:52 ]
ローカル変数は有効範囲をすぎると無くなります

336 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 16:48:58 ]
ファイルを指定すると更新日を表示するプログラム。
VCで動いてたコードをBCCに持ってきたら動かない現象が発生しました。
_fstatで0が返ってくるのに中身がちゃんと入ってないみたいです。
up01.ayame.jp/up/download/1221723883.c

あれこれ弄ってみたけどうまくいかないorz

337 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:45:00 ]
>>336
先頭にアンダーラインが付いてる関数は基本的に移植性がない。
BCCではPOSIX準拠の fstat() を代わりに提供している。

www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html

338 名前:デフォルトの名無しさん [2008/09/18(木) 17:50:16 ]
コンパイラ限定の命令は使わないようにしよう
WinならAPIでいいだろう
無理なら、boostとかから探すとか

339 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:55:29 ]
BCC って SEH の __try と __finary を実装しているのだろうか?
まず表面化することないだろうけどね Win32例外



340 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 18:03:06 ]
>>339
__tryは実装していない。__finallyのみ実装しているが
これは__tryに対応するものではない。

341 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 18:07:07 ]
>>340
ありがとー
WinAPI だからといって必ずしも全て利用可能ではない ってことか
ま、SEHはかなり特殊だから仕方ない部分ではあるな

342 名前:336 mailto:sage [2008/09/18(木) 18:22:33 ]
>>337,338
stract _stat → stract stat
_fstat() → fstat()
に変更したらBCCでも問題なく動きました。ありがとうございます。
本業はマイコン/ラダー屋なのもあって、こういった部分はあまり気にする機会がなく勉強になりました。

Boost覗いてみました。
C++はBCBでも殆どC記述で組むような状態でオブジェクト指向が身についてないので
サンプルを見ながら少しずつ導入していこうと思います。

343 名前:デフォルトの名無しさん [2008/09/18(木) 19:12:50 ]
インクルードについて教えてください。

あるサンプルソースコードを入手して、
~~.slnを実行して、デバッグしたら動きました。

ファイル入出力をしようと思って、
メイン関数が書いてある.cファイルで#include <iostream>とすると、
1>c:\program files\microsoft visual studio 8\vc\include\cstdio(35) : error C2059: 構文エラー : ':'
1>c:\program files\microsoft visual studio 8\vc\include\cstdio(36) : error C2143: 構文エラー : '{' が ':' の前にありません。
が大量に出てきてしまいました。

インクルードしただけです。
何がいけなかったのでしょうか?

344 名前:デフォルトの名無しさん [2008/09/18(木) 19:16:53 ]
cppにする

345 名前:345 [2008/09/18(木) 19:32:12 ]
344さん、ありがとうございます。解決しました。

346 名前:デフォルトの名無しさん [2008/09/18(木) 20:55:40 ]
親クラス
┣親クラス及び全ての子クラスで使うデバッグ用クラス
┣子クラス
┣子クラス

・以下略

┗子クラス
 ┗子クラス
という構成なんですが、子クラスがデバッグクラスにアクセスする、定石のような方法ってどういうのがありますか?
今自分がやっているやり方は、子クラスをnewで作成した後に、デバッグクラスのポインタをchildcls->SetDebugCls( cls )みたいな感じで渡しています。
しかしそれだと、全ての子クラスにセットしなくてはならず、非常に手間がかかっています。
実際はデバッグクラス以外にも、全ての子クラスで使いたいクラスが数個あります。
良い方法があったら教えてください

347 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:13:31 ]
単一のデバッグクラスのインスタンスを子クラスで共有するの?

348 名前:346 mailto:sage [2008/09/18(木) 21:25:09 ]
>>347
はい。全ての子クラスで1つのデバッグクラスを操作したいのです。
デバッグでそれぞれのクラスのデータを集計し、統計のようなものを出したいデバッグクラスなので、単一の方向でお願いします。

349 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:32:10 ]
基底クラスのインナークラスとしてデバッグクラスを記述して、
基底クラスがそのデバッグクラスを包含するのじゃ駄目なの?



350 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 22:39:51 ]
デバッグクラスをグローバルにすればいいだけじゃないの?
それかシングルトン

351 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 22:58:27 ]
俺もグローバルで良いと思うけど。

まぁグローバル変数が嫌なら、
デバッグクラスかそれへのポインタの
staticなメンバ変数でも用意すれば良いんじゃね?

352 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:12:31 ]
流れが分からん
デバッグクラスが派生クラスにかかわらず単一なのは分かった
そのインスタンスは1個だけ?
それとも各インスタンスにつき1個ずつ?

いずれにしてもデバッグクラスを基底クラスの内部クラスとして定義して、
基底クラスの通常のメンバなり、静的メンバなりにそのデバッグクラスのインスタンスを持たせればいいと思うが

353 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 23:27:15 ]
親クラスにstaticで持たせるのが正解の気がする
まだエスパー歴が浅いから間違ってるかもしれんが

354 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:36:34 ]
文字の上下4ビットを入れ替える関数(RevChr)を作成しなさい。
ただし、RevChr関数の命令は1行で書かなくてはいけません。←ここ重要!
できた人から、提出するように。

って問題だされたんだけど。

355 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:43:55 ]
>>354
強引にやってみた。アホだ、俺。
(char>>4 + char<<4)

356 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 01:42:15 ]
優先順位・・・

357 名前:デフォルトの名無しさん [2008/09/19(金) 02:28:18 ]
319だけど、wcharをcharに変換する速度は、

WideCharToMultiByte 250ms
wcstombs 1720ms
あらかじめ計算しておいた配列を使う 2170ms

となって圧倒的にwinAPIが速かったです。 前にローケル設定しなくてwcstombsが速いとか間違えを書きました。

358 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 03:58:49 ]
>>309
その後、実際につかう数字で計算してみたところ、3次の項までは必要となりました。
しかし、logで計算するより5倍は速いので助かりました。

359 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:39:44 ]
for_each を使って、int型の配列 v の集計をしなさいという問題なので、

class sum
{
 int total;
public:
 sum() : total(0) { }
 void operator()(int i)
 { total += i; }
 int get()
 { return total; }
};

sum s;
s = for_each(v.begin(), v.end(), s);

としたのですが、代入しなければならないことが気に入りません。

for_each<vector<int>::iterator, sum&>
  (v.begin(), v.end(), s)

とすれば出来たのですが、やっぱり何か違う気がします。
何かいい表現方法は無いでしょうか?



360 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 10:23:41 ]
std::for_each(v.begin(), v.end(), std::bind1st(std::mem_fun(&sum::operator ()), &s));

なんで代入したくないのか知らんが、↓のように書いたほうがシンプルでいいと思うけど。
sum s = for_each(v.begin(), v.end(), sum());

361 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 11:01:51 ]
なんでsumを使うか知らないが、↓のように書いたほうがスンプルでいいと思うけど。
int sum = std::accumulate(v.begin(), v.end(), 0, std::plus<int>());

362 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 11:28:36 ]
>for_each を使って、int型の配列 v の集計をしなさいという問題なので、

363 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 11:30:31 ]
>>361
for_each を使って、集計をしなさい

364 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 11:37:37 ]
そうですかごめんなさい早漏にて候

365 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 11:51:24 ]
>>359
TR1を使えば以下のようにできる。

std::for_each(v.begin(), v.end(), std::tr1::ref(s) ) ;

ただし、sumを次のように変更する必要がある。

class sum
{
public :
  typedef void result_type ;//ネストされたresult_typeという型で、関数オブジェクトの戻り値の型を表す
//省略
} ;

あるいは、unary_functionを継承すること。

366 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 12:02:09 ]
VC2008でマリオもどきを作ろうとしてるんですが、↓のソース(関係無さそうなメソッドとかは省略してます)をコンパイルすると
>v:\projects\mario\player.cpp(8) : error C2511: 'Player::Player(int,int,pleyer_type)' : オーバーロードされたメンバ関数が 'Player' にありません。
> v:\projects\mario\player.h(8) : 'Player' の宣言を確認してください。
となります。どこがおかしいのでしょうか?(見づらい質問でごめんなさい)
//Player.h
#include "Characters.h"
class Player : public Characters{
private:
    enum player_type ptype;
public:
    Player(void);
    Player(int x,int y,enum player_type type);
};
//Player.cpp
#include "Player.h"
Player::Player(void){
    this->x = 1;
    this->y = 1;
    this->ptype = PTYPE_NOM;
}
Player::Player(int x,int y,enum pleyer_type type){
    this->x = x;
    this->y = y;
    this->ptype = type;
}
//Characters.h
class Characters{
    enum char_type ctype;
public:
    Characters(void);
    Characters(int x,int y,enum char_type cp);
};

367 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 12:12:44 ]
>>366
× pleyer_type
○ player_type
ってことだと思うよ

368 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 12:15:56 ]
……死にたいorz
宣言と定義が違うって事だったんですか、回答有り難うございました

369 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 12:33:35 ]
>>359
int s = for_each(v.begin(),v.end(),sum()).get();



370 名前:359 mailto:sage [2008/09/19(金) 12:41:58 ]
みなさん、ありがとうございました。

>>365
いいと思い、(自分の処理系ではTR1が使えないので)boost::refでやってみたら、
> error C2064: 1 引数を取り込む関数には評価されません。
と出て、ダメでした。

TR1とboostはほとんど一緒と聞いていたのに残念でした。


371 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 13:01:28 ]
>>370
TR1は、確かにBoostを念頭においているとはいえ、より考えられている。
というのも、Boostは単にreference_wrapperで包んでいるに過ぎないので、
このままでは関数オブジェクトとして、operator ()を適用できない。

そこで、TR1では、メタプログラミングを駆使して、単項か二項として呼べるようになっている。

372 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 13:22:41 ]
この出力は0になります。STLの新規のresizeは常に初期化されますか?

vector<int> r;
r.push_back(1);
r.push_back(2);
r.resize(1);
r.resize(2);
cout<<r[1];

373 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 13:29:32 ]
されます

374 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 13:47:28 ]
dクスです

375 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 15:54:53 ]
これでどんな環境でも、メモリは解放されますか? 
クラス側で解放処理をしなくても、STLを使っている範囲(newは使わない)では自動開放されますか?

class A{ public:vector<char> x; A(){x.resize(10000000);}};

main(){
map<string,string> w;
w["hage"].resize(10000000);
cout<<"enterを押すとstringのメモリを解放します。 ";
getchar(); w.erase("hage");
cout<<"メモリは解放されましたか。 "; getchar();

map<string,A> z;
z["piza"].x[0];
cout<<"enterを押すとクラスのメモリを解放します。 ";
getchar(); z.erase("piza");
cout<<"メモリは解放されましたか。 "; getchar(); }

376 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 16:01:47 ]
STLのメモリ解放は変な点がありますから心配です。
というのも、vectorでclear();使っても全く解放できないからです。swapしかないので。

377 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 16:10:25 ]
ブロックでくくれば抜けたとき解放されるだろ

378 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 16:11:03 ]
何も変な点なんてねぇよ。
clearやresizeでメモリを解放する必要などない。

379 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 16:13:50 ]
MinGW3.4.5を使っているのですが、
list<vector<int> > l;
vector<int> v(10,0);
l.push_back(v);
とすると、
stl_list.h:435: warning: '__p' might be used uninitialized in this function
という警告が出ます。
l.insert(l.end(),v);
とすれば警告は出ないのですが、何が問題となっているのでしょうか?



380 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:51:32 ]
>>376
効率を上げるために、開放されないよ。
clearするってことは、次に直ぐ追加される可能性があるかもしれないってことで、バッファっは保持されるんだ。



381 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:39:19 ]
AUX
CON
NUL
PRN
をファイル名に使うとバグりますか?

382 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:43:25 ]
バグるかもしれないし、バグら無いかもしれない

383 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:45:05 ]
DOSの予約デバイス名が入っていたときに処理がおかしくなる代表例を教えてください。
WindowsXP以上でAPIを使ったときバグりますか?

384 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:47:45 ]
うちのパソコンだと、AUXを名前に含めても、エラーが出ずに
エクスプローラーで書き換えられます。 問題出ますか?

385 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:04:12 ]
一意的な絶対パスに変換する方法教えてください。 
下のpはパスとして正常なんですけど・・・
これを変換する関数は無いですか?

char p[]="C:\\hoge_hoge\\..\\windows\\Notepad.exe";
system(p); //パスが有効か?
char q[300];

GetLongPathName(p, q, 300);
wcout<<p<<"\n->\n";
wcout<<q<<endl;


386 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:20:50 ]
自己解決しました

char p[]="C:\\////\\hoge_hoge\\..\\windows\\Notepad.exe";
char q[300];
GetFullPathName(p, 300, q, NULL);
printf("%s\n", q);


387 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 20:34:56 ]
すみません。 wchar_t型配列に、世界各国語と英字の大文字・小文字が入っているとき
大文字を小文字に変換するにはどうしたら良いでしょうか?

388 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 20:47:41 ]
towlower

389 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:00:05 ]
すみません。このようにしたいんです。

中国語・・・ABCDF・・・中国語 
→中国語・・・abcde・・・中国語

ロシア語・・・FUNCTION・・・ロシア語
→ロシア語・・・function・・・ロシア語



390 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:02:36 ]
何語でも出来ますか??


towlower() の動作は、現在のロケールの LC_CTYPE カテゴリに依存する。

この関数を Unicode 文字に対して使うのはあまり適切でない。なぜなら、
Unicode には大文字(upper case)・小文字(lower case)・タイトル文字(title
case) という 3 つの "case" が含まれているからである。
manpages.ubuntu.com/manpages/feisty/ja/man3/towlower.html

391 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:36:50 ]
こんな感じ?

wchar_t
us_tolower(wchar_t c)
{
if(c<='A' && c>='Z')
{
c=c-'A'+'a';
}
return c;
}



392 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:45:26 ]
unicodeて、どのOS、コンパイラでもアルファベットはASCIIと同じですか?

393 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:47:34 ]
何?

394 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:48:44 ]
>>391
なんか怪しいけど、せめてLを・・・

395 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:50:59 ]
たまにはEBCDICも思い出してね

396 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:52:47 ]
コンパイルした環境に依存しないで、たとえば日本のVC++でコンパイルして、
ロシアや中国でも小文字になりますか?

397 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:55:51 ]
BCCでコンパイル中に任意のメッセージ書き出せるマクロみたいのってないよね?

398 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 21:59:15 ]
GetUserDefaultLCID

LCMapString
でやってみます。

399 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:19:19 ]
intel c++はisostream入っていませんか?



400 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:38:34 ]
日本語体験版だと入ってないのかな?
なんかヘッダが足らないみたいです
インストールの失敗?
英語体験版をいれて日本語で上書きしたらいいかな?

401 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:50:42 ]
わかりました。VC++2008との統合が失敗してたのですがそれが原因みたいです。

wikiより。

実行に必要なライブラリやリンカなどは付属していないため、他のコンパイラの環境に寄生した形で実行される。
WindowsではMicrosoft Visual Studioが、LinuxではGCCが必要である。

402 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:52:46 ]
isostream?

403 名前:デフォルトの名無しさん [2008/09/20(土) 17:52:54 ]
あるところからC++のソースコードをダウンロードして、
そのフォルダの中のsample.vcprojというのを実行すると、
VisualStadioが起動しました。
サンプルコードのはずなので、F5を押して実行すると、

「シンボル情報がありません:firefox.exeのデバッグ情報が見つからないか、
または一致しません。シンボルが読み込まれていません」

というウィンドウが表示されました。どうすればよいでしょうか?

404 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 17:57:33 ]
あるところって、どこ?

405 名前:403 [2008/09/20(土) 18:10:55 ]
404さん

www.cs.umd.edu/~mount/ANN/
からann_1.1.1.zipをダウンロードして、
MS_Win32→sample→sample.vcprojを実行しました。

406 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 18:29:16 ]
プロジェクトの構成がReleaseになってるだけじゃないの?
Ctrl+F5とかで実行したら?

407 名前:403 [2008/09/20(土) 18:36:34 ]
406さん

プロジェクトの構成はDebugでした。
Ctrl+F5とすると、Firefoxが新しく起動しました。

プロジェクトの構成をReleaseにしてみて、
F5を押すと「デバッグセッションの実行可能ファイル」というウィンドウが出てきて、
「実行可能ファイル名」を選ばされました。
よく分からず、既定のWebブラウザを選んで実行しました。
それを過去にもやったため、Firefoxが動いているんだと思います。

「デバッグセッションの実行可能ファイル名」を何にすればよかったのでしょうか?

408 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 19:08:56 ]
1回かたの消しちまって、めんどくさくなった。

>>407
落としたけど、スタートアッププロジェクトがdllになってない?
samleをスタートアッププロジェクトに設定しないと、VSからは起動できない。

あと、sampleをビルドして出来るのは、コマンドラインアプリだったので、
F5実行だと、DOS窓が一瞬出てすぐ消えた。

デバッグセッションの実行可能ファイル名で解決したいなら、
「展開したフォルダ\ann_1.1.1\MS_Win32\bin\ann_sample.exe」
じゃないかね

409 名前:403 [2008/09/20(土) 19:54:14 ]
408さん

F5実行で、DOS窓が一瞬出てすぐ消えた、ところまではできました。
「引数無しで実行」したときはエラーになるようなので、
コマンド引数に「-df data.pts -qf query.pts」と設定して
実行してみました。すると「cannot open data file」と表示されました。
すこし前進したようです。
あとはどうやってファイルを開くのか試行錯誤しているところです。

query.ptsというのは点のデータだと思います。
Test dataフォルダには「data_pts」がありますがちょっと違う。
これを読めばいいのか、または別のところにデータがあるのか。。。




410 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:12:01 ]
test1-data.pts,test1-query.pts,test2-data.pts,test2-query.pts
ってのがあるみたいだけど

411 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:13:07 ]
俺が落としたヤツだと「ann_1.1.1\test\」の下に
test1-data.ptsとtest1-query.ptsってのが転がってたんで、
それを「ann_1.1.1\MS_Win32\bin\」の下にコピってからDOS窓で

ann_sample.exe -df test1-data.pts -qf test1-query.pts

って打ったら動いたけど。

VCからだとカレントフォルダ分かりづらいから
別にDOS窓起動した方が良いんじゃない?
引数の設定にフルパスで書いても良いと思うけど。

まぁそろそろ飽きたんで引っ込む。

412 名前:403 [2008/09/20(土) 20:16:28 ]
411さん

長いことありがとうございました。
後は自分で進んでみます。


413 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:41:25 ]
逆アセンブラしてCのソースに貼り付けたら、動かせますか?
コマンドラインの引数を、関数の引数に変換できますか

414 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:44:13 ]
>逆アセンブラしてCのソースに貼り付けたら、動かせますか?
そのまま貼り付けてコンパイルしたら動かないね
いやそも逆アセンブラするってなんだよって話だが

>コマンドラインの引数を、関数の引数に変換できますか
main関数の引数になります


415 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:50:17 ]
DOSプロンプトで動くツールで、ソースが無いものをパクリたいのですが・・
できないですか?

test.exe ファイル名 > 出力名
というツールを

char * test(char *ch){ アセンブラ }
という関数に出来ませんか

416 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 20:57:14 ]
無理?

417 名前:デフォルトの名無しさん [2008/09/20(土) 20:59:24 ]
普通に通信して連携すれば?

418 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 21:00:36 ]
速度はひとつにした方が速いと思うんですが

419 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 22:12:24 ]
>>415
関数が export されていて、インターフェイスが公開されているなら簡単にできるが、それ以外だと面倒
グローバル変数を使ってたりしたら「自作のほうが楽じゃね?」ってなるかもw



420 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 02:22:25 ]
すみません
こういうツールの作り方教えてください 
圧縮ファイルをすべてのアプリに対してフォルダと認識させる方法です
wINDOWSエクスプローラのみなら昔からできたのですが


Zipファイルをマウントする?「Pismo File Mount Audit Package」
www.moongift.jp/2008/07/pismo_file_mount_audit_package/

421 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 03:16:01 ]
#include <stdio.h>
#include<math.h>

double simpson(double, double, double, double);
double func(double);

int main(void){
/* 必要な変数の定義をする */

double h,xkisu,xguu,s0,s1,s2,ans,x1,x2,n,x0,i;

scanf("%lf", &x1);
scanf("%lf", &x2);

printf("x1 = %f\n",x1);
printf("x2 = %f\n",x2);

/* 偶数の分割数を入力するまで繰り返す */
do{
scanf("%lf", &n);
printf("n = %f\n",n);
if ((n%2) != 0){
printf("!! Bunkatsu su ha gu-su- desu !!\n");
} else break;
} while (n%2!=0);


422 名前:421 mailto:sage [2008/09/21(日) 03:17:12 ]
すみません、みすって投稿してしましました。
上のは途中までのプログラムなのですが
コンパイルすると
22: 浮動小数点の不正な使用(関数 main )
25: 浮動小数点の不正な使用(関数 main ) とでます。
なぜでしょうか?

423 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 03:33:07 ]
小数を整数で割った余りって何なんだよ。
nはintとかにしとけ。

424 名前:デフォルトの名無しさん [2008/09/21(日) 04:52:19 ]
Cでのメモリの取られ方についてご教授いただけませんでしょうか。

下記のようなコードを書いた場合、

static const char *teststr[6] = { "00000", "1111111111", "2", "3", "444", "555555" };

それぞれの文字列でピッタリ埋まるサイズでメモリが確保されて、
それらを指すポインタがteststrに格納されるのでしょうか?

VCで試したところ、確かにteststrの各配列に指定した文字列が格納されていたのですが、
ポインタのみを確保して、その位置のデータを破壊して、指定文字列を格納しているということはないでしょうか?
組み込み(ARM)での開発に使用しようかと思っています。

よろしくお願いします。

425 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 05:02:09 ]
そんなもの処理系によるとしか

426 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 05:12:15 ]
Cで@や$や`記号が使われなかった理由ってあるんですか。

427 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 05:16:12 ]
これ以上トリグラフ増やすのいやだったんじゃね

428 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 07:28:28 ]
>>424
破壊はしない。

429 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 13:51:14 ]
>>424
> それぞれの文字列でピッタリ埋まるサイズでメモリが確保されて、
> それらを指すポインタがteststrに格納されるのでしょうか?
そのとおり。
文字列はROM、ポインタはRAMに置かれる。



430 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 15:26:49 ]
>>429
ポインタが RAM にいっちゃうのは teststr に const が付いてないからだよね?

431 名前:デフォルトの名無しさん [2008/09/21(日) 15:27:21 ]
Cから最近C++に移行しました。
関数を

void foo(char* filename);

と宣言して使うときに

foo("data.dat");

とやると deprecated conversion string constant to char みたいな
警告が出ます。これは何が不味いのでしょうか?






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

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

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