Programm zur Überprüfung ob ein Punkt im Kreis liegt oder nicht

  • Programm zur Überprüfung ob ein Punkt im Kreis liegt oder nicht

    Hallo,
    Ich muss einn Programm schreiben das prüft ob ein punkt im kreis liegt oder nicht (in C++) aber ich weiß nicht genau wie das gehen soll kann mir jemand mal bischen helfen.
    Hab schon bischen angefangen aber kommme nicht weiter.


    danke in voraus


    Quellcode

    1. # include <iostream>
    2. #include <math.h>
    3. using namespace std;
    4. int main ()
    5. {
    6. float My, Mx, r, Py, Px;
    7. float len;
    8. float x,y;
    9. cout<<"Bitte geben Sie die Koardinate des Kreises ein My"<< endl;
    10. cin>>My;
    11. cout<<"Bitte geben Sie die Koardinate des Kreises ein Mx"<<endl;
    12. cin>>Mx;
    13. cout<<"Bitte geben Sie den radius des Kreises ein r"<<endl;
    14. cin>>r;
    15. cout<<"Bitte geben Sie den Punkt Py der Grade ein"<<endl;
    16. cin>>Py,
    17. cout<<"Bitte geben Sie den Punkt Px der Grade ein"<<endl;
    18. cin>>Px;
    19. len = (Px - Mx, 2);
    20. len = (Py - My, 2);
    21. len = sqrt(x+y);
    22. return 0;
    23. }
    Alles anzeigen


    könntet ihr vlt. das programm berichtigen oder ein bischen verfolständigen.
    Bilder
    • 123.JPG

      102,56 kB, 1.024×768, 2.416 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von pitak ()

  • Wenn es auf der Kreislinie liegen soll kann man auch die Kreisgleichung nehmen (x-xm)²-(y-ym)²=r² ansonsten empfehle ich für mathemathische Probleme aller Art eigentlich immer diese Seite: arndt-bruenner.de/mathe/mathekurse.htm

    Die ist wirklich gut, ich glaub die packe ich nachher mal irgendwo ins Wiki.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Quellcode

    1. #include <cmath>
    2. r = std::sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))


    Quellcode

    1. (Px-Max,2) == 2
    was wetten :D (Außer du hast operator,(float, int) überladen, natürlich ;) )
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • # include <iostream>
    #include <math.h>
    #include <cmath>
    using namespace std;

    int main ()
    {
    float y1, x1, r, y2, x2;
    float len;
    float x,y;

    cout<<"Bitte geben Sie die Koardinate des Kreises ein My"<< endl;
    cin>>y1;
    cout<<"Bitte geben Sie die Koardinate des Kreises ein Mx"<<endl;
    cin>>x1;
    cout<<"Bitte geben Sie den radius des Kreises ein r"<<endl;
    cin>>r;
    cout<<"Bitte geben Sie den Punkt Py der Grade ein"<<endl;
    cin>>y2,
    cout<<"Bitte geben Sie den Punkt Px der Grade ein"<<endl;
    cin>>x2;

    r = std::sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

    len = sqrt (x+y);

    if ((r >= len) && ( r <= len)) {
    cout<<"auf"<<endl;}
    else if (len > r){
    cout<< "inerhalb"<<endl;
    }
    else{
    cout<<"ausserhalb"<<endl;}


    return 0;
    }

    Was kann man noch daran verbessern oder ist das programm so OK?
  • Die Syntax-Tags erleichtern die Lesbarkeit ungemein ;)

    Quellcode

    1. #include <iostream>
    2. #include <cmath> // <math.h> ist die C - Version <cmath> die C++, eine reicht ;)
    3. using namespace std;
    4. int main ()
    5. {
    6. static const float epsilon = 0.0002f; // Float rundungsfehler
    7. float y1, x1, r, y2, x2;
    8. float len;
    9. float x,y;
    10. cout<<"Bitte geben Sie die Koardinate des Kreises ein My"<< endl;
    11. cin>>y1;
    12. cout<<"Bitte geben Sie die Koardinate des Kreises ein Mx"<<endl;
    13. cin>>x1;
    14. cout<<"Bitte geben Sie den radius des Kreises ein r"<<endl;
    15. cin>>r;
    16. cout<<"Bitte geben Sie den Punkt Py der Grade ein"<<endl;
    17. cin>>y2,
    18. cout<<"Bitte geben Sie den Punkt Px der Grade ein"<<endl;
    19. cin>>x2;
    20. len = std::sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    21. if (abs(r - len) < epsilon) { // Was soll da deine Version bewirken?
    22. cout<<"auf"<<endl;
    23. }
    24. else if (len < r){ // Muss das nicht so rum sein?
    25. cout<< "inerhalb"<<endl;
    26. }
    27. else{
    28. cout<<"ausserhalb"<<endl;
    29. }
    30. }
    Alles anzeigen
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)