Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Für Anfänger: revstr

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 <
000
30.07.2002, 16:37 Uhr
virtual
Sexiest Bit alive
(Operator)


Schreibe eine Routine, die einen String umgedreht ausgibt. Die Routine soll so aufrufbar sein:

C++:
strrev("virtual"); /* soll "lautriv" ausgeben */


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.08.2002, 00:08 Uhr
~Hans
Gast



Zitat:
virtual postete
Schreibe eine Routine, die einen String umgedreht ausgibt. Die Routine soll so aufrufbar sein:

C++:
strrev("virtual"); /* soll "lautriv" ausgeben */




Also ich schlage mal vor, es so zu machen:


C++:
/* Datei: strrevtest.c

   Sinn und Zweck: Eine funktion, die eine übergebene Zeichenkette rückwärts
   ausgibt, also mit dem letzten Zeichen beginnend.

   V0.01 by HGP
*/


#include <stdio.h>

int strrev (char *t);

main()
{
  char text[80];
  int i=0;

  printf ("Bitte Text eingeben: ");
  gets (text);
  printf ("\nergibt umgedreht: ");
  strrev (text);

  return 0;
}

int strrev (char *t)
{
  int i;

  while (t[ i ])
        i++;
  while (i>=0)
      {
        putc (t[ i ], stdout);
        i--;
      }
  return 0;
}



Man kann es sicher noch anders machen, indem man den Zeiger direkt verbiegt, aber ich bin mir nicht sicher, ob die Methode hier so gut ist.

Hans

edit by virtual: kleine Änderung, dass der Source auch schoen dargestellt wird.

Dieser Post wurde am 02.08.2002 um 07:53 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.08.2002, 09:04 Uhr
Bruder Leif
dances with systems
(Operator)


Erweiterung: Die Ausgabe soll rekursiv erfolgen ;-)
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.08.2002, 09:26 Uhr
~incognito
Gast



C++:
void
strrev(const char* str)
{
    if (*str)
    {
        strrev(str+1);
        cout << (*str);
    }
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.09.2002, 15:12 Uhr
~0xdeadbeef
Gast


Eine Aufgabe, eine Funktion:


C++:
#include <iostream>

void advance(const char*);     //geht um ein Zeichen vorwärts
int finished(const char*);          //ist der String zuende?

void strrev(const char *str) {    //Ausgabe, Hauptfunktion
  advance(str);
  cout << str[0];
}

void advance(const char *str) {
  if finished(str) strrev(str + 1);
}

int finished(const char *str) { return str[0] ? 1 : 0; }



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.09.2002, 15:13 Uhr
~0xdeadbeef
Gast


Uuups, ein Fehler, das ist natürlich


C++:
void advance(const char *str) {
  if (finished(str)) strrev(str+1);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.09.2002, 14:01 Uhr
FDellas



Und weils so schön war, noch einmal eine Funktion:


C++:
#include <iostream>
#include <string.h>

using namespace std;

void revstr(char str1[], char str2[])
{
  for (int i=0; i<strlen(str1); i++)
    str2[(strlen(str1)-1-i)] = str1[ i ];
}

int main()
{
  char String[100], RevString[100];
  cout << "Bitte String eingeben: " << endl;
  cout << ">";
  cin.getline(String, 100);
  revstr(String, RevString);
  cout << "Der String " << String << " rückwärts:" << endl;
  cout << ">" << RevString << endl;
  return 0;
}



Dieser Post wurde am 13.09.2002 um 20:13 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.09.2002, 14:34 Uhr
virtual
Sexiest Bit alive
(Operator)


Als STL Fetischist sagt man auch:

C++:
#include <iostream>
#include <string>
#include <algorithm>

int main(void)
{
    std::string str;

    std::cout << "Bitte String eingeben: " << std::flush;
    std::getline(std::cin, str);

    std::cout << "Umgedreht ist das: ";
    std::copy(str.rbegin(), str.rend(), std::ostream_iterator<char>(std::cout));
    std::cout << std::endl;

    return 0;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Rätselecke ]  


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: