以下は、辺が与えられたときに三角形の面積を計算するプログラムのソースコードです。
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int a,b,c;
float s,area;
clrscr();
printf("Enter the lengths of the sides of the triangle:\n");
scanf("%d%d%d",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("Area=%f",area);
getch();
}
TurboC++コンパイラバージョン3.0を使用してプログラムをコンパイルしました。辺を10、10、10とすると、面積は43.301270になります。これは正しいです。しかし、値を1、1、1として差し込むと、プログラムは面積を0.000000と表示しますが、これは明らかに間違っています。さらに、3、3、3の値をプラグインすると、面積が2.000000になりますが、これは間違っています。
プログラムの不安定な動作の理由を知っている人はいますか?どうすれば修正できますか?プログラムをZipファイルとしてアップロードしました。
前もって感謝します。