c言語での三角形の面積の求め方
Posted: 2018年9月18日(火) 23:35
初めまして。
最近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言語の勉強を始めました。
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;
}