Ich brauche dringend Hilfe zu 4 Funktionen, morgen ist Klausur :-(
-
Ich habe dir einen Quelltext für Nr.5 geschrieben, ich hoffe das ist was du brauchst:
#include<stdio.h>
int austausch(char* string);
void main()
{
char text[] = "Hier soll das Vorkommen eines Zeichens durch ein anderes ersetzt werden.";
int anzahl;printf("Vor dem Austausch(e wird durch @ ersetzt):\n");
puts(text);
anzahl = austausch(text);
printf("Nach dem Austausch:\n");
puts(text);
printf("Es wurden %i Zeichen ausgetauscht.", anzahl);
getchar();
}int austausch(char* string)
{
int x = 0;
int p = 0;while(*string++)
{
if('e' == string[x])
{
p++;
}
x++;
}
return (p);
}
Ist das brauchbar?Viel Glück noch für deine Prüfung.
gruß hohesC
-
Sorry ich bin neu hier deswegen nochmal, mein Praktischer Quelltext für dich:
#include<stdio.h> int austausch(char* string); void main() { char text[] = "Hier soll das Vorkommen eines Zeichens durch ein anderes ersetzt werden."; int anzahl; printf("Vor dem Austausch(e wird durch @ ersetzt):\n"); puts(text); anzahl = austausch(text); printf("Nach dem Austausch:\n"); puts(text); printf("Es wurden %i Zeichen ausgetauscht.", anzahl); getchar(); } int austausch(char* string) { int x = 0; int p = 0; while(*string++) { if('e' == string[x]) { string[x] = '@'; p++; } x++; } return (p); }
So wollt ichs, nochmal Sorry :p
-
Hm, ich weiß nicht ob du's nicht mitbekommen hast .. aber erstens sollte man angeben können, welches Zeichen mit welchem ersetzt werden soll, zweitens überspringt deine Funktion jedes zweite Zeichen, und drittens hab ich die Lösung gestern schon gepostet.
-
DANKE!
#include<stdio.h> int austausch(char* string, char a, char b); void main() { char text[256]; char a1, a2; int anzahl; printf("Welches Zeichen soll ausgetauscht werden:\n"); a1 = getchar(); printf("Welches Zeichen soll dafuer eingefuegt werden:\n"); getchar(); a2 = getchar(); printf("Geben Sie den Text ein indem %c durch %c ersetzt werden soll:\n", a1 ,a2); getchar(); gets(text); anzahl = austausch(text,a1,a2); printf("Nach dem Austausch:\n"); puts(text); printf("Es wurden %i Zeichen ausgetauscht.", anzahl); getchar(); } int austausch(char* string, char a, char b) { int p = 0; do { if(a == *string) { *string = b; p++; } }while(*string++); return (p); }
-
Vergebung? Wieso? Stells einfach richtig und gut ist. Warum du da jetzt noch ne Schleife, die von -1 bis 255 läuft, reingebaut hast, ist mir nicht ganz klar. In jedem Falle ist das so falsch, denn damit veränderst du Speicher, der überhaupt nicht zum String gehört.
-
Ist es so richtig? Hab es verbessert.
Wenn du den Quelltext compilierst läuft alles super oder?
Bei mir schon!
-
Die do..while-Schleife find ich etwas seltsam. Du prüfst dadurch immer das String-Ende-Zeichen noch mit ab. Gut, in der Praxis wird wohl niemand für a ein '\0' übergeben, aber unschön ist es trotzdem. Und da x sich nicht ändert, kannst du auch überall, wo x steht, 0 einsetzen. Und wenn du dann bedenkst, dass string[0] das gleiche ist wie *string, hast du meine Lösung :p
-
schon passiert!
Aber danke ich machs Nächstes mal besser! :p
-
Hi,
ohne nochmal auf die Wiese zu Scheißen, die Aufgabe 5 gefällt mir.
Hier meine Lösungint austausch(char *str,char from,char to) { return *str ? *str==from ? *str=to , 1+austausch(str+1,from,to) : austausch(str+1,from,to) : 0; }
Is nicht wirklich lesbar, aber für den Lehrer solls langen
grüßem, Con@n
-
Gefällt mir!
Nicht schlecht Herr Specht!!!
-
Na, ja,
das ist eigentlich nur Angeberei.
Die Sache hat ein paar Haken.
1. Es ist sehr langsam
2. Verbraucht unheimlich viel Speicher
3. Das auf Anhieb zu verstehen braucht es parapsychologische Fertigkeiten (oder etwas Übung)
Alles natürlich im Vergleich zur iterativen Lösung
übrigens läßt sich die 1. Aufgabe auch so lösen
#include <string.h> int IsSorted(char **str) { return *str[1] ? strcmp( *str,str[1] ) <= 0 ? IsSorted(str+1) : 0 : 1; }
grüße, Con@n
-
Hi
Danke für eure Hilfe, war wirklich superlieb, hat nur nicht geholfen :((
-
Hallo,
das nächste Mal mußt du eben noch ein wenig mehr aktiv programmieren, vielleicht war auch die Zeit zu kurz, um kurz vor einer Klausur so eben noch mal ein paar fertige Lösungen nachzuvollziehen (oder die Klausur war einfach zu schwer, soll's ja geben)
MfG