Willkommen auf Planet-Liebe

diskutiere über Liebe, Sex und Leidenschaft und werde Teil einer spannenden Community! :)

jetzt registrieren

Hilfe!! Wer kann C++....

Dieses Thema im Forum "Off-Topic-Location" wurde erstellt von Bart, 12 Februar 2003.

  1. Bart
    Gast
    0
    Hy

    hab da ein Problem....um net zu sagen ein Riesen-Problem!

    Bin auf einem Informatik-Gymnasium um das mal so ganz einfach zu beschreiben...

    Hab jetzt schon 1,5 Jahre C++ hinter mir und hab des bis jetzt auch alles ganz gut verstanden wenn man bedenkt das ich völliger Noob war und nix von programmieren wußte als ich auf diese Schule gewechselt bin...

    Nach Lehrer-Wechsel sollen wir nun im Technologie-Kurs als Klausur ein Referat halten.... von nem Thema, was wir noch nie hatten und bis zu meinem termin auch nicht im Unterricht behandelt haben werden.... ich hab keine Ahnung worums da geht....

    Also, hier das Thema....

    Ein- und Ausgabeoperationen auf Dateien mit überladenem Operator (den zu schreibenden/lesenden Daten sollte möglichst eine selbst konzipierte Klasse zu grunde liegen)

    UND folgende Begriffserklärungen (was? Unterschiede usw.)
    ->Text/Binärdatei
    ->Sequentielle / realtive Datei


    Falls wer ahnung davon hat, bitte antworten ....wäre echt nett.......

    Soll das ja so machen das die andern in meinem Kurs des Thema durch mich kapieren obwohl ich denke das dieses Unternehmen schon jetzt zum Scheitern verurteilt ist ;-(

    DANKE für eure Hilfe....

    Ciao
     
    #1
    Bart, 12 Februar 2003
  2. Mr. Poldi
    Verbringt hier viel Zeit
    3.068
    121
    0
    vergeben und glücklich
    Hmm .. also so ganz verstehe ich deine Frage nicht, aber werde mal versuchen das allgemein zu beantworten.

    Also nehem wir mal an du hast eine Klasse Artikel deren Deklaration folgendermaßen aussieht
    Code:
    class Artikel {
      string name;
      string kategorie;
      string typ;
      string hersteller;
      double preis;
      double leistung;
      int fooBar;
      public:
      Artikel(string n, string k, string t, string h, double p, double l){
        name=n;
        kategorie=k;
        typ=t;
        hersteller=h;
        preis=p;
        leistung=l;
        fooBar=42;
      }
      string getName(){return name;}
      string getKategorie(){return kategorie;}
      string getTyp(){return typ;}
      string getHersteller(){return hersteller;}
      double getPreis(){return preis;}
      double getLeistung(){return leistung;}
      void setName(string n){name=n;}
      void setKategorie(string k){kategorie=k;}
      void setTyp(string t){typ=t;}
      void setHersteller(string h){hersteller=h;}
      void setPreis(double p){preis=p;}
      void setLeistung(double l){leistung=l;}
    }
    
    Nun hast du mehrere Instanzen dieser Klasse (also deine ganzen Artikel) und willst die irgendwie in eine Datei speichern.

    Wenn du aber sowas wie (artikel sei eine Instanz von Artikel)

    Code:
      ofstream fout("meineartikel.dat");
      fout << artikel;
    
    machst wird das nicht funktionieren, denn woher soll der Compiler wissen ob du z.b. fooBar mit speichern willst oder nicht, ob noch weitere Informationen mit in die Datei müssen, in welcher Reihenfolge, etc.

    Du musst im also sagen was genau bei der Operation "schreibe" passieren soll, indem du den Operator überlädst:

    Code:
    ostream& operator<< (ostream& out, Artikel& artikel){
        out << artikel.getName() <<  ","  <<  artikel.getKategorie() << "," << artikel.getTyp() << "," <<   artikel.getHersteller() << "," <<  artikel.getPreis() << "," << artikel.getLeistung() << endl;
        return out;
    }
    
    Wenn du dann den vorherigen Codeabschnitt aufrufst erhälst du eine Datei die so aussieht:
    Das gleiche Spielchen musst du natürlich auch machen wenn du aus einer Datei lesen willst, indem du den operator>> analog überschreibst.

    Damit erhäst du eine Textdatei. Z.B. Ein Preis wie 39.99 wird also durch 5 Bytes, nämlich die Zeichen 3, 9, ., 9, 9 dargestellt.
    In einer Binärdatei würde das einfach durch eine Folge von 64 Bit (gemäß IEEE754-Standard) dargestellt.

    Was du aber mit sequentieller/relativer Datei meinst - hmm Bahnhof :grin:
    Grundsätzlich ist es so dass man zwischen sequentiellem und wahlfreiem Zugriff unterscheiden muss. Bei sequentiellen Zugriff musst du erst alles lesen bis du an der richtigen Stelle bist (wie bei einem Tonband oder Cassette), bei wahlfreien Zugriff kansst du einfach sagen "springe zu Datensatz x, der Rest inteessiert mich nicht" (wie auf einer CD).

    So, hoffe das war verwirrend genug für den Anfang.

    Auf deinem Gynmasium wäre ich gerne gewesen glaube ich - wir haben nur langweiliges Zueg gemacht.
     
    #2
    Mr. Poldi, 12 Februar 2003
  3. Sokrates
    Gast
    0
    ich kann dir zwar auch nicht mehr erzählen, als kirby das bereits getan hat, aber in diesem forum solltest du kompetente hilfe zu diesem oder auch anderen themen bekommen.

    greetz
     
    #3
    Sokrates, 12 Februar 2003
  4. snot
    Gast
    0
    bezüglich sequentiell/relativ ist wahrscheinlich gemeint, daß bei relativen dateien immer ein gewisser offset-point fixiert ist und dann die relative entfernung zu dem punkt, wo man hin will angegeben wird. um also zu einem gewissen datensatz zu gelangen, muss man diese entfernung kennen.

    und text/binär, falls das aus kirby's text nicht klar ersichtlich war:
    text ist in einem text-format wie zb ASCII gespeichert
    binär besteht nur aus 0 und 1
     
    #4
    snot, 13 Februar 2003
  5. Bart
    Gast
    0
    Erstmal vielen Dank für eure Hilfe.......

    Jetzt hab ich schon bisschen mehr Ahnung..... muss das nochmal genauer studieren....... weiß ja nun um was es geht......

    @Kirby......:

    Naja , so toll ist es bei uns auch nicht......

    95% der Lehrer total verplant und inkompetent.... wie sind halt alle so sind die lieben Datentechniker..... ist eigentlich der letzte scheiß Laden die schule..... im Puncto C++ wird da ein Crashkurs in 3 Jahren durchgeführt wo aus Noobs Programmierprofis gemacht werden sollen.....klappt so gut wie nie..... weils neben den andern Fächern einfach zu viel Zeit braucht und zu schwer ist....für die kurze Zeit die zur Verfügung steht....... weil Mikroprozessortechnik usw. is auch net ohne.... eins hab ich jedenfalls dort gelernt....

    -->werdet Lehrer, das is der lockerste Job den es gibt.... vor allem auf meiner Schule:grin:

    Wer noch was weiß kann noch schreiben...

    Thanks für die Antworten

    ICh werds versuchen

    Ciao
     
    #5
    Bart, 13 Februar 2003
  6. Mr. Poldi
    Verbringt hier viel Zeit
    3.068
    121
    0
    vergeben und glücklich
    Oh je - dann hast du echt nichts gelernt :angryfire
    Meine Eltern sind Lehrer (Grundschule) - das ist der allerletzte Scheissjob (von Polizist mal abgesehen).

    Und C++ in 3 Jahren ... naja, machen "wir" (Diplomstudiengang Informatik) in 1 Semester - also wo ist das Problem :grin:
     
    #6
    Mr. Poldi, 13 Februar 2003
  7. Bart
    Gast
    0
    Problem liegt darin das du "nur" C++ dort lernst so wie ich das kenne...... und net noch 10 andere Fächer besuchen musst wovon dich vielleicht 5 interessieren..... um am ende gut zu sein musste halt in allen gute punktzahlen haben....kann mir nix dafür kaufen C++ zu können und 10 oder mehr punkte da zu haben und dafür in 5 anderen unterm Strich......

    Mit deiner Vermutung das ich "nichts" gelernt habe liegtse glaub ich etwas falsch...

    Du hast zwar auch recht wenn du sagst das Grundschullehrer der letzte Scheissjob ist und da stimme ich dir auch zu, aber wenn du wüßtest was an meiner schule so läuft dann weißte warum ich das behaupte....

    Wenn du Gymnasiumslehrer bist is eh viel besser....und wenn du dann noch an meiner Schule bist haste gewonnen.... und zwar 100%ig....:rolleyes:
     
    #7
    Bart, 13 Februar 2003
  8. Mr. Poldi
    Verbringt hier viel Zeit
    3.068
    121
    0
    vergeben und glücklich
    Das "nichts" bezog sich einzig und allein auf obigen Satz - hätte das vielleicht besser mit :zwinker: kennzeichnen sollen damit klar wird dass das ironisch gemeint ist.

    Und dass wir nur "C++" machen ist so auch nicht richtig. C++ war 1 von 2 Praktika (das andere war VeriFun, ein Tool zum "automatischen" Korrektheisbeweis von Algorithmen) und nicht einmel Teil der Vorlesung.

    Ansosten gibts noch Grundlagen der Elektrotechnik, Logischer Entwurf digitaler Systeme, Rechnertechnologie-Praktikum, Algorithmen&Datenstrukturen, Automatentheorie, Lineare Algebra, Allgemeine Algebra, Analysis, Numeriksche Algorithmen, Logik für Informatiker, etc. pp - also auch genug zu tun.
     
    #8
    Mr. Poldi, 13 Februar 2003
  9. snot
    Gast
    0
    programmieren lernt man übrigens nur dann einigermaßen, wenn man sich in der freizeit mal hinsetzt und regelmäßig das gelernte an irgendwelchen miniprogrammen ausprobiert.

    mir gehts so in c++ vs. java
    c war ma immer bare, hab nie was gemacht.
    java hab ich damals eine absprache mit meinem sitznachbarn gemacht: er macht die datenbank-sachen für mich und ich die java beispiele für ihn. seit dem hab ich java ganz gut intus.
    aber als programmierer würd ich mich deswegen noch ned bezeichnen.

    und schiebts die schuld, daß ihr nix könnts, ned immer den armen lehrern zu...
     
    #9
    snot, 13 Februar 2003

jetzt kostenlos registrieren und hier antworten
Test