HILFE! Objektorientierte Programmierung! Komme nicht weiter! Morgen Klausur :-O



  • Hallo,

    Ich hab da ein großes Problem: Ich schreibe morgen eine Klausur zum Thema Objektorientierte Programmierung und habe heute versucht ein kleines Programm zur Berechnung von Polarkoordinaten aus karthesisches Koordinatenn geschrieben. Doch irgendwie klappt das mit meiner Methode "berechnen" nicht... Hab schon alles veruscht! (Achtung noch n00b ^^) Also hier mal der Quellcode:

    Entschuldigt grobe Fehler da ich glaube ich zum Schluss ALLES verdreht habe! Würd mich über schnelle antworten freuen 🙂

    #include <iostream>
    #include <conio.h>
    #include <cmath>

    using namespace std;

    double lang, wink;

    class vektor
    {
    public: double x, y;
    public: double l, w, b;

    public: void eingabe()
    {
    cout<<"Geben sie die Koordinaten ein:"<<endl;
    cout<<"X = ";
    cin>>x;
    cout<<"Y = ";
    cin>>y;
    }
    public: double berechnen(vektor x, vektor y)
    {
    vektor k;

    k.l=sqrt(pow(x.x,2)+pow(y.y,2));

    k.b=asin(y.y/l);

    k.w=(180*b)/M_PI;

    if(x.x<0&&y.y>=0)
    {
    k.w=180-k.w;
    }
    if(x.x<0&&y.y<0)
    {
    k.w=k.w+180;
    }
    if(x.x>=0&&y.y<0)
    {
    k.w=360-k.w;
    }
    }
    };
    int main()
    {
    char neu;
    double x, y;
    vektor a, b;

    do
    {
    system("CLS");
    a.eingabe();
    a.berechnen();
    cout<<"Die Polarkoordinaten lauten ( "<<b.l<<" | "<<b.w<<" )"<<endl;
    system("pause");
    system("CLS");
    cout<<"Neue Koordinaten umrechnen? (j/n): ";
    cin>>neu;
    }while(neu=='j');

    getch();
    return 0;
    }

    Danke schonmal für die Hilfe!



  • hi

    1. code-formatierung
    2. welches problem ? fehlermelungen oder so ?

    Meep Meep



  • Na ja zumindest die Mathematik in deinem Programm scheint in Ordnung zu sein.
    Von C++ scheinst du noch sehr wenig Ahnung zu haben. Habe den code umgebaut und der sollte halbwegs funktionieren.

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    class vektor {
      public: double x, y;
      public: double l, w, b;
    
      public: void eingabe(){
        cout<<"Geben sie die Koordinaten ein:"<<endl;
        cout<<"X = ";
        cin>>x;
        cout<<"Y = ";
        cin>>y;
      }
      public: double berechnen() {
        vektor k;
    
        l=sqrt(pow(x,2)+pow(y,2));
    
        b=asin(y/l);
    
        w=(180*b)/M_PI;
    
        if(x<0&&y>=0){
          w=180-w;
        }
        if(x<0&&y<0) {
          w=w+180;
        }
        if(x>=0&&y<0) {
          w=360-w;
        }
      }
    };
    
    int main() {
      vektor a;
      char neu;
      do {
        a.eingabe();
        a.berechnen();
        cout<<"Die Polarkoordinaten lauten ( " << a.l << " | " << a.w << " )" << endl;
        cout<<"Neue Koordinaten umrechnen? (j/n): ";
        cin>>neu;
      }while(neu=='j');
    
      return 0;
    }
    

    Kurt



  • Vielen Dank ZuK !

    Das ging ja schnell 😃 Jetzt hab ich wenigstens Zeit genug um mir die Fehler genauer anzuschauen!

    Danke nochmal 😃

    Greetz Tim



  • Laß die "public's" weg und mach aus "class" eine "struct"



  • Habe mir den code nochmals angesehen und bin überhaupt nicht zufrieden.
    eine etwas bessere Version wäre.

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    class vektor {
      public: 
        vektor(double _x = 0.0, double _y = 0.0 ) :x(_x),y(_y) { berechnen(); }
        double get_l() {return l; }
        double get_w() {return w; }
      private:
        void berechnen() {
           l=sqrt(pow(x,2)+pow(y,2));
           b=asin(y/l);
           w=(180*b)/M_PI;
           if(x<0&&y>=0){
              w=180-w;
           }
           if(x<0&&y<0) {
              w=w+180;
           }
           if(x>=0&&y<0) {
              w=360-w;
           }
        }
        double x, y;
        double l, w, b;
    };
    
    double eingabe(const char * prompt ){
        double v;
        cout<<prompt;
        cin>>v;
        return v;
    }
    
    int main() {
      char neu;
      double x, y;
      do {
        cout<<"Geben sie die Koordinaten ein:"<<endl;
        x = eingabe( "X = " );
        y = eingabe( "Y = " );
    
        vektor a(x , y);
    
        cout<<"Die Polarkoordinaten lauten ( " << a.get_l() << " | " << a.get_w() << " )" << endl;
        cout<<"Neue Koordinaten umrechnen? (j/n): ";
        cin>>neu;
      }while(neu=='j');
    
      return 0;
    }
    

    Kurt



  • Es fehlt noch etwas in der Art

    const double M_PI = 3.14159265359;
    

    Zudem sollte man in diesem Fall, auf die Verwendung von pow verzichten. Ein x*x oder y*y ist da besser.


Log in to reply