Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Spiegeln eines strings

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
12.05.2004, 09:54 Uhr
(un)wissender
Niveauwart


Na dann schau dir 0xdeadbeefs Beispiel an, strlen kann auch selber implementieren, ansonsten kann das so nehmen, ist dann auch ohne Hilfsmittel.


C++:
size_t strlen(const char * cstr)
{
    const char* temp = cstr;
    while(*cstr) ++cstr;  
    return cstr - temp;
}


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 12.05.2004 um 09:54 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.05.2004, 10:14 Uhr
chrisuni



sorry nochmal wozu ist diese size_t da?

und wie sieht die main in c++ dazu aus...
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.05.2004, 11:06 Uhr
chrisuni



Nun der letzte Streich.. wollte es selbst hinbekommen und habe das:

C++:
#include <iostream>
#include <conio.h>
using namespace std;
char spiegeln(char *text);

int main()
{
char wort[10];
cout <<"\nBitte geben Sie ein Wort ein: ";
gets (wort);
spiegeln(wort);
cout <<"\nDas Wort gespiegelt lautet: " << spiegeln(wort);
getch();
return 0;
}

char spiegeln(char *text)
{
int i=0;
int a=0;
int lang=0;
char spiegel[10];
lang = strlen(text);
for (i=lang;i<=0;i--)
{
spiegel[0]=text[i];  // spiegel[0] ist sowieso falsch, aber warum gibt er mir
}                         // immer ein "P" aus und nicht den letzten Buchstaben

cout << spiegel;
}






Ich hoffe mal das ich wenigstens Ansatzweise da was richtig gemacht habe, bitte schau doch nochmal einer drüber, denn durch Eure Lösungen Blicke ich teilweise nicht so richtig durch, weil ich dafür zu wenig Wissen habe... kann halt nur so doofen code schreiben, aber irgendwann gelobe ich Besserung
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
12.05.2004, 12:10 Uhr
(un)wissender
Niveauwart


Weil du die Speicherstelle spiegel[0] immer wieder überschreibst, zuletzt mit text[0], also dem ersten Buchstaben.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
12.05.2004, 12:14 Uhr
chrisuni



Ok ist mir klar, aber ich habe z.b. das wort test eingegeben und er hat mir nur das "P" ausgespuckt und da in test kein "P" vorkommt war ich verwundert..


C++:
char spiegeln(char *text)
{
int i=0;
int a=0;
int lang=0;
char spiegel[10];
lang = strlen(text);
cout << "\n Wortlänge: " << lang;

while(i=lang,i<=0)
spiegel[a]=text[i];
return i--,a++;


cout << spiegel;
}





So gehts aber auch nicht ... gib mal noch nen Tip... von meinem überlegen her müsste das so doch eigentloch gehen ...
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
12.05.2004, 13:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


versuch mal so

C++:
void spiegeln(char *text){
    int i,len=strlen(text);
    char c;
    for(i=0;i<len/2;++i){
        c=text[i];text[i]=text[len-1-i];text[len-1-i]=c;
    }
}


int main(){
char text[]="abcde";
printf("%s\n",text);
spiegeln(text);
printf("%s\n",text);
}



die schleife macht nix anderes als den ersten mit dem letzen, den zweiten mit dem vorletzen usw. zu vertauschen


das kannst du dir so vorstellen

am anfang ist i=0 und len=5 weil dein wort (in diesem falle abcde ja 5 zeichen hat...

jetzt wird innerhalb der schleife text[0] mit text[4] vertauscht...
beim nächsten durchlauf ist i=1 also text[1] mit text[3] vertauschen...

jezt ist die schleifenbedinung nicht mehr wahr weil i<len/2 nicht mehr gegeben ist, denn len/2 ergibt 2.... und i ist auch 2 und damit nicht mehr kleiner als 2...

jetzt alles klar?
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 12.05.2004 um 13:29 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
12.05.2004, 15:08 Uhr
(un)wissender
Niveauwart


Also, wenn ich mir das mal ansehe, stehst du ziemlich auf verlorenem Posten.
Entweder du kopierst dir jetzt das zusammen, was hier im Forum steht, oder holst dir ein C++-Buch und fängst ganz von vorne an.

Ich kommentiere das mal durch:

C++:
char spiegeln(char *text)
{
int i=0; //Laufvariablen gehören in die Schleife
int a=0;
int lang=0; //Besser als Parameter mit übergeben.
char spiegel[10]; //Sehr gefärlich, woher weißt du, dass text einen maximale Länge von 9 hat?
//Wenn er länger ist, greifst du schreibend auf Speicher zu der dir eventell nicht gehört.
//Dynamischer Speicher ist hier von nöten (new)!
lang = strlen(text); /
cout << "\n Wortlänge: " << lang;

while(i=lang,i<=0) //Schleife läuft endlos!
spiegel[a]=text[ i ];
return i--,a++; //Laufvariablen aushalb der Schleife, macht keinen Sinn
//Nach return ist Ende, die Funktion wird verlassen, --, a++, ... ist toter Code
//Du willst char * zurückgeben, nicht char
//Das löschen des Speichers ,wenn mit malloc oder new angefordert mit free bzw. delete[] nciht vergessen!


cout << spiegel; //toter code
}




Bearbeitung:

Wenn ich es mir mal genau überlege, hast du das weder kompiliert noch laufen gelassen, warum nicht?
Wir sind nicht deine Compiler oder Laufzeitumgebung, mach das bitte selber!
Ich denke du hast genug Hilfe bekommen, jetzt bist du dran!


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 12.05.2004 um 15:11 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: