Anzahl eines Buchstabens im string ermitteln



  • Als Anfänger wäre ich immer bereit neues zu lernen.

    Und count ist nicht speziell. Es zaehlt halt. Du kannst damit auch zaehlen wie oft eine bestimmte Zahl in einem Vector vorkommt etc.

    Nur weil jemand ein Anfänger ist heisst es nicht das er nie was neues gezeigt bekommen sollte. Zudem:

    Liest jemand count(...) weiß er sofort das was gezählt wird. Kommt eine schleife daher gelaufen.... Naja... Da muß man sich erst gedanken drum machen.

    Sicherlich ist das Arbeiten mit Algos etwas aufwendiger (verwende ja selbst noch häufiger schleifen O;o) aber der Aufwand sich damit zu beschäftigen lohnt sich auf jedenfall!



  • Hast ja recht @ Knuddlbaer, aber wenn man grad erst angefangen hat zu programmieren, dann will man erstmal das einfachste. Wenn man das kapiert hat, dann kann man sich immernoch gedanken über andere funktionen, oder kürzere funktionen machen.



  • @Spieleprogrammierer
    Jeder Programmierer sollte die Standardbibliothek seiner Sprache kennen. Natürlich nicht komplett auswendig. Er sollte aber die Grundprinzipien verstehen und wissen wo und wie die Standardbibliothek dokumentiert ist.

    Nun, wenn du ein Anfänger im Programmieren wärst, was würdest du einfacher finden? Schleifen, die man fast überall einsetzen kann oder Spezielle Funktionen zu jedem Thema?

    Das kommt ein wenig drauf an. Hat man einmal das Konzept der Standardlib im Allgemeinen und von Iteratoren im Speziellen verstanden, dann ist die Anwendung des std-Algos klar. Und die semantische Lücke ist definitiv kleiner als bei der Schleife.

    Solange man den Aufruf des Algos nicht versteht, sollte man ihn natürlich auch nicht verwenden. Allerdings sollte man meiner Meinung nach auch immer versuchen sein wissen zu erweitern. Und dies geht nur, wenn man ab und zu auch mal über den Tellerrand schaut.



  • ähm, <newbie> hat doch ausdrücklich nach einem Weg ohne Schleife gefragt.



  • Original erstellt von DrGreenthumb:
    ähm, <newbie> hat doch ausdrücklich nach einem Weg ohne Schleife gefragt.

    Was du nicht sagst!



  • Original erstellt von Spieleprogrammierer:
    Was du nicht sagst!

    Ja und wieso bitte, beschwerst Du dich dann über HumeSikkins, dass er solch ein count()-Konstrukt einem Anfänger vor die Füße wirft?



  • Original erstellt von DrGreenthumb:
    Ja und wieso bitte, beschwerst Du dich dann über HumeSikkins, dass er solch ein count()-Konstrukt einem Anfänger vor die Füße wirft?

    Ganz einfach: Wenn man Anfänger ist, dann will man einen einfachen Weg finden. Ich meine man hätte auch sagen können, dass er den String in Char-Array umwandeln kann, dann die einzelnen Elemente durchsuchen könnte, das ist so, als würde dich einer fragen "Wo gehts'n hier nach Rom?" Und jemand sagt "Die Autobahn entlang nach München und dann über die Alpen" und du dann sagst "Ne, halt, moment, es geht auch ohne Autobahn (Schleifen): Nimm nen Kompas, lauf immer richtung Süden durch die ganzen Wälder". So in der Art, wobei die Autobahn viel schneller geht zu fahren. (Also Schleifen schneller zu programmieren).

    Klingt vielleicht wirr, aber wer's versteht weiß auch, warum immernoch Schleifen zu empfehlen sind.



  • Original erstellt von Spieleprogrammierer:
    Klingt vielleicht wirr

    In der Tat, ich versteh dich überhaupt nicht.

    Wenn jemand fragt wie es ohne Schleife zu lösen ist, dann will er doch nicht hören "Du bist Anfänger. So geht's mit einer Schleife...".
    😕



  • Naja, hab ich auch nicht gesagt, ich meinte nur, dass ich es ihm empfehle, bei den Schleifen zu bleiben.



  • gut, du empfiehlst ihn dass - aber ich habe immer noch keine gegenargumente gehoert (siehe Humes Link)

    Anfaenger zu sein zaehlt nicht.
    er kann selber sagen dass es ihm zu kompliziert ist und ers gern erklaert haben moechte, bzw. wissen moechte wie count() zu implementieren waere.

    aber solange er das nicht fragt sehe ich keinen grund ihm schwachsinn anzugewoehnen - da brauchts dann wieder n paar Monate bis er sich das wieder abgewoehnt hat...

    wie soll man so guten stil programmieren lernen??



  • Original erstellt von Spieleprogrammierer:
    **(Also Schleifen schneller zu programmieren).
    **

    Also ich find ein count(s.begin(),s.end(),...); immer noch schneller programmiert wie eine schleife ;o)



  • Vom Text her, aber wenn er damit nix anzufangen weiß, dann schaut er wieder ewig lang in deisen Hilfen nach, die meistens garnicht helfen, und so zieht sich das in die länge. Aber bei Schleifen wieß jeder, was damit gemeint ist, schreibt es hin, kortrigiert vielleicht noch kleinere Fehler und fertig.



  • ... und so ziehen die einen die sich die Arbeit mal gemacht haben die Hilfe zu benutzen an denen vorbei die immer schnell mit den schleifen fertig waren ...

    Mal im ernst, ich denke jeder hat verstanden was Du meinst. Dennoch sollte sich jeder mit neuem auseinandersetzen. Irgendwann passiert es sonst das andere fertig sind wärend Du Dir noch gedanken um die Schleife machst.

    Hast Du Dir schon mal die Algos angeschaut mit Iteratoren etc. ? Alles hab ich da auch nicht verstanden aber sehr hilfreich das ganze und in vielen Situationen würde ich mehr Zeit damit verbingen die schleife zu coden (Hach mist ich lauf nen Element zu viel....) als die Algos zu verwenden.



  • was ist an "count" unverständlich?
    Hume hat übrigens einen guten Link angegeben. schon durchgelesen?



  • Nix, für dich nicht, für mich nicht, aber für einem Anfänger schon, und Schleifen sind einfach mal eleganter, ob das hier jemand glaubt oder nicht.



  • (bezüglich deiner lösung ohne count)
    woher soll der benutzer denn wissen, das std::string die methode length kennt? und den operator[]? du siehst, neues lernen muss man in jedem fall.

    und nebensächlich:

    cout<<ch<<" kommt "+z+" mal im Wort/Satz vor.";
    //sollte wohl heißen:
    cout<<ch<<" kommt "<<z<<" mal im Wort/Satz vor.";
    


  • Original erstellt von Spieleprogrammierer:
    dann schaut er wieder ewig lang in deisen Hilfen nach, die meistens garnicht helfen

    na hoffentlich tut er das - wenn er wirklich in die hilfe schaut, haben wir schon viel gewonnen.

    denn dann wird er sehen, dass das garnicht so unuebersichtlich ist und das man eigentlich alles finden kann was man sucht (man muss es halt nur ueben)

    und wenn er schon frueh anfaengt nachzusehen, dann sparen wir uns fragen zu einzelnen funktionen zu beantworten, denn dann kann er ja selber nachsehen...

    jeder der seine hilfe nicht bedienen kann, der sollte das schleunigst ueben.



  • Original erstellt von davie:
    **(bezüglich deiner lösung ohne count)

    cout<<ch<<" kommt "+z+" mal im Wort/Satz vor.";
    //sollte wohl heißen:
    cout<<ch<<" kommt "<<z<<" mal im Wort/Satz vor.";
    

    **

    Jaja, ich sag ja: Kleinlich. Tut mir leid, ich programmiere nunmal in Windowsprogrammierung, und da kann man Strings einfach so addieren.



  • Original erstellt von Shade Of Mine:
    **na hoffentlich tut er das - wenn er wirklich in die hilfe schaut, haben wir schon viel gewonnen.

    denn dann wird er sehen, dass das garnicht so unuebersichtlich ist
    **

    template<class InputIterator, class T>
    iterator_traits<InputIterator>::difference_type
    count(InputIterator first, InputIterator last, const T& value);
    

    ... ohne Worte ...



  • Das hat nichts mit kleinlichkeit zu tun.

    Wenn ein Anfänger frisch Programmiert und was falsches gezeigt bekommt tut er sich schwer zu verstehen wieso es eigentlich anderst laufen sollte....


Anmelden zum Antworten