Program mający sprawdzić czy trójkąt istnieję i obliczyć pole trójkąta z wzoru Herona
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a,b,c,p,Pole;
cout << "podaj a: "; cin >> a;
cout << "podaj b: "; cin >> b;
cout << "podaj c: "; cin >> c;
if (a<b+c && b<a+c && c<a+b) {
p=(a+b+c)/2;
Pole=sqrt(p(p-a)(p-b)*(p-c));
cout << "pole trojkata wynosi: " << Pole;
}
else {
cout << "z podanych dlugosci bokow nie da sie zbudowac trojkata";
}
return 0;
}
niestety nie działa, ktoś wie dlaczego?​


Odpowiedź :

Odpowiedź:

Zapomniałaś o znakach * potrzebnych, aby kompilator mógł to zinterpretować jako mnożenie.

Tutaj poprawiony kodzik:

#include <iostream>

#include <cmath>

#include <math.h>

using namespace std;

int main()

{

float a,b,c,p,Pole;

cout << "podaj a: "; cin >> a;

cout << "podaj b: "; cin >> b;

cout << "podaj c: "; cin >> c;

if (a<b+c && b<a+c && c<a+b)

{

p=(a+b+c)/2;

Pole=sqrt(p*(p-a)*(p-b)*(p-c));

cout << "pole trojkata wynosi: " << Pole;

}

else {

cout << "z podanych dlugosci bokow nie da sie zbudowac trojkata";

}

return 0;

}

Odpowiedź:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

   float a, b, c, p, Pole;

   cout << "podaj a: ";

   cin >> a;

   cout << "podaj b: ";

   cin >> b;

   cout << "podaj c: ";

   cin >> c;

   if (a < b + c && b < a + c && c < a + b)

   {

       p = (a + b + c) / 2;

      Pole = sqrt(p * (p - a) * (p - b) * (p - c)); // tutaj był błąd, bo musisz dać znaki mnożenia, a zostawiłeś puste tak jak jest we wzorze

       cout << "pole trojkata wynosi: " << Pole;

   }

   else

   {

       cout << "z podanych dlugosci bokow nie da sie zbudowac trojkata";

   }

   return 0;

}

Wyjaśnienie:

Wcześniej faktycznie miałem błąd, ale poprawiłem żeby nie wprowadzać w błąd

Jak coś to pytaj :)