Bitte helfen
-
Hallo.
Bitte helfen sie einen Anfänger sein erstes(vernünftiges)Programm im C++ zu
schreiben!!! Ich brauche ein Programm, das ein eingegebenes Text umkehrt und auf die Konsolle ausgibt. Also so...
EINGABE: Hallo
AUSGABE: ollaHIm Voruas vielen Dank!!!!
MfG sashka
-
helfen
Gerne. Was hast du denn jetzt bisher? Und bitte sinnvollere Titel vergeben....
-
string strA = "Hallo"; strA.rotate(strA.begin(), str.end());
MfG Johannes
-
Was issen Rotate!? Naja, ich hätte es so gemacht:
string s = "Hallo"; string andersrum( s.rbegin(), s.rend() );
@Sashka: Bringt dir natürlich nicht so viel, denn wenn du dich selber damit nicht auseinandersetzt, lernst dus auch nicht
-
sashka schrieb:
Hallo.
Bitte helfen sie einen Anfänger sein erstes(vernünftiges)Programm im C++ zu
schreiben!!! Ich brauche ein Programm, das ein eingegebenes Text umkehrt und auf die Konsolle ausgibt. Also so...
EINGABE: Hallo
AUSGABE: ollaHIm Voruas vielen Dank!!!!
MfG sashka
Wenn wir den Code geben und du es abtippst, ist es nicht von dir, das ist dir klar, gell?
-
Was ist hier falsh? Oder kann man überhaupt so schreiben?
#include<iostream>
#include<string>using namespace std;
string kehrum(string);
int main()
{cout << "Bitte geben Sie einen Text ein(max. 50 Zeichen): \n- ";
string text;
getline(cin.text);
cout <<"umgekehrter Text :\n" <<kehrum() <<"\n";
}
string kehrum(string)
{
int p1,p2;
string c,ret=text;
for (p1=0, p2=ret.lenght()-1; p2>p1; --p2,++p1)
{
c=ret[p2];
ret[p2]=ret[p1];
ret[p1]=c;
}
return ret;
}
-
massen fehler drin.
hast du es mal kompiliert? warum nicht?
getline(cin, text); //kommt ein komma cout <<"umgekehrter Text :\n" <<kehrum(text) <<"\n"; //wo war der parameter string kehrum(string text) //wo war der bezeichner char c; //nicht string, sonst ist es unlogisch
-
ne also das geht garnich
vielleicht solltest du den code ersma durchn compiler jagen, bevor du ihn postest, da sind ueberall syntaxfehler.
#include <string> #include <iostream> using namespace std; string reverse_str(string str){ string tmpstr; for(int i=str.length();i>=0;i--) tmpstr+=str[i]; return tmpstr; } int main(){ string str; cout<<"gib mir n satz: "; getline(cin,str); cout<<reverse_str(str)<<endl; return 0; }
-
was stört euch an CarstenJs Lösung?
string kehre_um(const string &str) { //<-- wow ein ctor Aufruf gespart *eek* return string(str.rbegin(),str.rend()); }
-
nyx .. find ich gut :>
-
Hm, warum nicht einfach std::reverse()?
-
@nman
ich finde das mit den reverse-iteratoren irgend wie schöner alsstd::string reverse_str(const std::string &str) { std::string ret(str); std::reverse(ret.begin(),ret.end()); return ret; }
-
So würde ich das aber auch nicht schreiben, ich meine wozu eine str_reverse wenn man eh reverse hat?
Da reicht doch sowas auch:
string s; getline(cin, s); reverse(s.begin(), s.end()); cout << s;
edit: Cool wäre natürlich auch ein reverse_copy an cout.
string s; getline(cin, s); reverse_copy(s.begin(), s.end(), ostream_iterator<char>(cout));
-
// oder die Kombination: copy(s.rbegin(), s.rend(), ostream_iterator<char>(cout));
-
Und wenn ich mit dem Klassen schreiben will, kann ich so schreiben??
#include <iostream>
#include <string>using namespace std;
class umkehren{
public:
void setText(string text);
string getText();
string kehrum(string text);private:
string text,ret,s;
};
void umkehren :: setText(string text)
{
s=text;
}
string umkehren :: kehrum(string text)
{
string ret =text;
int p1,p2;
for (p1=0, p2=ret.length()-1; p2>p1; --p2,++p1)
{
char s=ret[p2];
ret[p2]=ret[p1];
ret[p1]=s;
}
return ret;
}
string umkehren :: getText()
{
return ret;
}
int main()
{
umkehren text_prg;
text_prg.setText("hallo");
cout <<"umgekehrter Text :\n" <<text_prg.getText() <<endl;
}
-
Also alleine vom Namen der Klasse find ich das schon nicht gelungen. Hab das jetzt nur überflogen, aber das erinnert mich mehr an Funktionen als an Klassen. Z. B. würde ich eine Klasse nicht unbedingt "umkehren" nennen, sondern eher "reverseString". Innerhalb diese Klasse kann man dann eine Funktion (Methode) bereitsstellen, die den übergebenen String umkehrt. Außerdem würde ich den String bereits per Konstruktor übergeben:
class reverseString{ // usw. }; reverseString::reverseString(string& orignal); // Konstruktor reverseString::umkehren(original) { // Code dafür... };
[edit]
Ich habs auch mal getestet, der Code funktioniert auch gar nicht....
-
Diese Klasse ist doch nichts weiter als eine aufgeblasene Funktion.