Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anwendungsproblem von 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 <
000
02.08.2009, 10:48 Uhr
Goldi



Hallo

Ich wollte ein Programm zur Palindromerkennung in C++ schreiben(anna==anna)
Leider bin ich blutiger Anfänger und hab da so meine Probleme mit dem einbinden der Stringbibliothek bzw der Anwendung...hilfeeee funktioniert einfach nicht
javascript:insert_smiley('')


#include <iostream.h>
#include <string>
#include <ctype.h>
int main()
{
string eingabe[60]={};
string neu[60]={};
int laenge,hilf;


cout<<"Geben Sie den Namen ein"<<endl;
cin>>eingabe;


laenge=strlen(eingabe);

hilf=laenge;
hilf=hilf-1;

for(int i=0;i<laenge;i++)
{
neu[i]=eingabe[hilf];
hilf=hilf-1;
cout<<neu[i]<<"--"<<eingabe[hilf]<<endl;
}




if(eingabe==neu)
{
cout<<eingabe<<" ist ein Palindrom"<<endl;
}

else
{
cout<<eingabe<<" ist kein Palindrom"<<endl;
}

cin.sync();
cin.get();
return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.08.2009, 14:37 Uhr
Kest
saint


Hi!


Zitat von Goldi:
Leider bin ich blutiger Anfänger

Sieht man.

Besorge dir ein Buch.

Ist 'n C/C++-Mischmasch. Auch noch falsch dazu.
Dir jetzt alles zu erklären, wäre zu viel, da wir hier keine Tutoriale führen.


Orientiere dich an so was:

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

bool comp(const char& a, const char& b) {
    return std::tolower(a) == std::tolower(b);
}

int main()
{
    std::string vorw, ruckw;

    std::cout << "Eingabe:";
    std::getline(std::cin, vorw);

    std::copy(vorw.rbegin(), vorw.rend(), std::back_inserter(ruckw));

    if( std::equal(vorw.begin(), vorw.end(),
        ruckw.begin(), std::ptr_fun(comp)) ) {
        std::cout << "Palindrom";
    } else {
        std::cout << "Kein Palindrom";
    }
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 02.08.2009 um 14:43 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.08.2009, 15:19 Uhr
0xdeadbeef
Gott
(Operator)



C++:
if(std::equal(vorw. begin(), vorw. end(),
              vorw.rbegin(), vorw.rend(), std::ptr_fun(comp)) {
  // ...
}


?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.08.2009, 17:59 Uhr
Goldi



Wie du sicher verstehst, ist dein Lösungsvorschlag an dem ich mich orientieren soll, nicht so ganz einfach zu verstehen mit all den Funktionen...

ausserdem soll meine Lösung nicht objektorientiert sein...

Du könntest doch nen klein wenig auf mein "Ding" eingehen.
(Es ist noch kein Meister vom Himmel gefallen)



MfG Goldi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.08.2009, 18:07 Uhr
0xdeadbeef
Gott
(Operator)



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


Veraltete Header, das kaufen dir neuere Compiler nicht mehr ab. Wenn dein Compiler das noch frisst, solltest du dir einen neueren zulegen. Standardkonform heißt das

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

using namespace std;



Das hier:

C++:
string eingabe[60]={};
string neu[60]={};


deklariert nicht etwa Strings von 60 Zeichen Länge, sondern zwei Arrays von je 60 Strings. Da std::string Strings beliebiger Länge halten kann, ist die Längenangabe auch nicht notwendig, also

C++:
string eingabe;
string neu;



Hier:

C++:
laenge=strlen(eingabe);


std::strlen Befindet sich im Header <cstring> und arbeitet auf C-Strings, nicht auf C++-Strings. Sie ist eigentlich nur aus Kompatibilitätsgründen vorhanden - in C++ heißt das

C++:
laenge = eingabe.size();


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.08.2009, 00:18 Uhr
Kest
saint



Zitat von 0xdeadbeef:
?

Schlauer.

Mein Compiler will aber nur ohne vorw.rend().
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.08.2009, 00:35 Uhr
0xdeadbeef
Gott
(Operator)


Ah, richtig, richtig, mein Fehler.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.08.2009, 17:31 Uhr
Goldi



Danke Dir für die super Hilfe...jetzt funktioniert es einwandfrei!!!
--->und so langsam fang ich an zu verstehen...

Ist der Dev-C++ 4.9.9.2 veraltet? Welchen schlägst du vor?

MfG Goldi

Dieser Post wurde am 04.08.2009 um 17:32 Uhr von Goldi editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: