Feladat: egy lehetséges háromszög kerülete és területe
Generáljunk 3 egész számot 50-től 200-ig tartó tartományban. Ezek lesznek a lehetséges háromszög oldalai cm-ben. Döntsük el, hogy ez lehet-e háromszög vagy sem, ha igen akkor jelenítsük meg a kerületet és a területet.
29. ábra
Forráskódja:
namespace ConsoleApplication17
{
class
Program
{
static
void Main(string[]
args)
{
int
min = 50, max = 200;
System.Random r = new
System.Random();
int
a = r.Next(min, max);
int
b = r.Next(min, max);
int
c = r.Next(min, max);
if
((a < b + c) && (b < a + c) && (c < b + c))
{
int kerület = a + b + c;
System.Console.WriteLine("Kerület:
" + kerület);
double s = kerület / 2;
double terület = System.Math.Sqrt(s
* (s - a) * (s - b) * (s - c));
System.Console.WriteLine("Terület:
" + System.Math.Round(terület,3));
}
else
{
System.Console.WriteLine("Nem
háromszög!!!");
}
}
}
}
A program első részében a programunk véletlen számokat generál az oldalaknak
int min = 50, max = 200;
System.Random r =
new System.Random();
int a = r.Next(min,
max);
Ha igaz mind a három oldalra, hogy bármely oldal rövidebb, mint a másik két oldal összege, akkor ez egy háromszög.
if
((a<b+c)&&(b<a+c)&&(c<b+c))
Számoljuk ki a kerületet (perimeter):
int kerület=a+b+c;
A geometriában a Heron-képlet, amit az Alexandriai Heron után neveztek el, kimondja, hogy a háromszög „A” területe, amelynek oldalai a, b és c hosszúságúak:
ahol “s” a háromszög félkerülete:
A C#-ban a következő módon írjuk ezt:
double
s=kerület/2;
System.Math.Sqrt(s*(s-a)*(s-b)*(s-c));
Hasonlóan a többi metódushoz a Math objektumban, ez is double értékkel tér vissza. Ez most fontos is, mert mert a tizedesjegyekre is szükségünk lesz.
A terület kíratása:
System.Console.WriteLine("Terület:"+System.Math.Round(terület,3));
A területet double típuskban kapjuk vissza, ami egy hosszú tizedestörtet eredményez. Azt szeretnénk, hogy csak 3 tizedesjegyig történjen meg a kiírás, így használjuk a kerekítést: ezt C# erre a System.Math.Round függvényt kínálja, melynél megadjuk a kerekítendő értéket, majd a megjeleníteni kívánt tizedesjegyek számát.