Programy do sprawdzenia.

0

Treści zadan:

  1. Napisz program, który rozwiązuje równanie kwadratowe postaci: Ax2+Bx+C=0
    Przykład
    Podaj wspolczynniki A B C : 1 –5 6
    Rownanie ma dwa pierwiastki: 2 3

  2. Napisz program, który po podaniu trzech liczb całkowitych wypisuje je w kolejności
    od najmniejszej do największej. Liczby mogą się powtarzać.
    Przykład
    Podaj trzy liczby: 3 2 4
    Liczby po przestawieniu: 2 3 4

  3. Napisz program, który sprawdza, czy dany punkt leży w danym trójkącie.
    Przykład
    Podaj wspolrzedne trojkata:
    Pierwszy wierzcholek: 0 0
    Drugi wierzcholek: 5 0
    Trzeci wierzcholek: 5 5
    Podaj punkt: 3 1
    Punkt lezy w trojkacie

Kody:

#include<stdio.h>
#include<conio.h>
int main()
{
    int a,b,c,delta,x,x1,x2;
    printf("Program rozwiazujacy rownanie kwadratowe postaci Ax2+Bx+C=0\n");
    printf("Wspolczynniki A B C: ");
    scanf("%d%d%d",&a,&b,&c);
    delta=(b*b)-4*a*c;
    if (a==0 && b==0 && c==0) 
       printf("Nieskonczenie wiele rozwiazan");
    else if (delta==0) 
       printf("Pierwiastek wynosi: %d",x=(-b)/2*a);
    else if (delta>0) 
       printf("Pierwiastki wynosza: %d i %d",x1=(-b-delta)/2*a,x2=(-b+delta)/2*a);
    else if (delta<0) 
       printf("Brak rozwiazan");
    getch();
    return 0;
}
#include<stdio.h>
#include<conio.h>
int main ()
{
   int a,b,c;
   printf("Podaj trzy cyfry:");
   scanf("%d%d%d",&a,&b,&c);
   if (a<=b && b<=c) printf("Liczby po przestawieniu:%d %d %d",a,b,c);
   else if (a<=c && c<=b) printf("Liczby po przestawieniu:%d %d %d",a,c,b);
   else if (b<=a && a<=c) printf("Liczby po przestawieniu:%d %d %d",b,a,c);
   else if (b<=c && c<=a) printf("Liczby po przestawieniu:%d %d %d",b,c,a);
   else if (c<=a && a<=b) printf("Liczby po przestawieniu:%d %d %d",c,a,b);
   else printf("Liczby po przestawieniu:%d %d %d",c,b,a);
   getch ();
   return 0;
}
#include<stdio.h>
#include<conio.h>
int main ()
{
   int a,b,c,d,e,f,g,h,pole1,pole2,pole3,pole4;
   printf("Podaj wspolrzedne trojkata:\nPierwszy wierzcholek:");
   scanf("%d%d",&a,&b);
   printf("Drugi wierzcholek:");
   scanf("%d%d",&c,&d);
   printf("Trzeci wierzcholek:");
   scanf("%d%d",&e,&f);
   printf("Podaj punkt:");
   scanf("%d%d",&g,&h);
   pole1=(c-a)*(f-b)-(d-b)*(e-a);
   if (pole1<0) pole1=-pole1;
   pole2=(e-c)*(h-d)-(f-d)*(g-c);
   if (pole2<0) pole2=-pole2;
   pole3=(c-a)*(h-b)-(d-b)*(g-a);
   if (pole3<0) pole3=-pole3;
   pole4=(e-a)*(h-b)-(f-d)*(g-a);
   if (pole4<0) pole4=-pole4;
   if (pole1==pole2+pole3+pole4) printf("Punkt jest w trojkacie");
   else printf("Punkt nie jest w trojkacie");
   getch ();
   return 0;
}

0

A do drugiego nie lepiej zastosowac tablice i sortowanie? Np. robisz vector i do niego wrzucasz liczby, po czym sort(tab.begin(),tab.end()).

0
  1. Napisz program, który sprawdza, czy dany punkt leży w danym trójkącie.
    Przykład
    Podaj wspolrzedne trojkata:
    Pierwszy wierzcholek: 0 0
    Drugi wierzcholek: 5 0
    Trzeci wierzcholek: 5 5
    Podaj punkt: 3 1
    Punkt lezy w trojkacie

takim sposobem mozesz sprawdzic czy punkt jest w trojkacie:

      int px, py; //wspolrzedne punktu
      float d1, d2, d3;   // warunki

      d1 = px*(Ay-By) + py*(Bx-Ax) + //Ax,Ay,Bx,By,Cx,Cy to wspolrzedne wierzcholkow trojkata
           (Ax*By-Ay*Bx);
      d2 = px*(By-Cy) + py*(Cx-Bx) + 
           (Bx*Cy-By*Cx);
      d3 = px*(Cy-Ay) + py*(Ax-Cx) + 
           (Cx*Ay-Cy*Ax);

      if( ((d1<=0)&&(d2<=0)&&(d3<=0)) || ((d1>=0)&&(d2>=0)&&(d3>=0))) printf("Punkt jest w trojkacie");
    }
0

hmm...
d1 tak jakby okresla po jakiej stronie odcinka skierowanego AB znajduje sie punkt p () (d1 ujemne to po jednej stronie, dodatnie to po drugiej)
d2 okresla to samo dla odcinka BC
d3 dla odcinka CA

jesli wszystkie d sa nieujemne albo wszystkie sa niedodatnie oznacza to ze punkt p znajduje sie pomiedzy wszystkimi odcinkami, czyli jest w srodku trojkata.

wzory takie po prostu sa, da sie je pewnie wyprowadzic...

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