Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C Zeichenumwandlung mit char
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich C Zeichenumwandlung mit char
Reco57
Junior Letzter Besuch: im letzten Monat
Dabei seit: 18.03.2020
Mitteilungen: 14
Aus: Köln, Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-03-18


Hallo, ich muss folgendes machen :

Erstellen Sie ein Programm, welches ein Zeichen von der Tastatur einliest. Handelt es sich bei dem eingelesenen Zeichen um einen Kleinbuchstaben, so muss dieser in einen Großbuchstaben umgewandelt werden. Geben Sie das umgewandelte Zeichen am Bildschirm aus.

Wiederholen Sie das Programm solange bis 'E' (bzw. 'e' das umgewandelt wurde) eingegeben wurde.

Kann mir bitte jemand helfen?



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5862
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-03-18


Hallo Reco57,

willkommen auf dem Matheplaneten!

Was soll denn passieren, wenn ein Großbuchstabe eingegebene wird? Und was soll passieren, wenn das eingegeben Zeichen kein Buchstabe ist.

Kennst du die Funktion toupper?

Mach mal einen Anfang, dann sehen wir weiter 😃



  Profil  Quote  Link auf diesen Beitrag Link
Reco57
Junior Letzter Besuch: im letzten Monat
Dabei seit: 18.03.2020
Mitteilungen: 14
Aus: Köln, Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-03-18


Hallo, nein ich kenne die Funktion toupper nicht.



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5862
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2020-03-18


Dann lies mal hier Du kannst das natürlich auch zu Fuß programmieren.



  Profil  Quote  Link auf diesen Beitrag Link
Reco57
Junior Letzter Besuch: im letzten Monat
Dabei seit: 18.03.2020
Mitteilungen: 14
Aus: Köln, Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2020-03-18


Ich glaube die toupper Funktion gibt es nur bei C++



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5862
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2020-03-18


In der Überschrift steht doch "C library function"



  Profil  Quote  Link auf diesen Beitrag Link
Reco57
Junior Letzter Besuch: im letzten Monat
Dabei seit: 18.03.2020
Mitteilungen: 14
Aus: Köln, Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2020-03-18


es wird aber als Fehler (rot) markiert



  Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2235
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2020-03-18


Poste am Besten einmal deinen Code in einem Quelltextbereich.
Dann sehen wir eher, wo es hängt.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



  Profil  Quote  Link auf diesen Beitrag Link
matroid
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 12.03.2001
Mitteilungen: 14224
Aus: Solingen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2020-03-18


It is defined in <ctype.h> header file.

Du musst dieses includieren:
C
#include <ctype.h>

Gruß
Matroid



  Profil  Quote  Link auf diesen Beitrag Link
Reco57
Junior Letzter Besuch: im letzten Monat
Dabei seit: 18.03.2020
Mitteilungen: 14
Aus: Köln, Deutschland
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2020-03-19




Danke soweit hätte ich es geschafft, wie soll ich diesen Teil machen:

Wiederholen Sie das Programm solange bis 'E' (bzw. 'e' das umgewandelt wurde) eingegeben wurde



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27231
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2020-03-19


Reco57

Du solltest das Programm in einem Quelltextbereich (schau mal unterhalb des Fensters, in dem du deinen Text eintippst) posten, nicht als Bild.

Abgesehen von ein paar Anfangszeilen ist das „Programm“ völliger Quark. Wie lernst du C? Script, Buch, Internet? Normalerweise lernt man da zunächst die Bausteine, die man dann zu einem Programm zusammenfügen soll.

Ich bezweifle, ob in dieser Phase des Lernens schon toupper() verwendet werden soll. Hier geht es wohl eher darum, die Dualität Zeichen/Zahl einer char-Variablen zu verstehen. Ein Zeichen wie z.B. 'A' wird intern als Zahl 0x41=65 dargestellt.

Überlege dir erst einmal, völlig unabhängig von C oder überhaupt dem Programmiergedanken, welche Schritte du durchführen mußt, wie in einem Kochrezept. Etwa so:
Die ist übrigens ein Quelltextbereich
  1. Zeichen einlesen
  2. Prüfen, ob Kleinbuchstabe
  3. Wenn ja, in Großbuchstaben umwandeln
  4. u.s.w.

Gruß vom ¼


-----------------
Bild



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 3077
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2020-03-19


2020-03-19 10:57 - viertel in Beitrag No. 10 schreibt:
Abgesehen von ein paar Anfangszeilen ist das „Programm“ völliger Quark.
Das ist völlig übertrieben. Es fehlt die Eingabe, aber die Umwandlung in Großbuchstaben ist im Prinzip richtig, und das Programm funktioniert so auch. Die Variable c ist überflüssig, und vielleicht sollte man es auch mit längeren Zeichenketten als nur mit "c" testen, aber das wars dann auch schon.


Ich bezweifle, ob in dieser Phase des Lernens schon toupper() verwendet werden soll. Hier geht es wohl eher darum, die Dualität Zeichen/Zahl einer char-Variablen zu verstehen. Ein Zeichen wie z.B. 'A' wird intern als Zahl 41 dargestellt.
Die beste Lösung ist mit toupper. Alles andere ist strenggenommen nicht portabel. Wenn man sich realistischerweise auf ASCII festlegt, sollte man aber auch mit Zeichenkonstanten wie 'A' arbeiten, denn anscheinend wissen nicht alle, dass der ASCII-Code von A 65 ist 🙃 Und wenn da if (c >= 65 && c <= 89) steht, wer sieht den Fehler?


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27231
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2020-03-19


Einwand zurückgezogen, s.u.
Das Programm funktioniert nicht!
Durch das i++; in Zeile 11 wird in Zeile 9 ab dem zweiten Durchlauf in der Wildnis adressiert. Außerdem gibt es kein ordentliches Ende, das Programm dürfte irgendwann durch einen Adressierungsfehler abstürzen (oder es wird über die IDE gewaltsam abgebrochen).


Ob toupper(c) oder c-'a'+'A' hängt davon ab, was der Lehrstoff hergibt.



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 3077
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2020-03-19


2020-03-19 13:01 - viertel in Beitrag No. 12 schreibt:
Das Programm funktioniert nicht!
Nur Fettdruck? Ohne ein paar rote Emojis ist es noch nicht überzeugend genug, also verzeih wenn ich widerspreche.


Durch das i++; in Zeile 11 wird in Zeile 9 ab dem zweiten Durchlauf in der Wildnis adressiert.
Es wird das Nullzeichen am Stringende adressiert. Die while-Schleife bricht dann ab.



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5862
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, eingetragen 2020-03-19


Hi,

2020-03-19 13:01 - viertel in Beitrag No. 12 schreibt:
Durch das i++; in Zeile 11 wird in Zeile 9 ab dem zweiten Durchlauf in der Wildnis adressiert.

Wird der String "a" bei dieser Deklaration nicht automatisch Null-terminiert?

Und: Was bedeutet "_c:" im Aufruf von toupper?

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



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 3077
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, eingetragen 2020-03-19


2020-03-19 13:35 - StrgAltEntf in Beitrag No. 14 schreibt:
Und: Was bedeutet "_c:" im Aufruf von toupper?
Das gehört nicht zum Programmtext. Das dürfte der Name des formalen Parameters von toupper sein, den der Editor dort als Erinnerung anzeigt.



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27231
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, eingetragen 2020-03-19


2020-03-19 13:23 - ligning in Beitrag No. 13 schreibt:

Durch das i++; in Zeile 11 wird in Zeile 9 ab dem zweiten Durchlauf in der Wildnis adressiert.
Es wird das Nullzeichen am Stringende adressiert. Die while-Schleife bricht dann ab.
Yep, du hast recht, das habe ich übersehen.

Fehlt also doch nur statt des Lesens aus einem vorgegebenen String das echte Einlesen von Tastatur.



  Profil  Quote  Link auf diesen Beitrag Link
Reco57 hat die Antworten auf ihre/seine Frage gesehen.
Reco57 wird per Mail über neue Antworten informiert.
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-2020 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]