if Ausdruck mit oder vereinfachen (C)?

...komplette Frage anzeigen

2 Antworten

Es gibt verschiedene Möglichkeiten:

a) switch (s[i])

{

case 'a':

case 'e':

....

}

b) (Besser)

if (isVokal(s[i]) {...}

wobei isVokal den Vergleich des Parameters auch wieder per switch, per "==" oder stingfunktion enthalten kann.

char Vokale[] = "aeiouäöüAEIOUÄÖÜ";
int i;

for ( i = 0; s[i]; i++ )
{
if(strchr( Vokale, s[i] ))
{
printf("String enthaelt einen Vokal an der Stelle %d\n", i+1);
}
}

Dieter987 13.10.2017, 12:26

okay danke, aber muss man tatsächlich bei meinem Beispiel jedesmal s[i] aufführen oder könnte man das anders machen?

0
surbahar53 13.10.2017, 12:29
@Dieter987

Wenn Du bei Deinem Code bleiben willst, könnte man vor allen Abfragen s[i] erst mal kopieren.

char Zeichen;

Zeichen = s[i];

if ( ( Zeichen == ...) || ( Zeichen == ... ) ...

Bei den heutigen Rechnern macht das bezüglich der Performance Null Unterschied. Ausserdem optimieren gute Compiler den Code genau auf diese Weise.

1
ralphdieter 13.10.2017, 16:19
@Dieter987

könnte man das anders machen?

for ( char const *sp=s; *sp; ++sp )
  if ( strchr("aeiou", *sp) ) /* ... */
0

Was möchtest Du wissen?