Augabe von Koordinaten



  • ja das mit dem veraltet hab ich schon öfter gehört, aber daran kann ich leider nichts ändern.Hab mal dir unnützen bibliotheken rausgenommen.

    nun zu meinem fehler.wie übergebe ich denn dann die jeweils 3 koordinaten als array?


  • Mod

    hadamar schrieb:

    ja das mit dem veraltet hab ich schon öfter gehört, aber daran kann ich leider nichts ändern.Hab mal dir unnützen bibliotheken rausgenommen.

    nun zu meinem fehler.wie übergebe ich denn dann die jeweils 3 koordinaten als array?

    Ich könnte es dir zwar erklären, aber dann würdest du die Aufgabenstellung verfehlen:

    – Konstruktor mit Parametern zur Besetzung aller Koordinaten.
    Es sollen 1, 2 oder 3 Parameter verarbeitet werden k¨onnen. Bei fehlenden Para-
    metern werden die entsprechenden Member auf Null gesetzt.

    Du solltest daher lieber das abändern, was der Konstruktor erwartet.

    Zusatztipp:Mit den fehlenden Parametern ist übrigens gemeint, dass du Defaultparameter benutzen sollst. Macht zwar dann keinen Sinn mehr, einen zweiten Konstruktor ganz ohne Parametern zu haben, aber ich will mich mal nicht über die doofe Aufgabenstellung auslassen. Anscheinend bekommt ihr aber kein gutes C++ beigrebracht.



  • ja.das mit dem informatik-unterricht ist eh so ne sache 😞

    evtl hast du ja gemerkt, das ich da nicht allzu versiert bin bei dem thema, deshalb wäre es echt super, wenn du mit etwas genauer (evtl. kleines beispiel oder quelltext editieren) schreiben könntest, was ich da jetzt machen soll.
    danke im voraus.


  • Mod

    Ich habe mich vielleicht etwas kompliziert ausgedrückt, denn das was verlangt ist, kannst du:

    • Derzeit will dein Konstruktor einen Parameter, einen float*.
    • Laut Aufgabenstellung soll er drei Parameter haben. Alle drei sollen float sein*
    • Wenn du das erstmal geändert hast (ganz ganz einfach), können wir uns über Defaultwerte unterhalten

    *: Bist du sicher, dass float gemeint ist? In der Aufgabenstellung steht nur "Gleitkommazahl", ich würde das eigentlich als double verstehen.



  • #include <iostream>
    
    using namespace std;
    
    class Point
    {
          private:
    
                  double coord[2];
    
          public:
    
                 Point(){}
    
                 /*Point(void)
                 {
                            coord[0] = 0;
                            coord[1] = 0;
                            coord[2] = 0;
                 }  */                  
    
                 Point(double c[])
                 {
    
                            coord[0] = c[0];
                            coord[1] = c[1];
                            coord[2] = c[2];
                 }
    
                 void anzeigen()
                 {
                      cout << coord << endl;
                 }
    };        
    
    int main()
    {    
    
         Point Punkte[4] =
         {
               Point(0.0,0.0,0.0),
               Point(1.0,0.0,0.0),
               Point(1.0,2.0,0.0),
               Point(1.0,2.0,3.0),
         };
    
         Punkte[0].anzeigen();
    
        /*Point b(1);
        b.anzeigen();
    
        Point c(1,2);
        c.anzeigen();
    
        /*Point d(1,2,3);
        d.anzeigen();*/
    
        system("pause");
        return 0;
    }
    
    so.so sieht das jetzt bei mir aus. ich hab mal aus den floats, doubles gemacht. ich möchte eigentlich nur, dass mir das programm die 4 verschiedenen punktekoordinaten ausgibt
    

  • Mod

    Aber auf den Hauptfehler bist du noch nicht eingegangen. Das hier ist kein Hausaufgabenmachforum. Und aus einem Parameter drei zu machen ist derart trivial, dass mach ich dir einfach nicht vor. Das wäre beschämend für uns beide.



  • #include <iostream>
    
    using namespace std;
    
    class Point
    {
          private:
    
                  double coord[3];
    
          public:
    
                 Point(void)
                 {
                            coord[0] = 0;
                            coord[1] = 0;
                            coord[2] = 0;
                 }                  
    
                 Point(double a, double b, double c)
                 {
    
                            coord[0] = a;
                            coord[1] = b;
                            coord[2] = c;
                 }
    
                 void anzeigen()
                 {
                      cout << coord[0] << coord[1] << coord [2] << endl;
                 }
    };        
    
    int main()
    {    
    
         Point Punkte[4] =
         {
               Point(0.0,0.0,0.0),
               Point(1.0,0.0,0.0),
               Point(1.0,2.0,0.0),
               Point(1.0,2.0,3.0),
         };
    
         Punkte[3].anzeigen();
    
        /*Point b(1);
        b.anzeigen();
    
        Point c(1,2);
        c.anzeigen();
    
        /*Point d(1,2,3);
        d.anzeigen();*/
    
        system("pause");
        return 0;
    }
    

    also so geht es jetzt. ich dachte aber wenn ich 3 gleitkommavariablen haben will, muss ich nur double coord[2] schreiben, weil der doch bei 0 anfängt zu zählen!?



  • hadamar schrieb:

    also ich benutze dev-c++ da wir den compiler auch in der uni verwenden. das ich dort iostream.h verwende liegt auch nur daran, dass wir das in der UNI so gelehrt bekommen ;).

    Uuuaaahh 😮

    Hallo hadamar,
    bitte sage doch Deinem Dozenten bzw. Prof., dass er sich hier bei uns melden soll!

    hadamar schrieb:

    die fehlermeldung lautet:

    In function int main()': 49 no matching function for call toPoint::Point(int, int, int)'
    candidates are: Point::Point(const Point&)
    Point::Point(float*)
    Point::Point()

    und der fehler taucht noch in zeile 50,51 und 52 auf.

    auf die Gefahr hin, bei SeppJ als Spielverderber durch zufallen; ich meine für einen Anfänger ist das gar nicht offensichtlich. Du brauchst einen Konstrutor mit drei Koordinaten - also:

    Point( double x, double y, double z )
        {
            coord[0] = x;
            coord[1] = y;
            coord[2] = z;
        }
    

    Zeile 11 solltest Du ganz schnell ändern nach

    double coord[3];
    

    .. es sind ja schließlich 3 Koordinaten und nicht zwei.

    Weißt Du wie man optionale Koordinaten definiert?

    Zeile 36 ist auch falsch. Gibt die drei Koordinaten doch einfach hinter einander aus.

    Gruß
    Werner



  • .. ja prima - Du hast es doch ganz allein hin gekriegt.

    hadamar schrieb:

    ich dachte aber wenn ich 3 gleitkommavariablen haben will, muss ich nur double coord[2] schreiben, weil der doch bei 0 anfängt zu zählen!?

    double coord[3];
    

    bedeutet, dass ein Array von 3 double angelegt wird - die drei Elemente haben die Indizes 0, 1 und 2 und coord[2] bezeichnet das 3. also letzte Element.

    Gruß
    Werner



  • oh ja stimmt. das mit den indizes. da war ja was. das hatten wir glaube ich auch mal. ich sitz da nur grad schon 8 stunden dran an dem kram und da übersieht oder vergisst man auch die offensichtlichen dinge. so langsam fang ich aber an, etwas durchzusteigen 🙂 danke für die hilfe


Anmelden zum Antworten