Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja liniowa

Ostatnio zmodyfikowano 2018-10-28 21:23
Autor Wiadomość
marenno
Temat założony przez niniejszego użytkownika
Funkcja liniowa
» 2018-10-28 16:39:13
Witam informatyczne świry ;). Napisałem program który wylicza pole i obwód trójkąta o współrzędnych podanych przez użytkownika.
Muszę dopisać jednego ifa który zabezpieczy program przed tym że punkty będą leżały na jednej prostej. Pomożecie?


#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

long int potega(int p, int w)
{
   if (w==0) return 1;
   else return p*potega(p,w-1);
}

const double eps = 0.000001;

double pierwiastek(double P, double eps)
{
   double a = 1., b = P;

       while(fabs(a-b)>=eps)
       {
           a = (a+b)/2.;
           b = P/a;
       }

       return a;
}


int main()
{
    int x, y, x1, y1, x2, y2;
    float obwod, pole, bok1, bok2, bok3, wysokosc;
    cout << "podaj wspolczynni 1 wierzcholka " << endl;
    cin >> x;
    cin >> y;
    cout << "podaj wspolczynni 2 wierzcholka " << endl;
    cin >> x1;
    cin >> y1;
    cout << "podaj wspolczynni 3 wierzcholka " << endl;
    cin >> x2;
    cin >> y2;



        bok1= potega(y-y1,2) + potega(x-x1,2);
        bok2= potega(y-y2,2) + potega(x-x2,2);
        bok3= potega(y1-y2,2) + potega(x1-x2,2);
        bok1= pierwiastek(bok1,eps);
        bok2= pierwiastek(bok2,eps);
        bok3= pierwiastek(bok3,eps);

            if (  y==y1 || x==x1 &  y2==y1 || x2==x1 &  y2==y || x2==x)
            {
                cout<< "taki trojkat nie istnieje";
                return 0;
            }


        obwod = bok1 + bok2 + bok3;
        cout<<"obwod= "<<obwod<<endl;
        obwod = obwod/2;
        pole=obwod * (obwod-bok1)* (obwod-bok2)* (obwod-bok3);
        pole=pierwiastek(pole,eps);
        pole=pole*2;
        cout<<"pole= "<<pole<<endl;



    return 0;

}
P-172699
ksardias
» 2018-10-28 16:54:27
C/C++
if( x == x1 ) &&( x1 == x2 ) ||( y == y1 ) &&( y1 == y2 )
{
    cout << "nieodpowiednie dane wejściowe";
}
P-172700
marenno
Temat założony przez niniejszego użytkownika
@ksardias
» 2018-10-28 16:58:38
ale punkty mogą być na 1,1 2,2 i 3,3 z tego też trójkąt nie powstanie, a ten if tgeo nie wyłapie
P-172701
ksardias
» 2018-10-28 17:05:19
fakt, mój błąd, to może obliczysz długość boków i takie są warunki powstania trójkąta:
-a+b >c
-a+c >b
-b+c >a
P-172702
marenno
Temat założony przez niniejszego użytkownika
» 2018-10-28 17:11:32
robiłem to na samym początku ale jako że program sam sobie robi boki warunek będzie zawsze spełniony
P-172703
ksardias
» 2018-10-28 17:13:57
nie  bardzo rozumiem, podaj przykład gdzie te 3 wyżej opisane warunki są spełnione, a mimo to trójkąt nie istnieje
P-172704
marenno
Temat założony przez niniejszego użytkownika
» 2018-10-28 17:15:17
wydaje mi się żę w jakiś sposób trzeba zastosować wzóz y=ax+b albo Ax+By+C=0
P-172705
marenno
Temat założony przez niniejszego użytkownika
» 2018-10-28 17:28:07
ogólnie machnąłeś się tam bo chyba nie powinno tam być minusa.
mam coś takiego
            if (bok1 > bok2 + bok3 || bok2 > bok1 + bok3 || bok3 > bok2 + bok1  )

            {
                cout<< "taki trojkat nie istnieje";
                return 0;
            }
i program wypisuje mi głupoty przy punktach 1,1 2,2 i 3,3
P-172706
« 1 » 2
  Strona 1 z 2 Następna strona