Aufgabe mit char Feld in C

Chris123

Neuling
Thread Starter
Mitglied seit
28.08.2005
Beiträge
251
hi,
es eilt ein wenig:
B-Sprache
ich fülle ein char-feld mit "gets()".
Nach jedem Vokal wird ein "b" eingefügt und der Vokal wiederholt. Zwei aufeindander folgende Vokale wie "ei" oder "eu" werden wie ein Vokal betrachtet . "b" wird nach diesen eingefügt und die beiden Vokale werden wiederholt.

Bsp:
Heute noch.
Heubeutebe noboch.

Das aktuelle Thema sind Pointer und Funktionen und Stringfunktionen.
Man soll hier anscheinend auch etwas davon benutzen. mit printf und For-Schleifen könnte man das realisieren, aber ich glaube nicht, dass das der Sinn ist.

Es wäre oberklasse, wenn ich heute noch eine Antwort krieg!
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
leider habe ich die Syntax von C größtenteils vergessen (4 Jahre her). Jedoch kann ich eventl. etwas theoretisch helfen.

Ich würde aber logisch so vorgehen:

char *string und char *string2 Variablen anlegen, sowie int i und
dazu würde ich noch eine eigene Funktion definieren, die ich mal int Compare(char c) nenne.

Die Funktion sollte wie folgt aussehen:
Code:
Switch(c)
{
Case 'A': return 1;
Case 'E': return 1;
Case 'I': return 1;
Case 'O': return 1;
Case 'U': return 1;
Case 'a': return 1;
Case 'e': return 1;
Case 'i': return 1;
Case 'o': return 1;
Case 'u': return 1;
default: return 0;
}
dh. sie gibt den Wert "1" zurück, wenn c ein Vokal ist und sonst 0 ;). Kann man sicher effektiver lösen, aber so ist es glaub ich verständlich.

Nun im Hauptprogramm in string1 den String von der Tastatur einlesen:

Code:
gets(string1);

Anschließend mit einer For-Schleife von 0 bis zur Stringlänge-1 durch den string1 gehen und nach Vokalen suchen:

Code:
for (i=0; i<=strlen(string)-1; i++)
{
	if (Compare(string[i]))
	{
		if (Compare(string[i+1]))
		{
			*string2 = *string2 + string1[i] + string1[i+1];
			*string2 = *string2 + 'b' + string1[i] + string1[i+1];
		}
		else
		{
			*string2 = *string2 + string1[i] + 'b';
		}
	}
	else
	{
		*string2 = *string2 + string1[i];
	}
}
denke mal so in etwa könnte es klappen. Bin jetzt nur leider nicht ganz sicher, was die Syntax angeht und auch ob man, den Ausdruck "*string2 = *string2 +" in C verwenden kann. In Pascal geht das, könnte sein, dass man in C mit den Indizies arbeiten muss.

Das EOL bzw. '\0' macht hier keine Probs, auch wenn ich den eher gefährlich Ausdruck i+1 verwende, so kommt dieser nur zum Einsatz, wenn das Zeichen ein Vokal ist, beim EOL ist das aber nicht der Fall ;).

Warte jedoch bis ein richtiger Progger das Problem angeht :).

Achja, man kann auch die Vergleichsfunktionen der string.h verwenden. Gibt viele Möglichkeiten das Prob zu lösen. Meins müsste auch erstmal getestet werden, da ich logische Fehler nicht ausschließen kann :fresse:

PS:
habs mir in 5min. überlegt und wie gesagt seit 4 Jahren ned geproggt, also bitte ned steinigen :-[
 
Zuletzt bearbeitet:
thx. das problem hat sich aber eigentlich erledigt.
bin jetzt nicht mehr unbedingt an der lösung interessiert.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh