/*
Obliczanie powierzchni trójkąta na podstawie współrzędnych wierzchołków.
Program prosi o podanie współrzędnych trzech punktów,
oblicza i wyprowadza powierzchnie trójkąta z wierzchołkami w podanych punktach.
S=abs((Ax-Cx)*(By-Cy)-(Bx-Cx)*(Ay-Cy))/2

funkcja abs() - zwraca wartość bezwzględną


















*/
#include <iostream>
#include <limits>
#include <math>

using namespace std; // w starszych kompilatorach trzeba zakomentować ten wiersz

struct Punkt { double x,y; };

void Drukuj(Punkt P);
Punkt Wprowadz();

double Powierzchnia(Punkt A,Punkt B,Punkt C)
  {
   return abs((A.x-C.x)*(B.y-C.y)-(B.x-C.x)*(A.y-C.y))/2;
  }

bool SprawdzCzyKoniec(char ZnakKonca)
  {
   cin.clear();
   bool Wynik=(cin.get()==ZnakKonca);
   cout<<"Blad wprowadzenia"<<endl;
   return(Wynik);
  }

int main()
  {
   while(true)
     {
      cout<<"Podaj trzy punkty (!-koniec): ";
      Punkt A=Wprowadz(),B=Wprowadz(),C=Wprowadz();
      if(cin) cout<<"Powierzchnia trojkata wynosi "<<Powierzchnia(A,B,C)<<endl;
      else if(SprawdzCzyKoniec('!')) break;
      cin.ignore(INT_MAX,'\n');
      cout<<endl;
     }
   return 0;
  }

void Drukuj(Punkt P) { cout<<P.x<<'/'<<P.y; }

Punkt Wprowadz()
  {
   Punkt P;
   char Przecinek;
   cin>>P.x>>Przecinek>>P.y;
   if((cin)&&(Przecinek!=',')) cin.clear(ios::badbit);
   return(P);
  }


