You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Tuesday, February 5th 2008, 7:49pm

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


C/C++ Quellcode

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


könntet ihr vlt. das programm berichtigen oder ein bischen verfolständigen.
pitak has attached the following image:
  • 123.JPG

This post has been edited 1 times, last edit by "pitak" (Feb 5th 2008, 10:03pm)


2

Tuesday, February 5th 2008, 9:14pm

oh, poste doch bitte den Quelltext nicht als Bild. Es gibt Syntaxhighlighting im Forum (unter der Texteingabe).

Was soll denn das (Px-Max,2) bewirken?
Also du verschiebst den Kreis in den Ursprung. Das ist korrekt.
Dann kannst du Entfernung von 0,0 (per Pythagoras) mit dem Radius des Kreises vergleichen.

3

Tuesday, February 5th 2008, 9:21pm

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: http://www.arndt-bruenner.de/mathe/mathekurse.htm

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

4

Tuesday, February 5th 2008, 10:07pm

Das ist Px einmal die P-koordinate und einaml die Mx-koordinate.



Was soll denn das (Px-Max,2) bewirken?

5

Wednesday, February 6th 2008, 10:31pm

Wie Kriege ich hin dass das Program die x werte von einander abziehet und die y werte ebenfals und die darausfolgende werte (x,y) danzu quadrat nihmt.
Daraus dan muss ich eine wurzel ziehen aber wie?

6

Wednesday, February 6th 2008, 10:39pm

C/C++ Quellcode

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


C/C++ Quellcode

1
(Px-Max,2) == 2
was wetten :D (Außer du hast operator,(float, int) überladen, natürlich ;) )

This post has been edited 1 times, last edit by "darthdespotism" (Feb 6th 2008, 10:45pm)


7

Thursday, February 7th 2008, 10:08pm

# 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?

8

Thursday, February 7th 2008, 10:23pm

Die Syntax-Tags erleichtern die Lesbarkeit ungemein ;)

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <cmath> // <math.h> ist die C - Version <cmath> die C++, eine reicht ;)
using namespace std;
 
int main ()
{
    static const float epsilon = 0.0002f; // Float rundungsfehler
    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;
 
    len = std::sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 
    if (abs(r - len) < epsilon) { // Was soll da deine Version bewirken?
        cout<<"auf"<<endl;
    }
    else if (len < r){ // Muss das nicht so rum sein?
        cout<< "inerhalb"<<endl;
    }
    else{
        cout<<"ausserhalb"<<endl;
    }
}

Similar threads

Social bookmarks