Strings Buchstaben vertauschen
-
Nein, auch die Lösung würde bei
strreplace(eingaben2,"en","x"); strreplace(eingaben2,"x","en");
in
eingaben2
wieder den Ursprungsstring liefern.Man muß schon Zeichen für Zeichen den String durchgehen und jeweils das Ersetzen einzeln durchführen (und dabei aber dann den Index (bzw. Zeiger) passend weiterbewegen).
-
@Th69 sagte in Strings Buchstaben vertauschen:
Nein, auch die Lösung würde bei
strreplace(eingaben2,"en","x"); strreplace(eingaben2,"x","en");
in
eingaben2
wieder den Ursprungsstring liefern.Nicht einmal das.
strreplace(eingaben2,"en","x"); strreplace(eingaben2,"x","en");
ist äquivalent zu
strreplace(eingaben2,"x","en");
Man kann die geforderte Funktion nicht durch cleveres Aneinanderreihen einfacher Ersetzungen erreichen (außer wir machen ungerechtfertigte Annahmen darüber, dass gewisse Zeichen nicht vorkommen können). Man muss schon etwas eigenes schaffen, wie von mir oder @DirkB oben beschrieben. Das ist schließlich eine Programmieraufgabe, keine setze-Standardfunktionen-zusammen-Aufgabe.
Nichtsdestotrotz ist das eine denkbar undankbare Aufgabenstellung, wenn man das in C machen möchte. Die Aufgabe ist ganz sicher nicht für C gedacht. Ich empfehle sehr, erst einmal etwas anderes zu machen. Man merkt deutlich, dass @codinglea nicht mehr so ganz mitkommt bei der Diskussion. Das bringt ihm am Ende dann ja keinen Lernerfolg, wenn einfach abgeschrieben wird.
-
@SeppJ
*ihr wenn ich bitten darf!
-
@SeppJ: Hast natürlich recht - den Ursprungstext liefert er nur, wenn vorher kein "x" drin vorkommt (hatte mich auf den Code von @Wutz mit
"hallo ende"
bezogen).
-
Da es funktioniert hat, ist für mich die Aufgabe abgeschlossen.
-
@codinglea sagte in Strings Buchstaben vertauschen:
@SeppJ
*ihr wenn ich bitten darf!'Tschuldigung. Ich fühlte mich beim Schreiben auch echt unsicher. Auf Englisch hätte ich "they" gesagt, aber ich schreibe nicht oft genug auf Deutsch, um zu wissen, was die korrekte neutrale Form wäre.
-
Ich glaube, @codinglea bezog sich auf
@SeppJ sagte in Strings Buchstaben vertauschen:Das bringt ihm am Ende dann ja keinen Lernerfolg, wenn einfach abgeschrieben wird.
-
@Th69 sagte in Strings Buchstaben vertauschen:
Ich glaube, @codinglea bezog sich auf
@SeppJ sagte in Strings Buchstaben vertauschen:Das bringt ihm am Ende dann ja keinen Lernerfolg, wenn einfach abgeschrieben wird.
Ich auch?
-
@codinglea sagte in Strings Buchstaben vertauschen:
Da es funktioniert hat, ist für mich die Aufgabe abgeschlossen.
hast du denn auch verstanden, wie das alles funktioniert? der sinn von übungsaufgaben besteht ja nicht darin, dass man sie sich von anderen vorkauen lässt und dann die lösung einfach abschreibt.
ps: schwer zu erkennen, dass es sich bei jemandem mit dem namen lea um eine weibliche person handelt.
-
@Wade1234 sagte in Strings Buchstaben vertauschen:
ps: schwer zu erkennen, dass es sich bei jemandem mit dem namen lea um eine weibliche person handelt.
Ich bin wohl zu alt für diese Internet, wo es normal geworden ist, seine echten Identitäten nicht zu verbergen. Mein echter Name hat jedenfalls nichts mit 'Sepp' zu tun...
(Und ich bin auch kein pinkes Auge mit Metallgerüst)
-
@codinglea sagte in Strings Buchstaben vertauschen:
Da es funktioniert hat, ist für mich die Aufgabe abgeschlossen.
das heißt, Du hast jetzt eine Lösung, die aus der Eingabe
'Hallo x Welt en, hallo x Weltall, hallo x alle'
das Ergebnis
'Hallo en Welt x, hallo en Weltall, hallo en alle'
macht?
Zeig doch mal bitte.
-
@Wade1234
Ja, ich habe es verstanden.
Das Problem besteht nur darin, dass ich die Grundlagen langsam kann und diese nun erweitern muss. Daher suche ich in diesem Forum Tipps. Ich möchte nichts vorgekaut bekommen, ich will gar nicht mal die Lösung. Mir reicht es, wenn jemand hilfsbereit ist und mir auf die Sprünge hilft.
Aber sowas wieispunct
kenne ich gar nicht, sodass der Tipp von @Th69 mit ctype.h zu arbeiten, sehr hilfreich war und ich letztendlich dadurch die eine Aufgabe lösen konnte ohne das mir direkt die Lösung geschrieben wurde.
-
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> char *strreplace(char *str,const char *from,const char *to) { char *p=str; while( p=strstr(p,from) ) { memmove(p+strlen(to),p+strlen(from),strlen(p+strlen(from))+1); memcpy(p,to,strlen(to)); p+=strlen(to); } return str; } int main() { // 3. Variante char string3[200] = "Hallo, diese Nachricht wird ersetzt. Dieser Quelltext gehoert zu den Systemen."; printf("Vorher: %s\n", string3); // Vorher printf("Nachher: "); // Nachher printf(strreplace(string3,"en","x"),strreplace(string3,"x","en"), strreplace(string3,"er","q"), strreplace(string3,"q","er"), strreplace(string3,"y","ch"),strreplace(string3,"ch","y"), strreplace(string3,"a","o"), strreplace(string3,"o","a")); return 0; }
-
@codinglea also wenn du jetzt langeweile hast, kannst du dich ja mit threads und prozessen beschäftigen.
-
@Wade1234
Danke für den Tipp!
Sehr gerne, wenn ich meine weiteren Aufgaben fertig habe!
Wer weiß, vielleicht brauche ich ja auch nochmal Hilfe bei denen...
-
@codinglea Das funktioniert?
was passiert in Zeile 41?
(alleine das printf funktioniert anders)Edit: warum das printf funktioniert ist mir klar, aber einem Anfänger sollte man das nicht empfehlen.
-
@DirkB
Ja, das funktioniert, hab's natürlich ausprobiert, sonst hätte ich nicht gesagt, dass es klappt.
In Zeile 41 werden alle Umwandlungen genommen und in den String eingesetzt.
-
@codinglea auch beim String "en x er q ch y a o"
-
Noch nicht ausprobiert, aber müsste klappen, wenn's so auch klappt mit dem Text.
-
Aber der
printf
in Zeile 41 gibt nur einen (d.h. den ersten) Text wieder aus.Gib die
strreplace
-Aufrufe einzeln nacheinander aus (stattprintf
solltest du dann auchputs
benutzen, da der Text ja 1:1 ausgeben werden soll - ohne evtl. Formatierung, z.B. wenn"%s"
im Text vorkommen würde) - oder alternativ nur den letzten.Und die Umwandlung ist weiterhin nicht korrekt, denn z.B. das
x
wird nicht alsen
ausgegeben, sondern wieder zurück nachx
gewandelt (und für die anderen Umwandlungen gilt das auch) : Dein Code als Ideone-Code.Die korrekte Ausgabe müßte so lauten:
Vorherl: Hallo, diese Nachricht wird ersetzt. Dieser Quelltext gehoert zu den Systemen. Nachher: Holla, diese Noyriyt wird qsetzt. Diesq Quellteent gehaqt zu dx Schstemx.