Funkcje obliczajace właściwości trójkąta - jak podejść do zadania?

0

.W tym zadaniu sam zdecyduj na jakie funkcje ma być podzielony program. W programie głównym wczytaj 3 boki
trójkąta, a następnie napisz funkcje, w których zrealizujesz następujące zadania: znajdowanie pola, obwodu,
sprawdzanie czy jest to w ogóle trójkąt, sprawdzanie, czy jest prostokątny, czy jest równoboczny, (*) znalezienie
długości podstawy opadającej na każdy z boków.

Zastanawiam się w jaki sposób podejść do tego zadania. Nie wiem gdzie zadeklarować 3 boki, które mają być wczzytane. Mam je zadeklarować jako zmienne globalne? Czy pod funkcją int main () gdzie będę wywoywał inne funkcje, aby je później wypisać poza mainem?

0
int main (){
	
int a = 3;
int b = 4;
int c = 5;
cin >> a;
cin>> b;
cin >> c;

float pole ()

float obwod ()
	return 0;
}

float pole (float a, float b)
{
	return (a*b)/2;
}

float obwod (float a, float b, float c)
{
	return a+b+c;
}

Zacząłem część zadanae ale nie wiem co jest źle. Dałby ktoś jaką wskazówkę na co powinienem zwrócić uwagę aby poprawić coś w tym zadaniu?

0

Najpierw Musisz napisać funkcję sprawdzającą nierównośc trójkąta , a jak zwróci true, to sprawdzenie typu, obwód, pole.

0

Pole możesz obliczyć za pomocą wzoru Herona.
Trójkąt o bokach a, b, c spełnia: a+b>c ∧ a+c>b ∧ b+c > a.

Na marginesie mam pytanie: co jeśli chciałbym sprawdzać czy trójkąt o bokach a, b, c jest faktycznie trójkątem za pomocą sprawdzania czy suma kątów jest aby na pewno równa 180? (powiedzmy, że takie mam odgórne polecenie czy coś).
Za pomocą np. twierdzenia cosinusów wyznaczam więc wszystkie kąty, no i właśnie tu jest problem - w końcu double ma swoją ograniczoną precyzję, co jeśli wartości a, b, c będą 'rakowe' i suma tych kątów nie da mi 180 tylko bardzo blisko 180? Jak się z tego typu problemem uporać? Zamiast double jakbym skorzystał z jakiegoś containera z milionkrotnie większą precyzją nadal chyba miałbym ten sam problem.

Chodzi mi tu bardziej o problem z tym zaokrągleniem/precyzją, a nie problem samego w sobie trójkąta. :P

0
lcbnd1 napisał(a):
int main (){
	
int a = 3;
int b = 4;
int c = 5;
cin >> a;
cin>> b;
cin >> c;

float pole ()

float obwod ()
	return 0;
}

float pole (float a, float b)
{
	return (a*b)/2;
}

float obwod (float a, float b, float c)
{
	return a+b+c;
}

Zacząłem część zadanae ale nie wiem co jest źle. Dałby ktoś jaką wskazówkę na co powinienem zwrócić uwagę aby poprawić coś w tym zadaniu?

Przede wszystkim, program jest niepoprawny składniowo. Zanim zaczniesz deklarować różne funkcje, powinieneś zamknąć funkcję main.

1 użytkowników online, w tym zalogowanych: 0, gości: 1