掲示板をはじめて利用させていただきます。
gccで解析プログラムを作っています。
いまは、ハードコードを書いて直接変数・配列にデータを入れてテストしています。
ちょっとレベルアップしてテキストファイルから読み込んでやってみようと、考えていて、
頭に思い浮かんだのが
プログラムは一行読み込んで分解し、変数・配列に格納です。
このやり方だと、行番や一行ごとの数字の数がずれると、最悪です。
そこをうまくやるのが、プログラミングだとおもうのですが、
ほんとにみんなこうやってんのかな?といった疑問が頭をよぎります。
テキストファイルから読み込む妙案があれば教えてください。
5,9 //iN・iM
0,1,2,3,4 //N1
1,2,3,4,5 //N2
....
//は便宜上のコメント
ある程度変則なデータ形式でも対応できる考え方があれば教えてください。
iniファイル的な形のものも一つのアイデアですが、出力はできても、手入力はちょっとです。
エクセルに入力してVBAで読み込んでdllへも既知です。
解析入力テキストファイルの読み込み方
Re: 解析入力テキストファイルの読み込み方
自分だったらXMLなどを使うと思います。
ライブラリやエディタなどはそれこそ腐るほどありますし。
ライブラリやエディタなどはそれこそ腐るほどありますし。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 解析入力テキストファイルの読み込み方
> iniファイル的な形のものも一つのアイデアですが、出力はできても、手入力はちょっとです。
それだとxmlも不可でしょうか?
あとインタプリタ風の構文処理にして、C言語の初期化の書き方と言う手もありますけどね。
自由度が高いためには、ある程度構文を考える必要がありますが、それだと手間は増えます。
それだとxmlも不可でしょうか?
あとインタプリタ風の構文処理にして、C言語の初期化の書き方と言う手もありますけどね。
自由度が高いためには、ある程度構文を考える必要がありますが、それだと手間は増えます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
むら
Re: 解析入力テキストファイルの読み込み方
ご返信ありがとうございます。
具体的なハードコードは下記の様にしていて
部材数が多くなると結構煩雑。
xmlもちょっと面倒的な気持ち。。。htmlタグを書くような感じなので。
ほかにもこんな手があるよというのを教えてほしいです。
xmlもその一つとして、いただきます。
私の思っているのは、テキストエディタでガンガンテンキーのみでうてて、
コメントもいれてもロバストでデータの順番が入れ替わっても・・・
特に指定はないのですが、知識の幅を広げたいのもあります。
具体的なハードコードは下記の様にしていて
部材数が多くなると結構煩雑。
xmlもちょっと面倒的な気持ち。。。htmlタグを書くような感じなので。
ほかにもこんな手があるよというのを教えてほしいです。
xmlもその一つとして、いただきます。
私の思っているのは、テキストエディタでガンガンテンキーのみでうてて、
コメントもいれてもロバストでデータの順番が入れ替わっても・・・
特に指定はないのですが、知識の幅を広げたいのもあります。
case 4:{ //テストデータはオリジナル
//解析時間
o2->dTime=0;
//節点数 //部材数
o2->iNode=3; o2->iMemb=2;
//配列を確保
o2->fcSetArr(); //private member
//節点支持状態 =0:支点でない =1:固定支点 =2:ピン支点 =3:水平ローラー支点
o2->iSup[0]=1;o2->iSup[1]=0;o2->iSup[2]=0;
//節点座標
o2->dXNode[0]=0;o2->dYNode[0]=0;
o2->dXNode[1]=0;o2->dYNode[1]=300;
o2->dXNode[2]=400;o2->dYNode[2]=300;
//部材端番号
o2->iN1[0]=0;o2->iN2[0]=1;
o2->iN1[1]=1;o2->iN2[1]=2;
//弾性係数 断面積
o2->dE[0]=20500;o2->dI[0]=1805.6;o2->dA[0]=26.67;
o2->dE[1]=20500;o2->dI[1]=1805.6;o2->dA[1]=26.67;
//節点荷重
/*
o2->dYNodeLoad[1]=-3;
o2->dYNodeLoad[2]=-4;
*/
//中間荷重用 固定端反力 基準座標系
// 左回 ←|-----------------------|←右回
// ↑ ↑
o2->dXiMembLoad[0]=0.0; o2->dYiMembLoad[0]=0.0; o2->dMiMembLoad[0]=0.0;
o2->dXjMembLoad[0]=0.0; o2->dYjMembLoad[0]=0.0; o2->dMjMembLoad[0]=0.0;
o2->dXiMembLoad[1]=0.0; o2->dYiMembLoad[1]=49.0; o2->dMiMembLoad[1]= 4900.0;
o2->dXjMembLoad[1]=0.0; o2->dYjMembLoad[1]=49.0; o2->dMjMembLoad[1]=-4900.0;
break;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 解析入力テキストファイルの読み込み方
データの順番を入れ替えてもってのは識別子という判定基準がないので難しいですね。
あとは、構文解析処理で作れそうな気がします。
/5,9/ //コメント
/0,1,2,3,4/ //コメント
/1,2,3, //コメント
4,5/ //コメント
ぐらいなら構文解析をちゃんと作ればOKです。
あとは、構文解析処理で作れそうな気がします。
/5,9/ //コメント
/0,1,2,3,4/ //コメント
/1,2,3, //コメント
4,5/ //コメント
ぐらいなら構文解析をちゃんと作ればOKです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 解析入力テキストファイルの読み込み方
ただ、結局データの打ち込みと後々の修正・チェックしやすいと言う観点からするとExcelで入力してcsvとするのが一番多いパターンなのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
むら
Re: 解析入力テキストファイルの読み込み方
構文解析か。やっぱりここに行きつくか。。。softya(ソフト屋) さんが書きました:データの順番を入れ替えてもってのは識別子という判定基準がないので難しいですね。
あとは、構文解析処理で作れそうな気がします。
/5,9/ //コメント
/0,1,2,3,4/ //コメント
/1,2,3, //コメント
4,5/ //コメント
ぐらいなら構文解析をちゃんと作ればOKです。
なんとなくわかっていたような。
未知の世界なので。
トークンに分けて・・・のーみそばーん。
チャレンジしがいがありそうです。
気のきいたライブラリがあればと。
恐ろしいほどごもっともです。softya(ソフト屋) さんが書きました:ただ、結局データの打ち込みと後々の修正・チェックしやすいと言う観点からするとExcelで入力してcsvとするのが一番多いパターンなのでは?
csv出力は気づきませんでした。
このトピはすでに着地点についた気がしてきましたが、
csvならすでに考え付いていることなのです。
もうちょっと楽したい。さらなる妙案がございましたら。
不躾ながらご容赦を
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 解析入力テキストファイルの読み込み方
ちなみにExcelのVBAで加工出力するならバイナリファイルを作ることもできます。
あるいは、テキスト→perl(構文解析・整形)→C言語(入力のみ)って方法もあります。
C言語で字句・構文解析するならyacc/lexが定番ですね。
【補足】
構文解析する参考
「Cプログラミング講座第3回「数式の構文解析」」
http://www.wakayama-u.ac.jp/~takehiko/h ... arsing.htm
「プログラム言語を作る! - Part1 誰でも作れるプログラム言語:ITpro」
http://itpro.nikkeibp.co.jp/article/COL ... 248581/?k2
「C言語-目次」
http://masudahp.web.fc2.com/cl/
「プログラミング言語を作る」
http://kmaebashi.com/programmer/devlang/index.html
あるいは、テキスト→perl(構文解析・整形)→C言語(入力のみ)って方法もあります。
C言語で字句・構文解析するならyacc/lexが定番ですね。
【補足】
構文解析する参考
「Cプログラミング講座第3回「数式の構文解析」」
http://www.wakayama-u.ac.jp/~takehiko/h ... arsing.htm
「プログラム言語を作る! - Part1 誰でも作れるプログラム言語:ITpro」
http://itpro.nikkeibp.co.jp/article/COL ... 248581/?k2
「C言語-目次」
http://masudahp.web.fc2.com/cl/
「プログラミング言語を作る」
http://kmaebashi.com/programmer/devlang/index.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
むら
Re: 解析入力テキストファイルの読み込み方
構文解析する参考文献のご提示ありがとうございます。
めがぐるぐるしています。
コードを参考にトークンに分けて先頭の記号により
スイッチで読み込む形式でやってみます。
簡単なものはないってことで了解しました。
めがぐるぐるしています。
コードを参考にトークンに分けて先頭の記号により
スイッチで読み込む形式でやってみます。
簡単なものはないってことで了解しました。