初めまして。
最近c言語の勉強を始めました。
3日ほど考えているのですが完成せず困っています。
問題の内容は 三角形の3辺の長さa, b, cをキー入力し、その面積sを表示するプログラムを作れ。
計算にはヘロンの公式を使い、小数値でも正しく面積が計算できること。
平方根の計算には標準ライブラリを使用する。
絶対値の計算は標準ライブラリを使わない場合と使う場合の2通り作成する。
三角形ができないときはメッセージを表示する。
ヘロンの公式以外の方法で計算した面積と一致すること。
a, b, cで三角形ができるとき |a - b| < c < a + b
三角形の面積は次の式で求められる p ← ( a + b + c ) / 2
s ← √p(p - a)(p - b)(p - c)
とゆうヘロンの公式をしようして面積を計算するものです
例えばa=1 b=1 c=6などと入力すると三角形はできないと思うのですがなぜかエラーメッセージが出ず
おかしな数値が出てきてしまいます。
最初に絶対値の計算をIF文で出力し、その後あてはめています。
どうしたら問題のように正しく出力できるでしょうか。
ご指南よろしくお願いします。
#include "pch.h"
#include <iostream>
#include <stdio.h>
int main(void)
{
//三角形の面積
float S, s;
//三角形の辺
float a, b, c, d;
//3辺の長さを入力
printf("三角形の3辺の長さを入力:\n");
printf("辺 a = ");
scanf_s("%f", &a);
printf("辺 b = ");
scanf_s("%f", &b);
printf("辺 c = ");
scanf_s("%f", &c);
if (-(a - b)) {
printf("三角形ができません");
}
else if (a - b); {
d = (a - b);
}
if( d < c < a + b){
s = (a + b + c) / 2.0;
S = sqrt(s*(s - a)*(s - b)*(s - c));
printf("%.3f",S);
}
else {
printf("三角形ができません");
return 0;
}
c言語での三角形の面積の求め方
Re: c言語での三角形の面積の求め方
この考え方とa, b, cで三角形ができるとき |a - b| < c < a + b
このコードで、同じことをしていますか?また、else ifの後ろにある謎のセミコロンは何でしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: c言語での三角形の面積の求め方
ありがとうございます。
絶対値をif文で処理する方法が分からなく悩んでいます。。
例文などでご教授いただけるとありがたいです。
;に関しましては、ビジュアルスタジオ2017でコンパイルしているのですが
なぜかエラーが出るので;をうっています。。。。
絶対値をif文で処理する方法が分からなく悩んでいます。。
例文などでご教授いただけるとありがたいです。
;に関しましては、ビジュアルスタジオ2017でコンパイルしているのですが
なぜかエラーが出るので;をうっています。。。。
Re: c言語での三角形の面積の求め方
絶対値の問題以外に気になるところがあります。
#include "pch.h" ですが、pch.h の中身が分からないと、
プログラムが正しいかどうか判定できません。
#include <iostream> ですが、これは C ではなく C++ のヘッダです。
ソースファイル名の拡張子を .c にしていますか?
.cpp にしていると、それは C++ でコンパイルしていることになります。
平方根を求めるために sqrt という関数を使用していますが、
そのためには、#include <math.h> が必要です。
main 関数の「{」に対応する「}」がありません。
フォーラムルールに従って、コードタグを使いましょう。
#include "pch.h" ですが、pch.h の中身が分からないと、
プログラムが正しいかどうか判定できません。
#include <iostream> ですが、これは C ではなく C++ のヘッダです。
ソースファイル名の拡張子を .c にしていますか?
.cpp にしていると、それは C++ でコンパイルしていることになります。
平方根を求めるために sqrt という関数を使用していますが、
そのためには、#include <math.h> が必要です。
main 関数の「{」に対応する「}」がありません。
フォーラムルールに従って、コードタグを使いましょう。
-
- 記事: 48
- 登録日時: 7年前
Re: c言語での三角形の面積の求め方
値が引き算によって絶対値を求めるやり方なら例えばa-bの場合、変数bの方が大きい場合、
負数になります。これではいくら引き算で絶対値を求めてもうまくいきません。
なので、if文で負数になりそうな場合を調べて以下のような感じでどうでしょうか?
if(aがbより大きければ)TheAbs=a-●; else if(aよりbが大きければ) TheAbs=●-●;
負数になります。これではいくら引き算で絶対値を求めてもうまくいきません。
なので、if文で負数になりそうな場合を調べて以下のような感じでどうでしょうか?
if(aがbより大きければ)TheAbs=a-●; else if(aよりbが大きければ) TheAbs=●-●;
Re: c言語での三角形の面積の求め方
次のコードの意味が分かりますか?
#include <stdio.h>
int main(void)
{
double a, b, d;
while (printf("a b? "), scanf("%lf%lf", &a, &b) == 2) {
d = a - b;
if (d < 0)
d = -d;
printf("|a - b| = %g\n", d);
if (a > b)
d = a - b;
else
d = b - a;
printf("|a - b| = %g\n", d);
}
}