ベストアンサー プログラミングFortranで、構造体を使えますか? 2001/12/06 12:15 Digital Fortran v5.0でC言語の様に構造体 あるいは配列をメモリーに入れて構造体を変化させずに 計算する方法は有りませんか? みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー a-kuma ベストアンサー率50% (1122/2211) 2001/12/06 13:19 回答No.1 「構造体を変化させずに」の意味が取れないので、外しているかもしれませんが、 Fortran で構造体を扱うには、二つのアプローチがあります。 ・言語として構造体がある Fortran90 を使う ・Fortran77 であれば、EQUIVALENCE 文を使う EQUIVALENCE 文は、こんな感じで使います。 CHAR*10 WORK INTEGER*2 I2 INTEGER*4 I4 REAL*4 R4 EQUIVALENCE (WORK(1:2), I2) EQUIVALENCE (WORK(3:6), I4) EQUIVALENCE (WORK(7:10), R4) CHAR*10 DAT(10) C DAT に、データが読み込まれているとして DO 10 I = 1, 10 WORK = DAT(I) WRITE(*,*) I2, I4, R4 10 CONTINUE 質問者 お礼 2001/12/06 13:30 丁寧な回答有難うございます。 たいへん助かります。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連するQ&A fortran90の構造体について VBにあるwith文みたいな構造体の名前を省略できる命令が,fortran90にはありますか? Javaには、構造体はないんですか? C言語の構造体みたいなのはないんですか? 野球のデータを扱っているのですが、構造体がないのでできません。 打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。 Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。 要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。 うまい方法を教えてください。初歩的な質問でごめんなさい。 BLOCK構造体とFORTRAN fortranでプログラムを組むことになったのですが、これまでプログラムを組んだことがなかったので困っています。 gridgenで作成した.grdファイルをfortranで読み込ませることがうまくできません。 原因は、.grdのフォーマットがBLOCK構造体であるからだと考えています。 POINT構造体なら読み込めることが分かっているのですが…。 そこで質問です。 BLOCK構造体である「.grd」ファイルを読み込み、POINT構造体の「.dat」ファイルを出力するプログラムをfortranで組むにはどうしたらいいですか? BLOCK構造体とは以下の形式。 X1 X2 X3 X4 X5 …Xn Y1 Y2 Y3 Y4 Y5 … Yn Z1 Z2 Z3 Z4 Z5 … Zn POINT構造体は以下。 X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3 X4 Y4 Z4 X5 Y5 Z5 … … … Xn Yn Zn ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム C言語とfortranでのデータの受け渡しについて はじめましてc_f_gaussと申します。 現在fortranで動的に配列を得るためにC言語を使用し 配列を確保しそのアドレスをfortranで定義してある 配列のアドレスと交換したいのですがどのようにしたら よいでしょうか? 今の段階ではC言語側でアドレスを交換してもfortran 側に戻ると元のアドレスに戻ってしまいます。 fortranとC言語でデータ受け渡すには何か必要な手続き があるのでしょうか? 動的に作成した構造体配列の中に、さらに動的に構造体配列を作るには? はじめまして。 この度、ちょっとした計算プログラムを作ることになったのですが、 タイトルにもありますように、 『動的に作成した構造体配列の中に、さらに動的に構造体配列を作る』 方法がわからずに困っています。 実際には下記のようにプログラムしたいのですが... ------------------------------------------------- 'a'の構造体の中に作られる'b'の配列数は、下記のように 'a'の配列の番号により違い、また'a'の配列数も最初の段階では未定です。 構造体'a'←配列数未定 構造体'b'←配列数未定 a[0]-----b[0] | b[1] | b[2] | a[1]-----b[0] | b[1] | a[2]-----b[0] | b[1] . b[2] . b[3] . ------------------------------------------------- new演算子で'a'の配列は作れたのですが、その中の'b'の数の分だけ 配列を動的に作成する方法がわかりませんでした。 最初は'b'の配列を多めに取って計算すればよいと思っていましたが、 計算過程で'b'の配列数が10000を越えてしまう場合があり、 また'b'の構造体のサイズも大きめなので、断念せざるをえませんでした。 どなたか、このように配列を作成する方法を知っている方がいましたら、 是非教えていただきたいです。 下手な説明ですいません。 C言語構造体についてです。 C言語、π=PI 3.14159265で構造体を用いてmensekiを呼び出して 半径と面積を計算して出力するプログラムです。下の空白を埋めてもらえますか? /* 構造体のプログラム */ #include <stdio.h> #include <math.h> #define PI 3.14159265 struct Data { /* 半径rと面積areaをdoubleで宣言 */ }; void menseki(struct ... 構造体のポインタを引数とする ){ /* 面積を計算する際に構造体のアドレスから計算する */ circle->area=PI* .....; } main(){ struct Data example[2]; //構造体配列 int i; /* 半径rを構造体配列を用いて2例入力する */ /* 2例の各々について mensekiを呼び出して 半径と面積を計算して出力する */ } よろしくお願いします。 スタックに構造体をつむには? C言語でスタックに構造体を積む方法を知りたいのですがどうしたらよろしいのでしょうか? 教えてください。 fortranでのcsvファイルの読み込み fortranで例えば下のようなcsvファイルを読み込み、配列に格納したいのですが、どのようにすればよいでしょうか? 12.3,45.6,78.9,23.4,56.7 23.4,56.7,89.1,23.4,56.7 34.5,67.8,91.2,34.5,67.8 当方、CやJavaなどの別の言語は経験があるのですが、急遽fortranでやらなければならなくなって困っています どなたかよろしくお願いします C#の構造体に関して C#の構造体に関して C#で構造体で配列を持ちたいと思い、宣言の仕方や使い方を 勉強していますが、どうしてもコンパイルは通るもののエラーと なってしまいます。 《ソース》 単純に構造体で宣言した"a"という配列に、"ABC"という文字列を 代入したいだけですが。。。 namespace テスト環境 { struct test { public string []a; } class Program { static void Main(string[] args) { test aaa = new test(); aaa.a[0] = "ABC"; } } } 配列の初期化等は、ようやく理解したつもりではいますが、構造体 が絡むとどうしてもわかりません。 どこをどのように修正したら良いかを教えて下さい。 初歩的な質問で申し訳ありませんが、よろしくお願いします。 配列とその要素数をメンバにもつ構造体 C言語では,配列を引数とするときに,合わせて要素数を渡さなければいけないといわれます. そこで,配列とその要素数をメンバにもつ構造体を定義して,これを要素数つき配列のように扱えば,引数として渡す場合には,この構造体を渡すだけでよいと思うのですが,このような用法は一般的に用いられているでしょうか. 単純なアイデアだと思うんですが,あまり紹介されているのを見たことがありません. もしあまり用られない用法であれば,その理由を教えてください. 現在,プログラムを書いているのですが,引数の多さに閉口しており,上の考えで,引数を減らしたいと考えています. よろしくお願いいたします. 汎用性のある構造体 c言語で構造体のメンバに関して構造体の定義を操作せずにメンバを操作したいのですが(ソースから)その実現は可能でしょうか? よろしくお願い致します VBでも構造体が使えますか? 宜しくお願いします。 VBビギナーです。 VBでもC言語のように構造体の使い方ができますか? 宜しくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 構造体で・・・・ 構造体は配列を使用せずメモリ領域を獲得する関数を使用すること、 *構造体内部のメンバ名には配列を用いて良い。 という、条件があるのですが場合はどのようにすればよろしいでしょうか? どなたか教えてください。 構造体は以下のようになってます。 /*構造体の定義*/ struct seiseki{ char name[20]; int eig; int suu; int kok; char rank[3]; }; FortranにあってCにない関数?について 10年間Fortran90でプログラミングをしてきましたが、 C言語を使う必要があって、プログラムを書き直し中の者です。 入門書を数冊読んでいて疑問に思ったのですが、Fortranには、 A=SUM(B) と書けば、配列Bの全ての総和をAに返す、という関数があるのですが、C言語に同じような関数はないのでしょうか?(標準ライブラリに無いという事はないのでしょうか?) Fortranと比べてCは組み込み関数が少ないという印象を持ったのですが実際そうなのでしょうか? また、Fortanでは配列の和をとる時、 do i=0,n a(i)=b(i)+c(i) end do を一行で、 a(0:n)=b(0:n)+c(0:n) と書いても良いですし、もし定義されている全部の配列の要素が対象なら a=b+c と一行で書いても良いのですが、c言語では似たような書き方はできないのでしょうか? つまり、多次元配列を扱う時、Fortranでは単に「a=b+c」と書けば済むところを、Cでは for (i=0,i<=n,i++){ for (j=0,j<=n,j++){ for (k=0,k<=n,k++){ a[i][j][k]=b[i][j][k]+c[i][j][k]; }}} と書かなくてはいけないのか?と悩んでおります。 私がCの機能を知らないだけなのか、Cとはそうゆうことが出来ないのか、浅学なため判断できません。 ご教授ください、どうぞよろしくお願いいたします。 C言語をFortranに変換するソフトを教えてください 数値計算をFortranで行っています。 C言語で書かれたプログラムをFortranに書き直すツールがあるとうわさで聞いたのですが、あるのでしょうか?あれば大変役に立つのでほしいのですが。。。 お願いします! Fortran初心者 はじめまして 今回私はFortranを使って計算を行うことになりました しかし、私はFortranどころかC言語すら全く無知です Fortranをインストールしたのはいいんですが全て英語で全く使い方が分かりません 初級者向けの本を買ったはいいんですがそれ以前の問題で分かりません どのボタンを押せばどういった動きになるのか? そういったかなり細かいとこまで説明されたサイトや本はありますでしょうか? どうすればコンパイルするのか、どうすれば計算結果が表示されるのか(超基本的なことです)恥・・・ 周りの人に聞くにも時間も限られているので一人で勉強するためにどうか教えてもらえませんか? 構造体のextern方法 C++のビギナーなのですが、 普通の変数、配列のexternはできているのですが、 構造体をexternができずに困っています。 2時間ほど調べまわったのですが、 typedefを使わなければならない(?) とか 構造体は変数なんかと違い、特別なやり方をしないとダメらしい事までは解ったのですが、 実際動くやり方を見つけきれませんでした; 方法(手順)や、解説サイトなどをご存知でしたら、教えて頂けると幸いです。 FORTRANの入出力 C言語にもFORTRANにも入出力関数がありますが、FORTRANの入出力関数はOS上のC言語 の入出力関数(api)とは別なんでしょうか? それともFORTRANの入出力関数はCの入出力関数に置き換える仕組みになってるのでしょうか? また、FORTARANってOSがないPC上でも動くのでしょうか(動いてたのでしょうか) 使い捨ての構造体 初学者で恥ずかしいのですが、どうしても分からないのでご教授願いたいと思います。C言語で構造体というのがありますが、概要は分かりますが、使い捨てにするものがあるとのことでした。どのような場合にそのようなことをするのでしょう? qsortを用いた構造体配列のソート お世話になります。 http://simd.jugem.jp/?eid=116 を参考にqsortを用いた構造体配列のソートをC言語で記述しようとしています。 上記のページは、構造体のメンバが配列でない場合です 今回は、メンバが配列のときの構造体配列のソートを実現したいと思っています。 つまり、 typedef struct{ int a; int b[1024]; int c[1024]; }TEST; という構造体配列があって、 TEST base[256]; と宣言し、メンバの配列の添え字を基準としてソートしたいときには、どのようにqsortを用いれば良いのでしょうか、ということです。 どうしたらよいかわからず途方にくれています。 つまり、下のようなソートが行われるには、どのようなプログラムを書けばいいかということです。 構造体でソートするものとします。 構造体でソートできれば、qsortを使っていなくても構いません。 プログラムの得意な方がおりましたら、ご教授下さい。 <ソート前> //************************************************ test[ 0].b[0] = 3; test[ 1].b[0] = 102; ... test[255].b[0] = 1; ------------ test[ 0].b[1] = 99; test[ 1].b[1] = 200; ... test[255].b[1] = 2; ------------ ... ------------ test[ 0].b[1023] = 99; test[ 1].b[1023] = 9; ... test[255].b[1023] = 200; //************************************************** <ソート後>:test[x]ではなく、b[y]を基準としてそれぞれのくくりをソートしたい //************************************************ test[ 0].b[0] = 1; test[ 1].b[0] = 3; ... test[255].b[0] = 102; ------------ test[ 0].b[1] = 2; test[ 1].b[1] = 99; ... test[255].b[1] = 200; ------------ ... ------------ test[ 0].b[1023] = 9; test[ 1].b[1023] = 99; ... test[255].b[1023] = 200; ************************************************** 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
丁寧な回答有難うございます。 たいへん助かります。