• ベストアンサー

FORTRANの課題

大学の授業の課題で 問 摂氏(C)、華氏(F)、絶対温度(K)の間で温度換算するプログラムを作れ。ただし、入力は「温度値、単位を表す文字」とし、それを換算した2つの温度を出力するようにつくること。例えば「25.0、'F'」と入力したら華氏温度25Fを摂氏温度と絶対温度に換算したものを表示する。 *温度単位の変換式は、摂氏温度をCとしたとき、F=9C/5+32 K=C+273.1 という課題が出されたのですがよく分からないので、アドバイス、回答の方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • a987654
  • ベストアンサー率26% (112/415)
回答No.3

>課題で と言う事なので、やはり注意点のみ >「25.0、'F'」と入力したら とありますので、文字入力が前提でしょうか?そうだとすれば、 1、READで取り込んだ文字列を数値部分と摂氏華氏コード部分に分ける。 2、数値部分の文字列を、数値変換する。   整数計算にならない様に変数の型にご注意 3、IF文で絶対温度を判断して   K→C変換式に与え計算   C結果からC→F変換   (elseは不要) 4、IF文で摂氏を判断して   C→K変換式に与え計算   C→F変換式に与え計算   (elseは不要) 5、IF文で華氏を判断して   F→C変換式に与え計算   C→K変換式に与え計算   (華氏→摂氏変換式はご自分でどうぞ)   (elseは不要) 6、表示を行う   表示の書式指定にご注意

その他の回答 (2)

  • ftomo100
  • ベストアンサー率41% (297/723)
回答No.2

温度と温度単位をとreadさせておいて、 '華氏なら if(温度単位.eq.`F`) then   摂氏計算&表示   絶対温度計算&表示 '摂氏なら else if(温度単位.eq.`C`) then   華氏計算&表示   絶対温度計算&表示 '絶対温度なら else if(温度単位.eq.`K`) then   華氏計算&表示   摂氏温度計算&表示 end if ていう流れだと思います。それぞれ、変数の宣言をわすれずに。 計算式は、それぞれ方程式が出ているので、例えば質問のF<->Cの式だと F=9C/5+32 を逆にCについて解くと C=○○  これを上記の計算式に当てはめる。この要領で、1つの値が当てられた場合に他の2つの値を求める式を導きだせば良い。 課題との事なので、あえて詳しい事は省略します。 #FORTRAN 15年振りだ

  • Tsan
  • ベストアンサー率20% (184/909)
回答No.1

温度値と単位を入力からREADしてそれぞれ変数に代入 単位を判定するif文でそれぞれ F->Cの変換、F->Kの変換 C->Fの変換、C->Kの変換 K->Fの変換、K->Cの変換 に分岐して結果を出力にWRITEする。 if文がちゃんと使えるかがキーになると思います。

関連するQ&A

  • FORTRAN77でプログラミング

    今年、大学の授業でFORTRAN77を使ったプログラミングを勉強することになりました。 今で3回授業が終わったところなのですが、いきなりつまずいてしまい皆さんの知恵をお借りしたいと思います。。 作るプログラムは 問:摂氏(C)、華氏(F)、絶対温度(K)のいずれかの値を { xx(温度の数値),yy(CかFかK) }のように入力したときに、入力した値以外の単位での温度値が表示されるプログラムを作れ。 自分なりに作ってみたのが下のプログラムです。 全く論外なプログラミングをしているかもしれませんが…。 (自作) c234567 implicit none real n,cx,fx,kx character*1 d,c,f,k c n:入力値 d:入力された温度の値 C:摂氏 F:華氏 K:絶対温度 write(*,*) '温度値、単位を表す文字を入力してください。' read(*,*)n,d if(d.eq.c)then cx=n fx=cx*(9/5)+32 kx=cx+273.15 else if(d.eq.f)then fx=n cx=(fx-32)*(5/9) kx=cx+273.15 else kx=n cx=kx-273.15 fx=cx*(9/5)+32 end if end if write(*,50) cx,'C',fx,'F',kx,'K' 50 format(' ',f7.3,a3,f7.3,a3,f7.3,a3) stop end これをどうしたらいいのでしょうか。 ちなみに、使用しているFORTRAN77は Compaq Visual Fortran Optimizing Compiler Version 6.1 です。 どうぞよろしくお願いします。

  • FORTRAN手助けを・・

    摂氏から華氏、華氏から摂氏が出るプログラムを作ろうと思っています。 具体的に言えば100.0C(摂氏)を入力すると...F(華氏)の形で表示したいのです。最後にF,Cをつけ、それによって摂氏、華氏と認識するにはどのようにしたら良いのでしょうか? 答えでなくてもかまいません。何かヒントになるようなことでもいいので教えて下さい。

  • プログラミングの宿題

    大学に入って初めてプログラミングを習いましたが、2回目の授業ではやくも関数のプログラムの宿題が出されました。 問題は「摂氏Cを入力し、これを華氏Fと絶対温度Kに換算せよ。ただし換算式はそれぞれ、F = 32.0 + 1.8c、K = 273.16 + cとし、華氏および絶対温度を求める部分は、それぞれ関数化すること。」というものなのですが、一応教科書にのっとって、作ってみましたが、コンパイルエラーが起こってしまいます。解決策が見つからないので質問することにしました。 以下が私が作ったプログラムです。 ------------------------------------------------- #include<stdio.h> float Sessi(float); void main(void) { float c; float kasi, zettaiondo; c = 25; kasi = Sessi(c); zettaiondo = Sessi(c); printf("華氏F = %f\n", kasi); printf("絶対温度K = %f\n", zettaiondo); } float Sessi(float c) { float f; f = 32.0 + 1.8 * c; return(f); float k; k = 273.16 + c; return(k); } ------------------------------------------------- 上はとりあえず、C=25の場合の換算です。 このプログラムですと、実行はできるのですが、C=○のところにどんな数字を入れても華氏F、絶対温度Kともに、77.00000になってしまいます。明らかにおかしいのは自分でも分かりますが、まだはじめたばかりなので分けが分かりません。 慣れている方には馬鹿馬鹿しい質問ですが、ご指摘お願い致します。

  • プログラム改良 求む

    こんにちは 以下の摂氏を華氏に変換するプログラミングを、摂氏が入力された場合はそのまま出力し、華氏が入力された場合は摂氏に変換してから出力するようなプログラミングに改良したいです。 #include <stdio.h> int main() { printf("摂氏を華氏に変換します。変換したい温度を摂氏で入力してください。\n"); double c, f; scanf("%lf",&c); f = (c * 9 / 5) + 32; printf("%lfºFです。", f);    return 0; }  今のところ、プログラムにどのように摂氏を華氏の違いを認識させればいいかがわかりません。分かりやすくコードを添えていただけるとさらに助かります。お願いします。

  • FORTRAN77

    助けてください~ --------------------------------------- 華氏゜Fが与えられた時、摂氏℃と絶対温度Zを求めよ C=(5/9)(F-32),Z=C+273.16 ここで華氏゜Fは書式カードF1.5でカードに用意されていて、数値999.9のデータを読み込んだら終わりとする。 ただし、華氏゜Fの値は、-50.0゜Fから200.0゜Fまで10.0゜Fごとに変化させる。 --------------------------------------- で、私が頑張って(っていっても教科書を見ながら)書いたのが以下です。 --------------------------------------- * write(6,200) 200 format(1h ,8x,1hf,10x,1hc, 9x,1hz) 10 read(5,100)f 100 format(f5.1) if(f.eq.999.9)stop c=(f-32.0)*5.0/9.0 z=c+273.16 write(6,201)f,c,z 201 format(1h ,3(5x,f5.1)) go to 10 end ------------------------------------- 100 formatの下からdo文を使うのが狙いかと思いますがよくわかりません。 ちなみに参考教科書は入力データが ------------------------------------- 32.5 135.5 68.3 999.9 ------------------------------------- となっていました。多分これは使わないです。 よろしくお願いします(><)

  • 線膨張係数の換算

    あるグラフを読み取り材料データを換算しているのですが、 線膨張係数の華氏から摂氏への換算方法がわかりません。 換算方法がわかる方がいらっしゃればお教え下さい。 具体的に言うと8.5x10-6(in/in/F°)を摂氏(mm/℃,SI単位系)の値に変えたいのです。 換算式について、  1.8×線膨張係数(華氏値)=線膨張係数(摂氏値) で良いと思うのですが、他者に ・inをmmに変換するとかしなくて良いのか? ・華氏⇒摂氏温度変換のように-32しなくても良いのか? 等、質問されて本当に合っているか少々不安になった為、 質問しました。 分かり易い回答だと助かります。 よろしくお願い致します。

  • おねがいします

    摂氏と華氏について教えてください。 37度の体温は摂氏ですか? これを華氏にするにはどんな計算式か教えてください。 絶対温度とかー273とかはぜんぜん関係ないですよね? T=-273+t 華氏はF?? お願いします

  • 華氏温度での科学対応

    華氏温度と摂氏温度、日常生活では所詮慣れの問題だとは思うのですが、華氏温度の国の人達は科学(特に物理や化学)の分野ではどうしてるんでしょう。1度の幅が違うからケルビンに換算して使う公式とかそうとう面倒くさいですよね… そういう分野だけは摂氏や絶対温度を使っている?学生がボイル・シャルルとか勉強する時は、実感のない単なる数値として摂氏で出題されたりしてる?

  • 摂氏の値を計算するプログラム・・?

    摂氏Cと華氏Fの間には C=5/9(F-32)という関係式があり、華氏の上限、下限、きざみを入力して摂氏の値を求めるプログラムを関数を使って作りたいのですが、自分で作ってみたところ関数の部分がよくわかりません。printf("摂氏 華氏\n");までは画面上に出力されます。そのあとの結果が出ないのです。以下に自分で書いたものを書きますので、どこをどう直したらいいか教えてください!お願いします!! #include<stdio.h> double functionC(double F,double F1,double F2,double l) { double temp; for(F=F1; F<=F2; F++){ F = F+l; temp = 5/9*(F-32); } return(temp); } main(void) { double C,F3,F4,i,j; printf("摂氏の値を計算します\n 華氏の下限、上限、きざみを入力してください\n"); printf("華氏の下限:\n"); scanf("%f", &F3); printf("華氏の上限:\n"); scanf("%f", &F4); printf("きざみ:\n"); scanf("%f", &i); printf("摂氏 華氏\n"); for(j=F3; j<=F4; j++) printf("%f %f\n", functionC(j,F3,F4)); }

  • 線膨張係数の換算について

    アメリカより工業用樹脂を輸入して国内販売する事となりました。 そこでデータを換算しているのですが線膨張係数の華氏より摂氏の換算方法がわかりません。 換算方法がわかる方がいらっしゃればお教え下さい。 具体的に言えば 4.18x10-5(in/in/F°)を摂氏(℃)の値に変えたいのです。

専門家に質問してみよう