Zum Inhalt springen

GrEnE

Mitglieder
  • Gesamte Inhalte

    67
  • Benutzer seit

  • Letzter Besuch

Beiträge von GrEnE

  1. Für das Parsen (und festen Format) kann ich auch die Standard Input Streams (z.B. std::istringstream) empfehlen. Exemplarisch:


    std::string input;
    std::istringstream iss( input );

    int num = 0;
    char delim;

    iss >> std::ws >> num;
    iss >> delim;
    [/PHP]

    Zwischendurch vielleicht noch den Stream und die Daten überprüfen ...

  2. Wenn ich nun testweise eingebe Tag: 4, Uhrzeit: 09:00 bis 13:00 Typ 3 gibt er mir korrekterweise bei "Array" die Flugzeugnummer 2 aus, nebenher aber noch zweimal "Array: 32" ...

    Eventuell stellt du den Quellbeispiel-Code formatiert hierrein, dass liest sich leichter ... dazu kannst du die PHP-Tags benutzen.

    Mein Versuch den Code auseinander zunehmen ergab:


    void abfrage(tflugzeug *pInventar, int Anzahl, int Tag, int Typ, int Stunde_eingang, int Stunde_ausgang, int *array_frei, int *Anzahl_frei)
    // Übergabe mit Pointer direkt auf den Speicher des Arrays (wird in Main angelegt)
    {
    int t,
    s_e=0,
    i,
    z,
    fs;
    bool belegt=false;

    /*-------------------------------------------------------------------*/

    if (Tag !='0' && Stunde_eingang !='0' && Typ !='0')
    {
    t=Tag;
    cout << "Stelle 1: "<<*Anzahl_frei << endl;

    for(z=0; z<Anzahl; z++)
    {
    cout << "Flugzeugtyp: " << pInventar[z].FzTyp<<endl;
    cout << "Typ: " << Typ << endl;
    fs=0;
    belegt=false;

    if (pInventar[z].FzTyp == Typ)
    {
    for (s_e=Stunde_eingang; s_e<=Stunde_ausgang; s_e++)
    {
    if (pInventar[z].Kalender[t][s_e][0]!='0')
    belegt=true;
    }
    if (!belegt)
    {
    array_frei[*Anzahl_frei]=pInventar[z].FzNr;
    *Anzahl_frei++;
    }
    }
    cout <<"Stelle 2: " <<*Anzahl_frei << endl;
    }
    }
    for (i=0;i<*Anzahl_frei;i++)
    {
    cout <<"Array: "<<array_frei[i] << endl;
    }
    }[/PHP]

    Stimmt der mit deinem Überein?

  3. ok, hast mich überzeugt...

    btw: was ist der Unterschied zwischen #ifndef und if !defined() ?

    Prinzipiell schon, aber einen kleinen unterschied gibt es, oder? Ich meine, wenn man mehrere 'defines' prüfen will, kenne ich nur

    if !defined(BLA) && !defined(BLA_2)

    da geht es doch garnicht mit '#ifndef' oder irre ich mich jetzt total. ;)

  4. Hi,

    In Headerdatein nicht, und natürlich auch dann nicht, wenn man, wie du bereits angemerkt hast, vor jede Klasse std:: schreibt, aber generell ist das völlig ok. Oder hab ich dich falsch verstanden?

    Klar schadet es nichts in Source-Dateien, aber dies macht man generell nicht bzw. sieht man nicht gerne. Dann merkt man unter Umständen einige Sachen nicht, wenn man den namsepace std "öffentlich" macht. Und zu faul wird ja wohl keiner sein, da immer 'std::' davor zu schreiben, oder?

    Mir fallen auch gerade nicht wirklich die Argumente ein, warum nicht ist schon so lange her. Aber ich werde nochmal forschen...

    PS: Bei mir in der Firma wirst erschossen, wenn du dies hinschreibst. :D;)

  5. Hmm,

    1. Welchen Compiler nutzt du?

    2. Klasse 'Adresse' ist zum Zeitpunkt bekannt? Also 'Adresse' hast du vorher deklariert?

    <<-operator darf keine Elementfunktion sein!

    Aufbau ungefähr so ...

    class Adresse {
    
    ...
    
    };
    
    
    std::ostream& operator<<(std::ostream& os, const Adresse& addr);

    Nebenbei, mach mal das 'using namespace std;' weg - dies macht man nicht! Davon abgesehen, dass du sowieso überall 'std::' davor geschrieben hast ;)

    Gruß

    GrEnE

    PS: Hast du alles in einer Datei oder hast du was gesplittet?

    PPS: Sorry für späte Antwort, war nicht erreichbar..

  6. Vielen Dank, aber irgendwie bekomm ich das nicht hin.

    Ich denke, ich verstehe was das bewirken soll aber bekomm es einfach nicht hin.

    Hmm, was ist denn das Problem? - Compiler-Fehler oder Konzept Probleme?

    std::ostream& operator<<(std::ostream& os, const Adresse& addr)
    
    {
    
        os << addr.get_vorname() << '\t' 
    
            << addr.get_name() << '\t'
    
            << addr.get_strasse() << '\t'
    
            << addr.get_postleitzahl() << '\t'
    
            << addr.get_stadt() << '\n'
    
        return os;
    
    }
    
    
    Benutzung:
    
    //   Klasse DateiIO
    
    class DateiIO
    
      {
    
        public:
    
          DateiIO()
    
            {
    
            }
    
          void speichern(const Adresse&  adr)
    
            {    
    
                 std::ofstream ofs("test.txt");
    
                 ofs << addr;
    
            }
    
      };

    So dies sollte eine Datei schreiben, wo alle Daten mit einen Tabulator getrennt sind.

    Beispiel:

    "Mark Mustemann Musterstraße 3 1234 Musterhausen"

    Und dieses Format kannst du wieder einlesen.

  7. @realisticer

    Ja klar ist selbst verständlich. ;-) - Hätte ja der Compiler darauf aufmerksam gemacht, wegen fehlenden "return". ;)

    Also richtig dann ...

    
    std::ostream& operator<<(std::ostream& os, const Adresse& addr)
    
    {
    
        os << addr.get_vorname() << '\t' << addr.get_name() << '\n';
    
        // ... und so weiter, halt eine Format wählen, wie es ausgegeben werden soll
    
    
        return os;
    
    }
    
    

  8. Ja, einlesen == ifstream und schreiben == ofstream. (#include <fstream>)

    Benutzung; prinzipiell wie std::cout.

    Beispiel:

    Um später die Sachen leichter zu nutzen, überladest du erstmal den <<-operator.

    
    std::ostream& operator<<(std::ostream& os, const Adresse& addr)
    
    {
    
        os << addr.get_vorname() << '\t' << addr.get_name() << '\n';
    
        // ... und so weiter, halt eine Format wählen, wie es ausgegeben werden soll
    
    }
    
    
    Benutzung:
    
    void speichern(const Adresse&  addr)
    
    {
    
        std::ofstream ofs("test.txt");
    
        ofs << addr;
    
    }
    
    
    Das Gute, du kannst diesen <<-operator auch für std::cout benutzen, um Ausgaben zu machen.
    
    std::cout << addr;
    
    
    Einlesen geht auf den gleichen Weg: Nutze 'std::ifstream'; kannst auch den >>-operator überladen.
    
    std::ifstream ifs("test.txt");
    
    std::string value;
    
    ifs >> value; // gibt einen string, bis ' ' oder '\n' 
    
    int number;
    
    ifs >> number; //gibt die eine zahl
    
    

    Mit 'std::getline' bekommst du eine eine Zeile!

    Damit solltest du erstmal weiter kommen, bei Fragen - einfach Fragen...

    Gruß

    GrEnE

  9. Hast Du bitte eine Quellenangabe für diese kategorische Behauptung parat?

    Ich kenne das nämlich genau "anders herum": Da die Mitglieder des PA sowieso zur Verschwiegenheit verpflichtet sind, sollte das Projekt möglichst genau so präsentiert werden, wie es durchgeführt wurde - also mit den Original-Daten. Ausnahmen sind nur dann zu machen, wenn auf expliziten Wunsch des Ausbildungsbetriebes sensible oder sicherheitsrelevante Daten in Doku und Präsentation nicht genannt werden sollen. Aber das ist - zumindest hier in Bonn - eine eher seltene Ausnahme.

    gruss, timmi (gespannt auf die Quelle wartend)

    Quelle ist relativ - Berufsschule Berlin, Thema Datenschutz und Doku, ich kann aber gerne nochmal in meinen Unterlagen blättern und gucken, ob ich irgendwelche handfesten Quellen finde!

    Scheint wohl von Stadt zu Stadt unterschiedlich zu sein und die Prüfer scheinen da auch nicht sicher zu sein.

    Aber sehen wir es doch mal aus dem Aspekt Datenschutz - dann ist es doch mit Sicherheit nciht erwünscht mit Orginaldaten zu präsentieren, oder?

  10. Wie verhält es sich im Abschlussprojekt denn mit den Daten des Kunden. Dass ich keine Passwörter angebe ist mir auch klar, aber darf oder muss ich z.B. Adressen korrekt angeben, oder bin ich aus Datenschutzgründen sogar verpflichtet dies abzuändern?

    Generell ist es so, dass du dafür sorgen musst, das keine orginalen/richtigen Daten verwendet werden! Also musst du dafür sorgen, dass du Dummy-Kundendaten benutzt.

    Also Namen, Adresse, etc. müssen freierfunden sein - für die Vorführung!

    Edit:

    Sonst hat der Voredner Recht, dass man in der Doku diese Daten auch durchstreichen kann bzw. muss!

    Gruß,

    GrEnE

  11. Der cast nach int bewirkt hier nichts, daher kannst du ihn auch weglassen.

    bool isInASCII(char ch)
    
    {
    
        return ch > 65 && ch < 122;
    
    }
    Okay.
    Aber bist du sicher, dass du nicht >= 65 meinst?
    Hmm, jetzt wo du es sagst. :D - Dann aber auch <= 122!
    bool isInASCII(const char ch)
    
    {
    
        return ch >= 65 && ch <= 122;
    
    }

    So, dass dürfte die Endfassung sein ... Bedanke mich noch mal bei allen, die hier geantwortet haben!!

    THX

  12. Also soweit ich weiß hat das nichts mit der Plattform zu tun.

    Nee ist klar - meinte auch vielmehr Compiler (auf unterschiedlichen Platformen).

    Beispiel: VC71 und CW9 (CodeWarrior9) verhalten sich schon sehr unterschiedlich.

    Mit einen cast wäre ich wahrscheinlich auf der sicheren Seite, oder?

  13. THX Guybrush Threepwood - aber ein 'cast' wäre nicht schlimm, oder? - Kann ja sein, dass es auf irgendeinder Platform (Mac, Unix, Win) nicht geht, dass direkte vergleichen.

    Also war ja mein Ansatz doch nicht verkehrt ... :rolleyes:

    @Kitty82: Auch Danke, aber C-Casts benutze ich generell nicht und die Syntax bei mir mit static_cast war dann die Richtige. ;)

  14. Ich habe so einen schönen Brief mit dem Musterungsergebnis bekommen, unter anderem steht da drinne das man bis zum 32 Lebensjahr der Wehrüberwachung unterliegt (klingt irgendwie nach Diktatur ;) ), da stehen deine Pflichten:

    - Du musst melden wenn du umziehst

    - wenn du eine Krankheit hast die deine Tauglichkeitsstufe ändern würde

    - Wenn du die Arbeit wechselst / aufhörst zu arbeiten

    etc.

    Ja okay - Danke - aber die Beendung meiner Ausbildung und mein aktueller Beruf sind die gleiche Stelle/Firma - also sah ich keinen Grund mich zu melden und auf mich aufmerksam zu machen. ;)

    Ausserdem ist Irren Menschlich - die werden mich doch nicht bestrafen, nur weil ich vergessen habe, mich zu melden, dass meine Ausbildung zu Ende ist, odeR? Also meine Pflichten habe ich ja inderekt nicht verletzt - habe ihnen ja gesagt, wie lange meine Ausbildung geht - rechnen werden die doch wohl noch alleine. *G*

    Okay ich werde mal gucken, was daraus wird - vielleicht vergessen Sie mich ja - gibt doch genug Leute, die noch keine Perspektive habe oder frisch aus der Schule kommen - warum sollten/müssen die mich aus meinen Beruf rausnehmen - sowas verstehe ich halt nicht!

  15. Ja musst du, du bist ja noch nicht 23. Allerdings hast du Glück wenn du T3 gemustert wurdest, dann müsstest du gar nichts machen.

    Ansonsten hast du eigentlich die Pflicht zu melden das du mit der Ausbildung fertig bist ;) Du könntest natürlich auch versuchen die Beine weiterhin still zu halten, aber das ist noch 1 Jahr bis du dann 23 bist...

    Ansonsten seh ich da keine Chance mehr das du drumherum kommst.

    Muss man sich melden? - Immerhin habe ich mich doch gemeldet, wo ich meine Ausbildung begonnen habe und da stand drin, wann ich sie beende.

    Wurde leider T2 gemustert.

    Naja aushalten muss ich generell nur noch ein halbes Jahr, denn mein Betrieb kann mich einmal freistellen für 6 Monate! - Aber rechnerisch ist da aber immernoch alles drin - deswegen meine Frage.

    Also bleibt nur Ruhe bewahren und hoffen, dass sie mich vergessen, oder? Puh, das ist aber laufen auf dünnem Eis. ;)

  16. Hallo,

    ich habe einen std::string und mit Hilfe einer for-Schelife gehe ich durch jedes einzelne Zeiche.

    for(std::string::size_type idx=0; idx<str.size(); ++idx) {}
    Nun möchte ich prüfen, ob das Zeichen (str[idx]) im Bereich von ASCII liegt oder in einem bestimmten Bereich innerhalb von ASCII liegt (z.B. 65 bis 122) In Moment habe ich ein Blackout, wie ich dies mache ... könnt ihr mir helfen? Ich weiß nicht, ob ich den char einfach in einen int casten kann und prüfen, ob er im Bereich ist. Also so:
    bool isInASCII(char ch)
    
    {
    
        if(static_cast<int>(ch) > 65 && static_cast<int>(ch) < 122)
    
            return true
    
        else
    
            return false;
    
    }

    THX for Help

    GrEnE

  17. Also ich wurde schon gemustert - werde jetzt 22 Jahre und habe meine Ausbildung vor 1 Jahr beendet. Nun stellt sich die Frage, muss ich wirklich noch meinen Dienst bestreiten? - Denn dass ist doch ganz ********en, 9 Monate aus dem Beruf gerissen zu werden - danach habe ich doch keinen Plan mehr, bei der schnelllebigen Computergesellschaft.

    Also gibt es irgendwelche Mittel, nicht noch eingezogen zu werden? Bzw. wielange kann man mich noch einziehen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...