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