Anfänger braucht Hilfe bei String-manipulation in C++
-
Nexus schrieb:
drakon schrieb:
Also ich frage mich, warum du für so etwas triviales und kurzes eine Funktion schreibst?! - Das wäre hier ohne die Funktion sogar einfacher zu benutzen..
Vor allem die zweite und dritte Funktion haben schon ihre Berechtigung, wenn sie oft benötigt werden. Und damits einheitlich ist, auch die erste. :p
Dann muss man sie aber wirklich in jeder zweiten Zeile brauchen.

Kritisier lieber die Leute, die zu wenig Funktionen machen.

Schon passiert.

-
Sooooo...

Es waren sogar 2 Bugs!
1. In der Mid()-Funktion von VB beginnt der Index bei 1!!!
-Substr() beginnt aber bei 0!
=> Eine "-1" an der richtigen Stelle bewirkt Wunder!
2. In der "Textverdreher()-Funktion habe ich anscheinend ein "i" mit einer "1" vertauscht...

Wegen der Menge an Funktionen:
Ich finde es einfach übersichtlicher...
Das ist vorallem praktisch wenn man etwas verändern muss.Und jetzt funktioniert auch meine Permutation

naja... fast... irgendwie wird eine Runde übersprungen...
Aber das kriege ich auch noch hin
// Funktionen: void textverdreher(string x,string y){ int i=1,j=0; j = y.length(); if(j==1){ string z = x + y; cout << z << "\n"; }else{ for(i=1;i<j;i++){ textverdreher(x + vbmid(y,i,1),vbleft(y,i-1) + vbright(y,j-i));}}} string vbmid(const string& quelle,int index,int laenge){ return quelle.substr(index-1,laenge);} string vbleft(const string& quelle,int laenge){ return quelle.substr(0,laenge);} string vbright(const string& quelle,int laenge){ return quelle.substr(quelle.length()-laenge,laenge);}
-
Phu.. Einrücken solltest du aber auch anständig.. Im anderen Thread siehst du sonst, was draus wird.

-
drakon schrieb:
Phu.. Einrücken solltest du aber auch anständig.. Im anderen Thread siehst du sonst, was draus wird.

Ist klar...
Das ist aber jetzt mein
fünftes(?) Programm das ich geschrieben habe...
Edit: Und die vorherigen habe ich geschrieben um cin, cout und substr zu testen!!!
Du kannst von einem Lehrling auch nicht erwarten das gleich alles kann... :p
Habt ihr irgendwo eine Anleitung wo gezeigt wird wie man Einrücken sollte?
Ich habe es bis jetzt für mich recht übersichtlich gemacht
-
Jin86 schrieb:
Habt ihr irgendwo eine Anleitung wo gezeigt wird wie man Einrücken sollte?
Das ist relativ einfach.

Rücke einfach eine Ebene weiter ein, wenn du eine öffnende geschweifte Klammer oder Sprungmarke in
switchhast (oder auch nur eine einzelne Zeile beiifetc). Bei der schliessenden gehst du wieder zurück. Wenn eine Funktion langsam gross und unübersichtlich wird, kannst du über eine Aufteilung in mehrere Funktionen nachdenken.Das Weitere ist dann schon sehr subjektiver Codestil...
-
void textverdreher(string x,string y) { int i=1,j=0; j = y.length(); if(j==1) { string z = x + y; cout << z << "\n"; } else { for(i=1;i<j;i++) { textverdreher(x + vbmid(y,i,1),vbleft(y,i-1) + vbright(y,j-i)); } } } string vbmid(const string& quelle,int index,int laenge){ //1. Variante return quelle.substr(index-1,laenge); } string vbleft(const string& quelle,int laenge) //2. Variante { return quelle.substr(0,laenge); } string vbright(const string& quelle,int laenge) { return quelle.substr(quelle.length()-laenge,laenge); }So würde ichs machen. Bei den unteren Funktionen siehst du beide Varianten. Aber etwas anderes habe ich nicht wirklich gesehen. Manchmal, wenn der nachfolgende Code sehr kurzt ist auch das hier:
if ( meine_var == dasda ) irgendwas = 2;Es ist jetzt nicht so, dass es da einen Zwang gibt, aber das sind so die normalern Einrückungsarten, die man immer wieder sieht und eigentlich jeder (mehr oder weniger gut) lesen kann. Meistens helfen einem die IDE's ja bei der Einrückung und ich belasse es eigentlich so, wie es mir vorgegeben wird. (ausser bei ein paar Ausnahmen..). Wenn ich eine Bedinung sehe, dann will ich die nicht lesen müssen, sondern einfach sehen und verstehen. Wenn da irgendwas gewurschtelt ist, muss ich noch die Klammern zählen gehen und das ist nicht wirklich produktiv. (Darum neheme ich meist auch die 2. Variante, weil für mich die Blöcke viel offensichtilcher sind..)
-
Alles klar...
Variante 2 gefällt mir wegen der Klammern
Aber ich finde das der Code dadurch irgendwie zu "flockig" wird...
(Sorry.. habe mal in einer Confiserie gejobt)
Ich brauche irgendwas Struckturiertes vor meinen Augen...
Werde wohl die beiden Mixen wen das ok ist
-
Jin86 schrieb:
Aber ich finde das der Code dadurch irgendwie zu "flockig" wird...
Der Code ist nicht mehr so kompakt, was aber auch einfacher zu lesen ist. Das wirst du früher, oder später merken.

Ich muss mich durch Code kämpfen, der in der Variante 1 geschrieben ist und ich darf oft feststellen, dass ich die Gliederung nicht sehe, weil ich die (manchmal recht langen Zeilen) nicht ganz durchlese und dam Ende das { nicht sehe nund schon ist das für mich ein Block und stelle dann erstaunt fest, wenn ich auf ein else stosse, dass das ja bedingt war..

Bei kurzen Funktionen mag das ja schön aussehn (mache ich da ja manchmal auch), aber in etwas grösseren Abschnitten einfach nur störend..
-
Ich bedanke mich bei euch allen!!
Ihr habt mir wirklich weitergeholfen!
Mein doffes Buch hat halt cstrings in den Vordergrung geschoben...
Der Rest sollte auch machbar sein
oder hat jemand zufällig eine Idee???
Als nächstes muss ich mir eine Übung zum Thema Klassen überlegen
Achso...
Beim lesen der FAQ habe ich was aufgeschnappt, was mich iritiert:
Warum ist "using namespace std" "böse"????
Diese Aussage kam von .filmor
Was er meint ging da irgendwie nicht hervor....
Edit: Gibt es irgendwo sowas wie eine Programmierer-Tastatur zu kaufen???
-
Das war wohl in den Headern gemeint.
Man sollte das vermeiden, weil ein Header von anderen Files included wird und der unter umständen keinen Namensraum schon offen haben will, sondern seinen eigenen benutzen. Darum ist es in Headern "böse". In Quelldateien ist das aber ohne Probleme nutzbar und wird oftmals auch gemacht.
-
Jin86 schrieb:
Edit: Gibt es irgendwo sowas wie eine Programmierer-Tastatur zu kaufen???
Meinst du so eine?

-
so in der Richtung

Das mit dem Alt+7, Alt+0, Shift+8 und Shift+9 geht mir gegen den Strich...
Achso...
Was haltet ihr von NetBeans6????
-
Du kannst die Tastenbelegung frei belegen..