HartlPet
Junior Dabei seit: 24.11.2020 Mitteilungen: 16
Themenstart: 2020-11-30
Aufgabe:
Meine Lösung:
So weit bin ich bisher, er zählt die Buchstaben ohne Berücksichtigung der Leerzeichen jedoch zählt er , . und ! sowie andere Zahlen noch mit. Wie schaffe ich das er es nicht macht?
In C ist alles was ungleich 0 (Null) ist "true". D.h.
C
if(string[i]!=' '&&',')
ist äquivalent zu
C
if(string[i]!=' '&&1)
d.h. immer wahr, wenn string[i] != ' ' ist.
Deine Methode auf Ungleichheit von den Buchstaben zu prüfen hat den Nachteil, dass du alle Ausnahmen abdecken musst, also z.B. auch '?', '@', '#' und noch viel mehr. In den meisten Zeichensätzen sind die Buchstaben direkt aufeinanderfolgend angeordnet, d.h. mit
C
char c;if(c >='a'&& c <='z')
kannst du prüfen, ob c einer der Kleinbuchstaben ist. Dann musst du nur auf Groß- oder Kleinbuchstaben prüfen und hast automatisch alle anderen Sonderzeichen abgedeckt.
In der C Standardbibliothek gibt es auch die Funkion isalpha, die das macht. Aber ich denke ihr sollt selber eine Funktion schreiben und nicht eine aus der Standardbibliothek verwenden.
viertel
Senior Dabei seit: 04.03.2003 Mitteilungen: 27690
Herkunft: Hessen
Beitrag No.9, eingetragen 2020-11-30
\(\begingroup\)\(\newcommand\d{\mathop{}\!\mathrm{d}}\)
Hi HartlPet
„Umgangssprachlich“ schreibt man sowas: $a \le x \le b$
In einer Programmiersprache muß man jede Ungleichung separat schreiben und beide mit and verknüpfen:
C++
if( a <= x && x <= b)// das x steht zwischen den Grenzen
Es macht m.M.n. Sinn (es ist leichter lesbar), wenn die Ungleichungskette beibehalten wird.
Bei dieser Schreibweise muß man immer umdenken:
C++
if( x >= a && x <= b)// schlechter lesbar (finde ich)