Groß-und Kleinbuchstaben von char-Elementen zählen


  • Mod

    wrock schrieb:

    Dein "Prof" ist, leider Gottes wie fast alle anderen auch, ein Trottel.

    wasn das für ne blöde aussage?

    Sone definiert die Fähigkeiten eines Menschen eben nur nach der Tiefe von dessen idiomatischem Verständnisses von modernem C++.



  • wrock schrieb:

    Dein "Prof" ist, leider Gottes wie fast alle anderen auch, ein Trottel.

    wasn das für ne blöde aussage?

    Tut mir Leid, das ist doof formuliert. Besser?



  • don't feed the trolls was?

    weis ja nicht mit welchen leuten du so rumggurgst aber....
    das man am anfang des "Programmierer-lebens" die halbe stl manuell nachprogrammiert ist fast überall so
    (mal davon abgesehen das in diesem Fall die Aufgabenstellung wirklich n bisschen ungeschickt ist)



  • wrock schrieb:

    weis ja nicht mit welchen leuten du so rumggurgst aber....

    Mit niemandem. Das Forum ist natürlich die einzige "Kontaktstelle".

    das man am anfang des "Programmierer-lebens" die halbe stl manuell nachprogrammiert ist fast überall so

    Nö, bei mir nicht. Aber oft ist das so, da hast du Recht. Trotzdem sollte man da vorerst new komplett abhandeln und alle Tricks und Tücken begreifen bevor man std::string (auch wenn nur primitiv) nachprogrammieren möchte.



  • wrock schrieb:

    das man am anfang des "Programmierer-lebens" die halbe stl manuell nachprogrammiert ist fast überall so

    http://kera.name/articles/2010/08/it-is-not-called-the-stl-mmkay/



  • vatan89 schrieb:

    Zu der Aufgabenstellung wurde dazu gesagt, dass ich die beiden char- Elemente (one,two) mit einem new Operator verwalten soll.

    Man kann das sicherlich einfacher machen als ich anfangs schrieb.
    Z.B. kann man zwei Speicherbereiche fester Länge allozieren und versuchen passend einzulesen. Dann ist es nicht allzu kompliziert - aber auch schon etwas tückischer.

    Kann sein, dass der Prof. Euch mit den Zeigern auf's Glatteis führen will, muss aber nicht.

    #include <iostream>
    
    // Unvollstaendig - C++03 Version
    class gadget{
      char *s1_, *s2_;
    public:
      gadget() : s1_(0), s2_(0) {
        s1_ = new char[50]();
        s2_ = new char[50]();
      }
      ~gadget() { delete[] s1_; delete[] s2_; }
    
      gadget& operator=(const gadget&); // Zuweisungsoperator fehlt!
      gadget(const gadget&);            // Kopierkonstruktor fehlt!
    
      void read(){
        using namespace std;
        cout << "Geben sie 2 Strings ein (je 49 Zeichen max.): ";
        cin.getline(s1_, 50, '\n');
        cin.getline(s2_, 50, '\n');
        if( !cin ){
          cerr << "Something bad happened.\n";
        }
      }
    
      const char* s1() const { return s1_; }
      const char* s2() const { return s2_; }
    };
    
    int main(){
      gadget g;
      g.read();
      std::cout << "s1: " << g.s1() << "\n"
        "s2: " << g.s2() << '\n';
    }
    

    Die mit "xyz fehlt" markierten Zeilen kannst Du auch ganz weglassen.
    Auf keinen Fall darfst Du jedoch solch ein Objekt kopieren, oder zuweisen, bevor Du die beiden fehlenden Funktionen implementierst.

    void f(){
     gadget g, gg;
     g=gg; // Fehler (Zuweisung)
     gadget ggg(g); // Fehler (Kopie)
    }
    

  • Mod

    Furble Wurble schrieb:

    s1_ = new char[50]();

    Och nö! Das ist doch bewusste Fehlinterpretation der Aufgabenstellung. So schwer ist das nun auch nicht, einen std::string nachzuprogrammieren, wenn man nicht auf Performance achtet und nur die wichtigsten Teile der Schnittstelle bereit hält (also nur ein vector<char> + Leseoperationen und ohne vollständiges STL-Interface). Sollte sich in deutlich < 100 Zeilen (Leseoperationen nicht mitgezählt) erledigen lassen und ist dann auch richtig, ganz ohne Tricks. Dann noch einen Streamoperator und ein getline (~20-30 Zeilen) und die Aufgabenstellung lässt sich damit ganz bequem und robust erfüllen, so als ob man gleich std::string genommen hätte.



  • SeppJ schrieb:

    Furble Wurble schrieb:

    s1_ = new char[50]();

    Och nö! Das ist doch bewusste Fehlinterpretation der Aufgabenstellung.

    Bewußt im Sinne von "Ich ärger mal die Mädels im Forum! Hehehe..."?
    Nein.
    Eigentlich wollte ich nur die Arrays aus vatan89s Lösung ersetzen. Und dabei auf Reallokation etc. pp. verzichten - weil ich bezweifle, dass das die Aufgabe ist.



  • Furble Wurble schrieb:

    Bewußt im Sinne von "Ich ärger mal die Mädels im Forum! Hehehe..."?
    Nein.

    Wie auch? Das einzige "Mädel" das es hier AFAIK gibt, ist elise, und die hab ich noch nie hier gesehen.



  • wrock schrieb:

    achja und anstatt

    ten= strlen(one);
    
    for(int i=0; <=ten; i++)
    

    kann man auch

    for(int i=0; i<strlen(one); i++)
    

    schreiben

    Kann man - allerdings mit quadratischem Aufwand im Bezug auf die String-Länge + strlen() wenn der Compiler die Funktion nicht kennt, da bei jedem Scchleifendurchlauf die Stringlänge neu berechnet wird - also eine ganz schlechte Idee.


Anmelden zum Antworten