C++ Cracks gesucht

    • Eugen1
      Eugen1
      Bronze
      Dabei seit: 21.01.2005 Beiträge: 596
      Ich schreibe in ein paar Tagen eine Informatikklausur und ich habe absolut keine Ahnung bei bestimmten Themen. Da hier sicher viele Infostudenten rum laufen, bin ich auf eure Hilfe angewiesen.

      Folgende Aufgabe (es soll c++ sein):

      Gegeben seien folgende Deklarationen.
      code:
      class Vektor3d { // Klasse 3d Vektoren
      private:
      // Attribute
      double x, y, z; // Koordinaten
      public:
      // Konstruktoren
      Vektor3d(); // Nullvektor
      Vektor3d(double x, double y, double z);
      // Operationen
      Vektor3d& operator+=(Vektor3d v);// Addieren
      Vektor3d& operator-(); // Spiegeln
      Vektor3d& operator*=(double s); // Strecken
      double norm(); // Norm
      };
      Vektor3d u, v, w;
      double s = 2.;



      Welche der folgenden Ausdrücke sind nach diesen Deklarationen syntaktisch korrekt?
      a) u += s;
      b) v = -w;
      c) w += -v;
      d) v *= v;
      e) w *= v.x;

      Sie ist glaube ich nicht schwer. Ich habe leider keine Ahnung was ich machen soll :(
  • 13 Antworten
    • KnutderikeaElch
      KnutderikeaElch
      Bronze
      Dabei seit: 06.09.2006 Beiträge: 410
      a) geht auf jeden fall nicht wegen eines typenkonflikts
      du überladest das + ja nur für nen vektor, nicht aber für ein double... klar?
      b) müsste korrekt sein, wobei ich mir ned 100%ig sicher bin ob du nicht das = auch überladen musst....
      c) definitiv korrekt
      d) das is nix, wieder typkonflikt
      und e) funzt <-- oh da hat mein nachrredner recht, das wird nix :D

      vl ham sich kleine fehler eingeschlichen, bin vor 3 jahren auf java umgestiegen.. aba gefühlsmäßig sollte das so sein :D
    • Werzi2001
      Werzi2001
      Bronze
      Dabei seit: 22.01.2006 Beiträge: 130
      Hi,

      also bin mir jetzt nicht 100%ig sicher (mein C++ ist ein bisschen eingerostet) aber folgendes sollte stimmen:

      a)
      s ist double und der +-Oparator ist für double nicht definiert
      => falsch

      b)
      w ist ein Vektor3d und - ist definiert
      => ok

      c)
      + und - sind definiert
      => ok

      d)
      * ist für Vektor3d nicht definiert
      => falsch

      e)
      Das Attribut x der Vektor3d-Klasse ist private
      => falsch

      mfg
      Thomas W
    • daegga
      daegga
      Bronze
      Dabei seit: 11.02.2007 Beiträge: 2.255
      Original von KnutderikeaElch
      a) geht auf jeden fall nicht wegen eines typenkonflikts
      du überladest das + ja nur für nen vektor, nicht aber für ein double... klar?
      b) müsste korrekt sein, wobei ich mir ned 100%ig sicher bin ob du nicht das = auch überladen musst....
      c) definitiv korrekt
      d) das is nix, wieder typkonflikt
      und e) funzt

      vl ham sich kleine fehler eingeschlichen, bin vor 3 jahren auf java umgestiegen.. aba gefühlsmäßig sollte das so sein :D
      e) geht nicht, da man auf eine private variable nicht direkt zugreifen kann
      und = muss man nicht überladen

      b) sollte korrekt sein
      = müsste überladen werden, wenn v=w dastünde. aber da ja die referenz bei -w zurückgegeben wird, sollte das so passen
    • MongolitaFlo
      MongolitaFlo
      Bronze
      Dabei seit: 10.08.2006 Beiträge: 238
      Original von daegga
      = müsste überladen werden, wenn v=w dastünde.
      Warum sollte dem so sein, sind doch beides die selben Typen?
    • andyy1
      andyy1
      Bronze
      Dabei seit: 20.08.2006 Beiträge: 1.816
      Wurde ja schon alles gesagt.

      Zu b) operator= muss nicht überladen werden (auch bei v=w nicht), da operator=(const Vektor3d&) vom Compiler generiert wird und eine Vektor3d Referenz natürlich auch mit w initialisiert werden kann.
    • daegga
      daegga
      Bronze
      Dabei seit: 11.02.2007 Beiträge: 2.255
      Original von andyy1
      Wurde ja schon alles gesagt.

      Zu b) operator= muss nicht überladen werden (auch bei v=w nicht), da operator=(const Vektor3d&) vom Compiler generiert wird und eine Vektor3d Referenz natürlich auch mit w initialisiert werden kann.
      na wenn das der compiler generiert, dann passts ja....c++ is bei mir auch schon wieder ein paar jahre aus *g*
    • Eugen1
      Eugen1
      Bronze
      Dabei seit: 21.01.2005 Beiträge: 596
      Danke für die Hilfe, die Aufgabe konnte ich nachvollziehen. Hier ist noch eine von diesem Typ. Was wäre hier für die Lösung?

      code:
      template<class Typ>
      class Liste {
      public:
      Liste();
      void operator+=(Typ&); // fügt Element ein
      void operator+=(Liste<Typ>&); // fügt komplette Liste ein
      bool istLeer(); // ist Liste leer?
      bool istVoll(); // ist Liste voll?
      bool enthaelt(Typ&); // ist Element enthalten?
      private:
      double Feld[100]; // speichert Listeneinträge
      };
      Liste<int> a,b;
      Liste<bool> u;
      int x = 3;


      Welche der folgenden Programmzeilen sind syntaktisch korrekt?

      a) a += x;
      b) b += a;
      c) a += u;
      d) u += true;
      e) u += a.istVoll();
      f) u += a.enthaelt(true);
    • normanfreak
      normanfreak
      Bronze
      Dabei seit: 03.04.2005 Beiträge: 427
      a) richtig; x ist int; a ist liste von ints

      b) richtig; operator+ mit liste als parameter is definiert

      c) falsch; operator+ für anderen typ nicht definiert

      d) richtig; u ist liste von boolean;

      e) richtig; siehe d....istVoll liefert bool zurück

      f) falsch; a.enthaelt(true) geht nicht, da falscher typ....

      u += a.enthaelt(1) würde gehn
    • xsascha89x
      xsascha89x
      Bronze
      Dabei seit: 20.06.2007 Beiträge: 2.225
      wird man auf deiner schule zum debugger ausgebildet, oder schreibt man heute keine programme mehr?
      wären die bei mir mit sowas angekommen hätte ich mich leicht verarscht gefühlt^^
      was für eine schule ist das? gymnasium?
    • Eugen1
      Eugen1
      Bronze
      Dabei seit: 21.01.2005 Beiträge: 596
      Danke für die Antworten

      wird man auf deiner schule zum debugger ausgebildet, oder schreibt man heute keine programme mehr?
      wären die bei mir mit sowas angekommen hätte ich mich leicht verarscht gefühlt^^
      was für eine schule ist das? gymnasium?


      :D

      Maschinenbau TU

      Das ist nur einer von vielen Aufgabentypen. Bei den anderen gehts dann auch um Programme schreiben.
    • xsascha89x
      xsascha89x
      Bronze
      Dabei seit: 20.06.2007 Beiträge: 2.225
      ah okay, dann ist das ja auch nicht so das fachgebiet ;)
      offtopic:
      interessiert mich aber auch was du so alles bei maschinenbau machen musst, habe mich dies jahr auch für den bereich informiert, allerdings nicht dafür entschieden^^ würde aber gern mal aus erster hand erfahren wie das da abläuft, was du da für fächer besuchst und so. magst du mir das kurz schildern? wäre echt nett ;)
    • Eugen1
      Eugen1
      Bronze
      Dabei seit: 21.01.2005 Beiträge: 596
      interessiert mich aber auch was du so alles bei maschinenbau machen musst, habe mich dies jahr auch für den bereich informiert, allerdings nicht dafür entschieden^^ würde aber gern mal aus erster hand erfahren wie das da abläuft, was du da für fächer besuchst und so. magst du mir das kurz schildern? wäre echt nett
      Ich komme jetzt ins 4. Semester. Fächer waren bis jetzt Mathe, Naturwissenschaften (Mechanik, Thermodynamik usw.), Maschinenbaufächer wie Maschinenelemente, Werkstoffkunde, Fertigungstechnik usw. Daneben immer mal ein Labor und ganz viel Konstruieren. Das fing mit einfachen Sachen an und steigerte sich über Kreissägen bis zu komplizierten Getrieben. Wenn man sich für Technik interessiert, ist das Studium schon in Ordnung. Ab und zu muss man dann Sachen machen, die einem nicht so liegen oder die man nicht mag. Das ist denke ich überall so.
    • dusterl
      dusterl
      Bronze
      Dabei seit: 14.07.2006 Beiträge: 2.089
      Original von Eugen1
      Danke für die Hilfe, die Aufgabe konnte ich nachvollziehen. Hier ist noch eine von diesem Typ. Was wäre hier für die Lösung?

      code:
      template<class Typ>
      class Liste {
      public:
      Liste();
      void operator+=(Typ&); // fügt Element ein
      void operator+=(Liste<Typ>&); // fügt komplette Liste ein
      bool istLeer(); // ist Liste leer?
      bool istVoll(); // ist Liste voll?
      bool enthaelt(Typ&); // ist Element enthalten?
      private:
      double Feld[100]; // speichert Listeneinträge
      };
      Liste<int> a,b;
      Liste<bool> u;
      int x = 3;


      Welche der folgenden Programmzeilen sind syntaktisch korrekt?

      a) a += x;
      b) b += a;
      c) a += u;
      d) u += true;
      e) u += a.istVoll();
      f) u += a.enthaelt(true);
      Syntaktisch korrekt sind alle Programmzeilen. Nur einige haben semantische Fehler. Ich weiß klingt kleinkarriert, aber manche Profs lieben solche Fangfragen.
      syntaktischer Fehler = compiler weiß nicht, was der User von ihm will.
      sementischer Fehler = compiler kann nicht das tun, was der User von ihm verlangt