摂氏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));
}
No.3ベストアンサー
- 回答日時:
以下のようにして下さい。
#include<stdio.h>
/* F:華氏(input)*/
/* 戻り値:摂氏*/
double functionC(double F)
{
return (5.0/9.0*(F-32.0));
}
main(void)
{
double C,F3,F4,i,j;
printf("摂氏の値を計算します\n 華氏の下限、上限、きざみを入力してください\n");
printf("華氏の下限:\n"); scanf("%lf", &F3);
printf("華氏の上限:\n"); scanf("%lf", &F4);
printf("きざみ:\n"); scanf("%lf", &i);
printf("摂氏 華氏\n");
/* 以下は入力値の確認*/
printf ("F3 =%f F4=%f i=%f\n",F3,F4,i);
for(j=F3; j<=F4; j+= i)
printf("%lf %lf\n",functionC(j),j);
}
-------------------------------
要点は
1.double型は %lfで操作する
2.double型と組み合わせる定数は5.0の用に小数点を
付ける。
3.関数 functionCは、入力は華氏 戻り値が摂氏
の関数となる。
4.華氏の下限から上限まで、刻み幅単位でのループは
for(j=F3; j<=F4; j+= i)
となる。
以上です。
ありがとうございました!
わからない部分がほとんど明らかになりとても助かりました。
lfにすることもやったはずなのに忘れていたり・・
すごく参考になりました!
No.4
- 回答日時:
No3 tatsu99 さんに補足です。
printf() は、float でも double でも、%f です。
%lf が定義されているのは scanf() だけで、printf() では動作が未定義だったはず。
ただし、たいていのコンパイラでは無難に動作してくれるようです。
# scanf() に引っ張られて printf() でも %lf としてしまう人が多いから
# なんでしょうか。。。
私はたしかint型とdouble型の区別をするためにdouble型内では%lfとしたほうが自分が間違えにくいと教わりました。ありがとうございました。
No.2
- 回答日時:
これ、コンパイルできますか?
パッと見てコンパイルできないと思いますが。
理由
関数functionC()の定義の引数の数(4)と呼び出しの引数の数(3)が合わない。
関数functionC()でしていることと表示がバラバラです。
tempで「最後に計算した結果のみ」を返しているので、最後の値だけが表示されるのでしょうか。
printf("%f %f\n", functionC(j,F3,F4));
の変数表示%fが2ヶ所出てきますが、表示される引数はfunctionC(j,F3,F4)の1つです。
for(j=F3; j<=F4; j++)文のjに対して、刻み量iの関係がまったくありません。
ここら辺をチェックしてみましょう。
**** 参考 ****
※1
関数functionC()中のローカル変数とmain()中のローカル変数は互いに独立なので、F, F1, F2, F3, F4の変数名の付け方に違和感を覚えます。
C → cels
F → fahr
のような変数名が好まれます。大文字の変数名はほとんど使いません。
※2
for(j=F3; j<=F4; j++)
変数jは倍精度実数ですが、その変数にインクリメント演算をするのは(正しく動きますが)おかしいです。
インクリメント・デクリメント演算子は整数に用いるべきです。
実数の場合は、j+=1.0;が適切でしょう。
No.1
- 回答日時:
質問にあるプログラムを拝見した所
「プログラムで何をさせたいのか判っていない」
と思います。
まずは
「プログラムで何をさせたいのか、日本語で記述してみる」
というのを試して下さい。
例えば、最初は
1.華氏の下限を実数型変数F3に取り込む
2.華氏の上限を実数型変数F4に取り込む
3.(以下略)
のように記述します。
次に、記述した日本語をCの命令や関数に一対一で対応するくらいまで細分化して記述し直します。例えば
1.華氏の下限を実数型変数F3に取り込む
↓
1-1.「華氏の下限:」と画面表示する
1-2.キーボードから実数型変数F3に実数を取り込む
のように、命令語や関数1つに対応するくらいまで細かくします。
Cでコーディングするのはそれが出来てからの話で、コーディングするのはまだ時期尚早と思われます。
いきなりプログラム言語そのままで書き始めても、絶対にうまく行きません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
コマンドプロンプトがすぐ消える
-
C言語で四則演算を使って結果が...
-
CTRL+Dでループを抜けるには
-
switch分のケースを範囲数?に...
-
文字と数字の判定について
-
unsigned int型について
-
C言語で、「自然数nを入力し、n...
-
getcharの連続について
-
入力したお金の金額からお札の...
-
8人分のテストの点数を入力し、...
-
int型 00 を表示するのに0とな...
-
C言語で 選択肢: |?| |?| |?| 1...
-
数当てゲームを作っているのですが
-
【プログラム】2の倍数で表示非...
-
アドレスの比較について
-
C言語プログラミングで「コマン...
-
C言語の数値入力
-
改行について 1行に何個かづ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
コンパイルエラーについて
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報