う・・

[戻る]
とんきち 2003/02/05(水) 16:17:25
アスキーファイルを読みたいので、次のようにしたのですが読めません・・
Serialize(CArchive& ar)ですどこか間違ってますかね・・?
    CFile* fp = ar.GetFile();
     int i;
    double *tmp;
    tmp = CCC;
    for ( i=0; i<IMAGEDATA_SIZE; i++, tmp++) 
    {
    ar.ReadString( tmp, sizeof( double ) );
     }

CCCはdouble型でデータを格納する場所です
IMAGEDATA_SIZEは256*256です

はやってるの? 2003/02/05(水) 16:36:24
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200301/03010123.txt

n [E-Mail] 2003/02/05(水) 16:46:44
CCCがdouble型でデータを格納する場所なら、tmpは何をするものですか?

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/05(水) 16:53:24
 もっとタイトルのつけ方を考えようぜ!
 ごく少数に駄目なタイトルもあるけど、ほとんどが内容がわかるタイトルを付けてるでしょ
う。

 ぜひ、この問題の出所を知りたい。
 そして、マッサラな問題文章を見てみたい。

 想像するに、きっとこうにちがいない。v(^_^;
        int i;
        for(i=0;i<IMAGEDATA_SIZE;++i) ar>>CCC[i];

とんきち 2003/02/05(水) 16:58:35
なぜかtmpにおきかえないとデータ−が反映されないんですよ
そのままCCCのままだとうまくいきませんでした。一応バイナリ−ファイルは成功したので。
char型でも試したのですがうまくいきませんでした

επιστημη 2003/02/05(水) 17:10:59
'読めません'を説明してください。

- コンパイルできなかった
- リンクできなかった
- 実行したらぶっ飛んだ
- 予想外の結果(そのときの入力/期待値/実測値)

こーゆーことがきちんと報告できないと無駄なやり取りを
繰り返した挙句、いいかげんな答えしかもらえません。

# なんだこの 'う・・' って? 答える気も失せる

とんきち 2003/02/05(水) 17:16:16
バイナリ−ファイルでは思ったとうりのデータを取得できたのですが
アスキーだと読めるのですが予想外の結果となりました。

επιστημη 2003/02/05(水) 17:18:54
だーかーらー

- 予想外の結果(そのときの入力/期待値/実測値)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^

暇人貴子 2003/02/05(水) 17:31:01
ReadStringにdoubleのポインタ渡したら
コンパイルエラーになりそうだけど・・・

επιστημη 2003/02/05(水) 17:36:19
アスキーで書いたってことはファイルにあるのは"文字列"だわね。
それを double領域に 4文字分読み込んだのかな。
...意味のある結果が得られるとは思えないが。

ひょっとして文字列 "1234" をこうやって読み込んだら
数値 1234 が得られるとでも思ってらっしゃる????

とんきち 2003/02/05(水) 17:50:54
データの中身は9.352675144624524e+001、こんな感じのが256*256あります

επιστημη 2003/02/05(水) 17:55:02
っかしぃなぁ、なぜ通じないんだろ...?

- 予想外の結果(そのときの入力/期待値/実測値)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
および

  ひょっとして文字列 "1234" をこうやって読み込んだら
  数値 1234 が得られるとでも思ってらっしゃる????

そもそもデータは 文字列で"9.352675144624524e+001"なんでしょ?
20文字以上あるんでしょ?

ar.ReadString( tmp, sizeof( double ) );
                    ^^^^^^^^^^^^^^^^<---- ぜんぜん足らんやないの!

とんきち 2003/02/05(水) 18:00:22
+001とかまで読んでほしのですよ?そういう型ってあるのですか?

n [E-Mail] 2003/02/05(水) 18:07:21
「文字列型」というのを設けてそこに読み込んでみてください。

επιστημη 2003/02/05(水) 18:07:43
質問の前に、まず答えてください。

- '数字' と '数値' の違いがわかりますか?
- '数字' と '数値' をゴチャマゼに扱っていませんか?
- '数字' から '数値' への変換方法はご存知ですか?

ファイルにあるのは'数字'ですよね?
あなたが欲しいのは'数値'ですよね?

どうやってファイルに書きましたか? その逆をやればいいんですけど。

とんきち 2003/02/05(水) 18:39:42
格納する場所をCString型にするのですか?

とんきち 2003/02/05(水) 19:01:39
数字は大きさが与えられてない、文字として扱われるもの。
数値は、大小が与えられ順序が想定でき、また、場合によっては計算が可能なものです。

暇人貴子 2003/02/05(水) 19:49:19
http://www.mtakahashi.com/cgi.cgi?07604
にも・・・

とんきち 2003/02/05(水) 20:01:13
>>データの中身は9.352675144624524e+001、こんな感じのが256*256あります
さっきから失敗ばっかでまじでわかりません;;本当に誰か教えてください
お願いします・・

tib 2003/02/05(水) 20:21:12
>本当に誰か教えてください
NEG(ねぐ)さんのアドバイスは参考になりませんか?

とんきち 2003/02/05(水) 20:27:20
でもデータの中身は9.352675144624524e+001が256*256ですから
doubleでは読めませんよね・・
 CFile* fp = ar.GetFile();
     int i;
    double *tmp;
    tmp = CCC;
    for ( i=0; i<IMAGEDATA_SIZE; i++, tmp++) 
    {
    ar.Read( tmp, sizeof( double ) );
     }
となるとdouble型ではないのにしたいのですが検討がつきません・・

ks' 2003/02/05(水) 21:08:25
まじめな話です。
今のあなたのレベルではこの問題は解けません。断言します。
(解けないことそのものや、
 あなたのレベルがまだそこまで達していないことを批判するつもりはありません, 
 誰もがみな、最初はそうなのです)

で、ただ単に解答(のソース)が欲しいだけなら、
ソフトウェア会社に発注しましょう。

先生から出された問題文をそのまま見せて、
「これを解くC++のソースを作ってください」と。

会社によって金額(数万〜数十万??)は異なるでしょうが、そうすべきだと思います。


そうではなく、あなたがきちんと理解した上で、
この問題が解けるようにしたいのであれば、
あなたがわからないことを、わからないと認める必要があります。

たとえば、数字と数値についてですが、
実際にCやC++を使っている人であのように答える人はいません(多分...)。

あれは、一目で本から写したことがわかります。

あれは定義であって(微妙に間違ってるような気もするけど...)、
あなたがどのように理解しているかを示すものではないからです。

で、どうすればいいかというと、
あなたは数字と数値, 或いは文字, 文字列というものを
きちんと理解していない, わかっていないわけですから、
そこからきちんと学びましょう。
(失礼ながら、わかっているとはとても思えません, 
 本当に、本当にわかっていらっしゃいますか?)

時間はかかるかもしれませんが、
それでもこれより早い方法はないように思います。

時間がない, 急ぎ, 云々であれば先に書いたように
業者に発注してください。

ここは、解答を示す場ではなく、
質問者を解答へ導く場、いわば、
質問者(その他大勢の読者(「回答者」含む))の学びの場なのですから。

# επιστημηさんのいう
#  - 予想外の結果(そのときの入力/期待値/実測値)
#                ^^^^^^^^^^^^^^^^^^^^^^^^^^
# これは、非常に大切なことなのですが...
# ※ 書く際にはすべての値に型(char,int,float,doubleのいずれかのみ)を明記すること
# ※ 文字列の場合は " " で括った方が、よりよいかな...

## まるで管理人さんのようで
## でしゃばりすぎたかもしれません
## 批判ありましたら以後やめます

... 2003/02/05(水) 21:43:14
>とんきち 
ホットメールとかでいいからメアド晒せ。
状況によっちゃやってやるよ。

っていうか、過去ログよんで調べろよ。
迷惑してんだよ、みんな。それにきづけ。

wood 2003/02/05(水) 22:53:46
>9.352675144624524e+001
この値使って何するの値の内容は関係ないんでしょ
ここまでスレッド眺めてましたけど

ただ単純にデータのreadが出来ればいいんでしょ
だったらchar で1バイトづつ読めば・・・
そうすりゃ アスキーもバイナリーもデータの長さも何も関係なく
読めると思いますけど

(9.352675144624524e+001)このサイズ*256*256 分領域とって
格納すればいいんじゃないの
これで何の問題ありますか

ちなみにアスキーファイルと言う場合MS−DOSが基本として扱える
アスキーコード(JIS8)に則ったコード体系で構成された
すべてのファイルを指しますよね
つまり中身がテキストであろうが数字の羅列であろうがバイナリーであろうが
MS−DOSが扱えればアスキーファイルって言いませんか?
あなたが理解している「アスキーファイル」と「バイナリーファイル」の違いって
何でしょうか?

... 2003/02/05(水) 23:35:52
だれ?

wood 2003/02/06(木) 07:50:52
私の発言に間違いまたは「批判、失礼になるような発言」があると思うのであれば

以下のように「使用上の注意」に書かれているとおり「黙殺するようにお願いします」

>・個人への批判、失礼になるような発言、不快にさせるような発言は行わないで
>下さい。
>また、このような発言に対しては黙殺するようにお願いします。
>あるいは管理人までメールを下さい。

ほかの回答者の方々も、ご参考にあまり熱くならずおんびんに...

x 2003/02/06(木) 13:45:09
9.352675144624524e+001
の様なテキストが改行で区切られて、続くとして

CString    str;
double    CCC[IMAGEDATA_SIZE];
int    i = 0;
while( ar.ReadString( str ) ) {
    CCC[i++] = atof( str );
}

古いスレッドには追加発言できません。