WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Verzweiflung bei Funktionen und Teilstrings ersetzen (http://www.wcm.at/forum/showthread.php?t=115665)

Groovy 16.11.2003 15:46

Verzweiflung bei Funktionen und Teilstrings ersetzen
 
http://www.pri.univie.ac.at/~itep/w...hue/hue05a.html

Naja ich hab schon wieder Schwierigkeiten beim lösen eines dieser eprog Uni-Beispiele

Ich hab mich auf Bsp8 konzentriert.
Das Bsp8 hört sich zwar einfach an aber damit hab ich auch schon Probleme.
Ich bitte um eure Hilfe!


Code:

<include>iostream.h
 
char replace(char par1, char par2)
{
..
...
...
}
 
int main(){
char a[100];
char b[100];
char kette[100];
 
for (int i=0; i<=100; i++)
cin>>kette[i];
replace()
...
...
}

Sorry weiter weiss ich wirklich nicht mehr was zu tun ist...bin die ganze Nacht gesessen und komm einfach nicht weiter. :(

Ich hab keine Ahnung und Vorstellung wie ich das Problem weiter angehn soll. :heul:

flinx 16.11.2003 17:52

Link?

Groovy 16.11.2003 17:59

aha funkt nicht :confused:
nochmal:
http://www.pri.univie.ac.at/~itep/ws...ue/hue05a.html

kikakater 16.11.2003 18:44

Also gut:

Mehrere Fehler haben sich da gezeigt:

1) ein include (Preprocessor-) Statement muss so aussehen:

Code:

#include <header.h> (=Suche im Includepfad) oder
#include "header.h" (=Suche im aktuellen Verzeichnis beginnen)

D.h. die korrekte Syntax ist verlangt

2) Wenn Zeichenketten zur Übergabe verlangt sind, muss eine Funktion so aussehen:

Code:

int my_string_replace (char *search_string, char *replace_string)
{

D.h. es müssen Adressen auf die jeweils erste Zelle der Chararrays übergeben werden und nicht der jeweilige Wert der ersten Zelle der Chararrays search_string und replace_string)

3) Der Aufruf in Deinem Programm muss so aussehen:

Code:

my_string_replace("Ein","Mehr");
4) Wenn man ein Chararray mit 100 Elementen deklariert, so darf man im Index auch nur die Elemente 1-100 ansprechen, sprich Index 0 - 99.

Siehe -> for (int i=0; i<=100; i++)

Das muss for (int i=0; i<=99; i++) oder for (int i=0; i<100; i++) lauten.

5) Um kette[100] als globale Zeichenkette verwenden zu können, muss die Variable außerhalb jeglicher Funktion deklariert werden, sowie beim Zugriff in anderen Quelltext-Dateien als main.cpp mittels extern char kette[100]; definiert werden.

Code:

char kette[100];

int main (void)
{

mfg
Kikakater

maxb 16.11.2003 18:52

ergänzend noch eine naive Frage an Groovy:

warum setzt du nicht die klasse "string" mit ihren methoden "find" und "replace" ein. :confused:

das sind keine funktionen aus externen bibliotheken!

http://www.cpp-entwicklung.de/cpplin...00000000000000

grüße
maxb

Groovy 16.11.2003 19:03

Zitat:

Original geschrieben von kikakater


Code:

#include <header.h> (=Suche im Includepfad) oder
#include "header.h" (=Suche im aktuellen Verzeichnis beginnen)


Sowas dummes...das dürfte mir doch gar nicht passieren! :rolleyes:
Naja gestern wars schon ganz schön spät...




Vielen Dank Leute!
Werds weiterhin versuchen!

kikakater 16.11.2003 19:13

Ich glaube kaum, daß Klassen zur Lösung herangezogen werden sollen.

Es soll einfach die globale Zeichenkette um die Differenz der beiden Parameterzeichenketten zusammen- oder auseinandergeschoben werden am Ende (=Länge) der Suchzeichenkette innerhalb der globalen Zeichenkette.


Noch Ein Einzeller
........^ (<-- hier ein 'r' einfügen, vorher "Meh" ersetzen)

Die Differenz der Zeichenketten "Ein" und "Mehr" ist +1 - sprich die (globale) Zeichenkette muss um ein Zeichen an Stellen wo der Suchstring gefunden wird (Stelle + suchstringlaenge) auseinandergeschoben werden.

kikakater 16.11.2003 19:19

und noch eines ...

Es heißt zwar C++, aber hier sind C Fähigkeiten gefragt.

Die Tutoren wollen Indexprogrammierung sehen und Filterung des Zeichens '\0' und nicht die Verwendung von Klassen.

Das Ganze dient der Stärkung der programmiertechnischen Fähigkeiten und ist außerdem ein Beitrag zu "Programmhygiene", da bei Stringverkettungen mittels Stringklassen sehr viel mehr Resourcen wie Speicher und Zeit verbraucht werden.

Groovy 16.11.2003 20:12

Zitat:

Original geschrieben von kikakater


Code:

int my_string_replace (char *search_string, char *replace_string)
{


Hmm, was bedeuten die Sternchen? :confused:
Nicht einmal das versteh ich... :heul:

edit: hab's schon gefunden es sind Zeiger oder?
Mit dem Stoff sind wir aber noch nicht so weit.

Dank dir trotzdem für die zahlreichen Beiträge.


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag