Pole dowolnej figury wypuklej

0

witam wszystkich jako iz jest to moj pierwszy post [browar]

napisalem programik do obliczania pola wypuklych figur plaskich ale dziala dobrze tylko dla ilosci wierzcholkow=3 - jak jest wiecej - zmienia wynik...

jest dosc prosty i absolutnie nie moge dojsc gdzie popelnilem blad... please help me - prosze chociaz o wskazowke...

coz - tym programikiem zaczalem zabawe z C++ ;)

  #include <iostream.h> 
  #include <math.h>
  main()
  {
  float Px1, Px2, Px3, Py1, Py2, Py3;
  float pole;
  float p;
  int liczbapkt, i, x;
  float tabx[20];
  float taby[20];

    {
    cout<<"Podaj ilosc wierzcholkow wielokata wypuklego (max 20 pkt):";
    cin>>liczbapkt;
    cout<<"\n";

     if (liczbapkt<3)    cout<<"Podaj wiecej danych\n";

     else
     for(i=1;i<=liczbapkt;i++)
        {
        cout<<"Podaj wspolrzedna X punktu "<<i<<":  ";
        cin>>tabx[i];                         //do tablicy X wpisuje wszystkie wspolrzedne X
        cout<<"\n";
        cout<<"podaj wspolrzedna Y punktu "<<i<<":  ";
        cin>>taby[i];                          //do tablicy Y wpisuje wszystkie wspolrzedne Y
        cout<<"\n\n";
        } 

    cout<<"\n";

    Px1=tabx[liczbapkt];
    Py1=taby[liczbapkt];                                  

    for(x=1;x<=liczbapkt-2;x++)
    {                                     
    Px2=tabx[x];
    Px3=tabx[x+1]; 

    Py2=taby[x];
    Py3=taby[x+1];

    p=((Px2-Px1)*(Py3-Py1))-((Px3-Py1)*(Py2-Py1));         //pole trojkatow 
    p=p/2;
    p=sqrt(p*p);                                         //wartosc bezwzgledna 

    pole=pole+p;                                         //suma pol
    }  

    cout<<"Pole figury wynosi: "<<pole<<"\n\n";
    cout<<"Koniec";

    }
    }

Dziekuje za wszelka pomoc!

0

moze dodam jak program dziala ;)

wspolrzedne X wpisuje do tablicy TABX a Y wpisuje do TABY

wybiera ostatni (stały wierzchołek) i od niego dzieli na trójkąty (prosta do kazdego z wierzcholkow), zlicza ich pola i sumuje az nie istatniego pkt...

0

sproboj tak
p=((Px2-Px1)(Py2-Py1))-((Px3-Px1)(Py3-Py1));
jak nie pomoze to napisz, wtedy sie tym pobawie i moze bede mogl pomoc.

0

WILEKIE DZIEKI [browar]

(a jednak matma ;) )

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