Wie kann man diese Aufgabe in C programmieren?

3 Antworten

Schaffe das nur mit Kontrollstrukturen, die sind aber nicht erlaubt.

Nein nein, Kontrollstrukturen sind laut dem Text schon erlaubt

Du sollst nur nicht Konstrukte bauen, die so (als Pseudocode) aussehen :

if c = "a":
  return "A"
if c == "b":
  return "B"
...
if c == "Z":
  return "z"
Wie kann man diese Aufgabe in C programmieren?

Ich würde überprüfen, ob der ASCII-Wert im Bereich der Kleinbuchstaben, Großbuchstaben oder anderen Zeichen ist und diesen dann dementsprechend verändern (Veränderung des Wertes um 32)

fex12337  17.12.2021, 00:11

" -> ' Klammern ==

0
xxxcyberxxx  17.12.2021, 00:11
@fex12337
" -> ' Klammern ==

Gesundheit. Das war nicht als valider C-Code, sondern als Pseudocode gedacht, um ein Beispiel zu geben. Extra für dich setz ich noch den Hinweis in die Antwort ;)

2
fex12337  17.12.2021, 00:12
@xxxcyberxxx

Aber nicht jeder kennt sich so gut aus... Sonst würde ja auch keiner Fragen stellen

0
xxxcyberxxx  17.12.2021, 00:13
@fex12337
Aber nicht jeder kennt sich so gut aus... Sonst würde ja auch keiner Fragen stellen

offensichtlich, aber hier geht es um den Sinn dahinter, da ist die genaue Syntax nebensächlich ...

1
Thena03 
Fragesteller
 17.12.2021, 00:18

Ich hab es so ist das so richtig , der Code funktioniert, aber es benutzt halt kontrollstrukturen.

#include <stdio.h>

int main(void) 

{

  int Zeichen;

  printf("Bitte geben Sie einen Buchstaben ein! ");

  do {

    Zeichen = getchar();

    if (Zeichen >= 'a' && Zeichen <= 'z') { // klein wird gross

      printf("Großer Buchstabe = %c", (Zeichen + 'A' - 'a'));

    }

    else if (Zeichen >= 'A' && Zeichen <= 'Z')

    { // klein wird gross

      printf("Kleiner Buchstabe = %c", (Zeichen + 'a' - 'A'));

    }

  }

    while (Zeichen != '\n');

     

  return 0;

}

0
xxxcyberxxx  17.12.2021, 00:20
@Thena03
Ich hab es so ist das so richtig , der Code funktioniert, aber es benutzt halt kontrollstrukturen.

Wie gesagt, Kontrollstrukturen sind im allgemeinen nicht schlimm ... Es geht nur darum, dass du nicht von Hand alle möglichen Kombinationen abfragen sollst

Dir fehlt noch ein Teil:

Gibt der Benutzer ein anderes Zeichen ein, sagen Sie ihm das.
0
Thena03 
Fragesteller
 17.12.2021, 00:21
@xxxcyberxxx

Achso ja, könntest du mir sagen wie das funktioniert, weiß leider nicht wie das geht.

0
xxxcyberxxx  17.12.2021, 00:21
@Thena03
Achso ja, könntest du mir sagen wie das funktioniert, weiß leider nicht wie das geht.

du hast doch schon dein if-else if ...

Jetzt machst du noch einen else-Block, der alle anderen Fälle abdeckt, und machst eine entsprechende Aussage

0
Thena03 
Fragesteller
 17.12.2021, 00:24
@xxxcyberxxx

Wie würde diese Aussage aussehen, wenn man zum Beispiel / oder ) eingibt. Ich könnte höchstens verhindern, dass der Benutzer eine Zahl eingeben könnte, aber nicht so ein Zeichen wie /.

0
xxxcyberxxx  17.12.2021, 00:29
@Thena03
Wie würde diese Aussage aussehen, wenn man zum Beispiel / oder ) eingibt. Ich könnte höchstens verhindern, dass der Benutzer eine Zahl eingeben könnte, aber nicht so ein Zeichen wie /.

Und waurm nicht? Alles, was nicht in einem der if-Blöcke ist, fällt in den else-Block ...

0
Thena03 
Fragesteller
 17.12.2021, 00:33
@xxxcyberxxx

Ja aber wie kann ich verhindern, dass jemand / oder ? oder § eingibt

0
xxxcyberxxx  17.12.2021, 01:13
@Thena03

du sollst es ja nicht verhindern, sondern nur eine entsprechende Aussage machen

0
Bitte nutzen Sie keine Kontrollstrukturen zur Lösung (wie switch oder if), mit denen Sie Buchstabe für Buchstabe durchgehen.

Machs nicht.

klein in groß Buchstabe: char c = 'a';

char C = c-32;

groß in klein:

char C = 'A';

char c = C + 32

Thena03 
Fragesteller
 17.12.2021, 00:20

Könntest du mir deinen Kommentar etwas genauer erklären, wäre sehr dankbar dafür.

0

Die Programmiersprache C kennt die Befehle "toupper()" und "tolower()".

Damit wird ein gegebener Grossbuchstabe in den zugehörigen Kleinbuchstaben bzw. umgekehrt umgewandelt.