Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Buchstaben zählen in C
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Buchstaben zählen in C
HartlPet
Junior Letzter Besuch: im letzten Monat
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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?

Danke im voraus



Wahlurne Für HartlPet bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-11-30


Hallo HartlPet,

',' hat den logischen Wert TRUE. (So, wie alles, was nicht 0 ist.)

Du musst also schreiben
strng[i] != ' ' && strng[i] != ',' && strng[i] != '.' && strng[i] != '!' 
Was machst du übrigens wenn im String Ziffern oder andere Sonderzeichen vorkommen?




Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Monat
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-11-30


Vielen dank! Das weis ich noch nicht wie ich es mache, gibt es einen Weg ziffern zu Beschreiben? oder muss ich von 0-9 alle ziffern angeben



Wahlurne Für HartlPet bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2020-11-30


Anstatt alle Sonderzeichen und Ziffern abzuklappern, wäre es wohl sinnvoller, andersrum zu testen, ob es ein Buchstabe ist.

Beachte hierbei, dass die Buchstaben im ASCII-Code hintereinander stehen.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Monat
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2020-11-30




Vielen Dank!



Wahlurne Für HartlPet bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2020-11-30


Ja, fast. Ich war oben etwas ungenau. Die Groß- und die Kleinbuchstaben stehen jeweils hintereinander. Aber dazwischen sind weitere Sonderzeichen.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
AlphaSigma
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 23.11.2012
Mitteilungen: 242
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2020-11-30


Hallo HartlPet,

deine Zeile
C
  if (string[i] != ' ' && ',' && '.' && '!')
funktioniert nicht so wie du vielleicht denkst. Du muss jeweils separat auf Ungleichheit prüfen.
C
  if (string[i] != ' ' && string[i] != ',' && string[i] != '.' && string[i] != '!')
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.







[Die Antwort wurde vor Beitrag No.1 begonnen.]



Wahlurne Für AlphaSigma bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Monat
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, vom Themenstarter, eingetragen 2020-11-30




Kann man das nicht so schreiben? Logischer Fehler schätze ich mal

[Die Antwort wurde nach Beitrag No.5 begonnen.]



Wahlurne Für HartlPet bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6550
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2020-11-30


2020-11-30 18:02 - HartlPet in Beitrag No. 7 schreibt:
Kann man das nicht so schreiben? Logischer Fehler schätze ich mal
Das ist wohl sogar korrekte C-Syntax, aber es liefert nicht das, was du möchtest.



Wahlurne Für StrgAltEntf bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27690
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  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)

Gruß vom ¼


-----------------
Bild
\(\endgroup\)


Wahlurne Für viertel bei den Matheplanet-Awards stimmen
Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet hat die Antworten auf ihre/seine Frage gesehen.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]