Dull girl's desperate study!

実験の事が知りたい方へ

実験の内容を正しく知るためにはこのブログは適しておりません。
いたずらではなく誠実にお知りになりたいのであればまず、私にmailを下さい。
出来る限り、分かる限り(笑)「本当の事」をお教えいたします☆

プロフィール

研究者のたまご

Author:研究者のたまご
コメント大歓迎☆☆
「こんな事聞いたら、言ったら恥ずかしいかな・・・」なんて気持ちは不要です☆
私も、賢くはありませんので…;;

最近のコメント


申し訳ありませんが
私が気に入らないコメントは
了承なしに削除させて
頂きます。
コメントが書き込めない時には
チャットボードにお願いします。

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

こっちも見てね-ブログ編-

更新状況

備忘録

使ってみてね-お役立ち編-

最近の記事

最近のトラックバック

カテゴリー

月別アーカイブ

ブログ内検索

RSSフィード

スポンサーサイト

--.--.-- スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

金欠、アイデア欠、知識欠、恥欠…

2005.04.06 プログラムで悩んでます
よくよく考えてみると…奨学金が貰えなかったらもう、話にならない。
ってか、入学してみたものの半期で私は大学やめなきゃいけない。
そして、無利子と有利子の奨学金、この際だから両方借りようと思っているのだけど…
それが叶わず、マスターの時期と同じ金額しか借りれないとすると…意外に厳しい・・・
で、なぜ厳しいかって遊びすぎっ!
「食」とゲームにお金使いすぎなんですけどね(苦笑)

実は、今学期のお金、「足長おじさん」にお金をお借りして支払ったのでそのお金も少しずつ返さなければならず…

出費を抑えるしかないのですね…



少しずつC++でプログラムを書きはじめているのですが…

色々、難もありまして…

ifstream fi(argv[1]);
とポインタ fiでファイルをオープンして、

while( !fi.eof() ){
fi.getline(buff,256);
line ++;
}
とするわけです。(ちなみにchar buff[256]とint i=0は定義してあります)
そうすると、必ずlineが1多くカウントされる・・・
これって、whileが条件の真偽を一回命令実行してから判定するせいかなぁ?
何をしているかって、ファイルの行数を数えて配列のためのメモリの大きさを確かめているわけですよ(^^;

で、これのあとで
struct fopen *a = new struct fopen[line];
とメモリを取る訳なんです。

そのあとでもう一度ファイルの中身を読んで、今度は配列要素に数字を当てはめていくわけなんですが、これがC++関数のいいのが分からなくて…
fi.getline(buff,256)をした後でsscanf関数を使って変数名への割り当て?をしてるんです…

lineがいつも1つ多くカウントされているからどうしてもメモリが1行分多く開いてるし…

1行一括でデータを読み込んだらそれぞれのフィールドに名前(変数名)を当てる時にC++ってどうやってやるんですかね?・・・(sscanfで本当にいいのかなぁ(苦笑))
lineのカウント数の調整は、line-1を常にするしかないのかな…

そこら辺でいいアイディア、知識をお持ちの方、是非アドバイスを下さい!!!!!!


----------------------------------------------

最後に赤っ恥をさらします…
まあ、どうせweb上に載っている写真なので…
髪を結ってもらった美容室のHPに掲載されたのでお披露目です。
全身はこんな感じでした…
微妙に顔が分かるような分からないような…(苦笑)
少しの間だけ…1日くらい?(^^;だけここにも載せます。
恥ずかしいついでに。

着物

スポンサーサイト
コメント7
トラックバック0
2005.11.17 18:14 edit
最後の行の最後が改行コードで終わってませんか?
その場合、(見た目には存在しない)最後の行のために
空文字列が読み込まれます。

ということで

while( !fi.eof() ){
 fi.getline(buff,256);
 
 // 空文字列はカウントしない。
 if( buff[0] ) line ++;
}

とでもしてあげればいいのではないかと。


> 1行一括でデータを読み込んだらそれぞれのフィールドに
> 名前(変数名)を当てる時にC++ってどうやってやるんですかね?

えっと、フォーマットがどうなっているかがわからないので
一概にはなんとも言えません。とりあえず、
『絶対こういうデータが来る』
という前提で作っていいのなら
sscanf でよいかと思います。
(プロとしての仕事ではそれでは失格ですが)
名鏡 恵 URL
2005.11.18 01:05 edit
>空文字列

おぉ!!そうですよね!!
なるほど…
ありがとうございます☆

最近は、この方法じゃなくvectorを使って動的配列とかっていうものを作るってのにも挑戦しているんですけど…

vectorも2次元配列になるとまったくどうしていいか分からず…
vectorの中にvector…(涙

お先が真っ暗闇です(苦笑
研究者のたまご URL
2005.11.18 11:11 edit
なんか、昔のエントリにコメントしてしまったみたいで、
どうもすみません。

vector<vector<T> > ですか?
だいたいどんなことをされるのか教えていただければ、サンプルをつくりますけど。

こういう本職でないところで時間をとられてしまうのはもったいないですよね。
研究がんばってくださいね。
名鏡 恵 URL
2005.11.18 21:41 edit
>昔のエントリにコメントしてしまったみたい
いえいえ!
そんな事お気になさらないで下さい☆

>サンプルをつくりますけど
ひゃぁ~(^0^)
なんてありがたいお言葉なんでしょう…
いいんでしょうか…甘えてしまっても…

A B
a1 a2 a3 ・・・a10 a11
b1 b2 b3 ・・・b10 b11
C D
c1 c2 c3 ・・・c10 c11
d1 d2 d3 ・・・d10 d11

という風にheaderがあってデータが続き、またheader…というファイルがあるんです。
a1・・・a11までの11カラムは、A(ID)のデータ・・・となります。
ここにある条件に応じて別のファイルから読み込んでいるデータをところどころ継ぎ足したいのです。
例えば、
A B X
a1 a2 ・・・ a11
b1 b2 ・・・ b11
x1 x2 ・・・ x11
C Y D
c1 c2 ・・・ c11
y1 y2 ・・・ y11
d1 d2 ・・・ d11
という感じです。

A,B,Xは一連のデータ(ID)の塊である事
(従ってa1・・・a11,x1・・・x11も一つのデータ群である事)
a1・・・a11は、Aのデータである事が分からなくならないように配列にいれて処理をさせたいんです…

(長くなるので分けます)
研究者のたまご URL
2005.11.18 22:16 edit
どうしていいか分からず
行の成分をi、列の成分をjとすれば、
A,B,a1・・・a11,b1・・・b11の一連のデータ群をiとし、
Aとa1…a11のheaderとデータの1セットをjとして2次元配列のようなものを作り、無理やりやろうとしたのですが…
当たり前に出来ませんでした(苦笑)

vector< vector <T>>が本当にいいやり方なのかも分からないのです…
そして、本だとTがintやdoubleの場合は書いてあるのですが、structの場合は書いてないのですよね…

struct T{
int a;
double b;
};
としたら
vector<struct T> v;
とか書きますよねぇ?
それで、vector<vector <struct T>> w;
だったら、aやbにアクセスしたい時は、
w.v.aにならないのですか??


すみません。
本当に何にも分かっていないのです…
扱わなければならないデータが1,2万行あって、その時々によってその行数も変動するためpush_back()関数とか使い勝手がよいのですが、、、
あまり、プログラムの勉強だけに時間も割けず…

なんだか、プロの方に見て頂くには申し訳ないくらいの酷さですよね…
あの、私の言っている意味が分からなかったら無視してくださって構いませんので。
すみません。

でも、そう言っておいて何ですが(苦笑)
もし「こういう事がしたいならこうしてみれば?」や「それなら、こういうところを勉強せよ」というようなアドバイスが頂けたら非常に助かりますm(_ _)m
研究者のたまご URL
2005.11.19 00:07 edit
> ひゃぁ~(^0^)
> なんてありがたいお言葉なんでしょう…
> いいんでしょうか…甘えてしまっても…

それで喜んでいただけるのであれば。


> なんだか、プロの方に見て頂くには申し訳ないくらいの酷さですよね…

いえ、正直言ってそこらへんの新人プログラマよりずっとよいです。
ある程度正確に『自分が何を理解できていないか』を理解しているのがわかりますし、
私が必要とする情報をかなりしっかり考えて下さっているのがわかります。


データ構造ですけど、ちょっと確認させてください。

A B X
a1 a2 ・・・ a11
b1 b2 ・・・ b11
x1 x2 ・・・ x11
C Y D
c1 c2 ・・・ c11
y1 y2 ・・・ y11
d1 d2 ・・・ d11

これはイメージ的に

------------------------
A => a0, a1, a2 ...
B => b0, b1, b2 ...
X => x0, x1, x2 ...
------------------------
C => c0, c1, c2 ...
Y => y0, y1, y2 ...
D => d0, d1, d2 ...
------------------------

というように対応付けられて扱われる、ということでよいですか?
このとき、キーのグループおよび順番 {A B X}, {C Y D} は保持する必要はあるのでしょうか?

あと、型は、
A B X は int,
a0 a1 a2 は double,
で、よろしいですか?

・・・というか、長くなりそうなので、メールしますね。ちょっと待っててください。
chica-physicist@r6.dion.ne.jp
で、よろしいのでしょうか?
名鏡 恵 URL
2005.11.19 00:38 edit
>対応付けられて扱われる、ということでよいですか?

はい。

>このとき、キーのグループおよび順番 {A B X}, {C Y D} は保持する必要はあるのでしょうか?

これに関してはこのグループ、順番はかなり大事です。

>あと、型は、
>A B X は int,
>a0 a1 a2 は double,
>で、よろしいですか?

A B Xはintです。
実際はa0・・・a10は、intとdoubleがごちゃまぜです。
それはintと書くか、doubleと書くかの定義だけの問題ですか?
それならば、今はすべてdoubleで構いません。

>メールしますね

なんだか、お手を煩わせてしまって申し訳ないですm(_ _)m
はい、そのメルアドでOKです。
本当にすみません。
研究者のたまご URL
= Comment =
  • Name 
  • Mail 
  • Url 
  • Text
  • Pass 
  •  Secret

= Trackback =
Trackback Url
http://fundamentalphys.blog35.fc2.com/tb.php/144-563c6ede
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。