Kann mir jemand bei dieser Programmieraufgabe helfen?

3 Antworten

Meine erste Idee wäre in etwa:

int input,n;
printf("Bitte eine ganze Zahl eingeben: ")
scanf("%d",&input); // Fehlerhafte Eingaben abfangen wäre schön
n = input % 5;
switch(n){
  case 0: input = 2 * input; break;
  case 2: input = input / 2; break; // Eventuell typecasten wegen Ganzzahldivision
  case 3: input = input + 3
  default: input = input - 4; break;
}
printf("neuer Zahlenwert: %d",input);
Melvissimo  07.01.2019, 17:30

Modulo Syntaxfehler (da fehlen Semikolons und ein break, aber die Syntax kriegst du vermutlich eh besser hin als ich ;) )

0
zZDarkstarZz 
Fragesteller
 07.01.2019, 17:38

Dankeschön :D

0

Bei switch brauchst du einen ausdruck oben und dann fälle jeweils mit einem break dahinter. Bei dem ausdruck wirst du wohl den modulo operator nutzen wollen.

Ich will dir eigentlich nicht direkt die lösung sagen.

rest = z%5

switch (rest)

{
case 0: z*=2 ;
break ;

case 2: z/=2 ;
break ;

case 3: z+=2 ;
break ;

default:
z -= 4 ;

}

zZDarkstarZz 
Fragesteller
 07.01.2019, 17:29

Frage: Warum "case 0" "case 2/3"?

0
Tannibi  07.01.2019, 17:32
@zZDarkstarZz

Das sind die Reste von der Division.

z%5 liefert den Rest bei der Division durch 5.
0 heißt kein Rest, also teilbar, die anderen sind
für die anderen Reste.

1