Zahl durch 5 teilbar

uebertreiber

Mitglied
guten abend 🙂 und zwar hab ich eine aufgabe bekommen, die ich nicht ganz lösen kann und bräuchte dringend hilfe, ich hab zwar ansätze aber ich hänge da i.wie fest :/ und zwar lautet die aufgabe:

Erstellen Sie ein Programm welches vom Benutzer eine ganze Zahl einliest. Wenn die Zahl
durch 5 teilbar ist, soll das Ergebnis der Division durch 5 ausgegeben werden. Andernfalls
soll der Rest Modulo 5 ausgeben werden. Zwecks Lerneffekts ist bei dieser Aufgabe die
Verwendung von if NICHT gestattet.

Mein Ansatz ist:

[Java]
import java.util.Scanner;
public class Taschenrechner{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int resultat = scanner.nextInt();
[/Java]

und genau hier hänge ich fest, da ich nicht mit IF arbeiten darf :S jetzt weiß ich leider nicht wie ich weiter machen soll und würde mich sehr auf eure hilfe freuen.

MfG
 
Zuletzt bearbeitet von einem Moderator:
interessanter ist es aber auch ganz ohne direkte Fallunterscheidung,
Rechnen ist glaube ich immer noch ein Weg,
ich komme hier zumindest allein mit Java-Abrunden aus, was je nach Strenge erlaubt ist oder nicht

Java:
public class Test {

	public static void main(String[] args) {
		for (int i = 0; i <= 115; i++) {
			int j = i % 5;
			int k = (int) (0.6 + j / (j + 1.1));
			int l = i / 5 * (1 - k) + j * k;
			System.out.println(k + " -- " + l);
		}
	}
}
mit Methoden wie Math.signum() wäre es noch einfacher, aber das verlagert ja quasi nur das if
 
Java:
System.out.println(new int[]{x/5,1,2,3,4}[x%5]);

tih4UAm_Trollface-problem.png
 
Zuletzt bearbeitet:
Mal ne kreative Lösung 😀

Java:
public class Test {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();
        int k = i/5;
        int j = i%5;
        int m = (j+1)/2;
        int n = (m+1)/2;
        int o = k*(1-n) + j * n; 
        System.out.println(o);
        }
    }
}
 
Ach, fällt mir gerade erst auf, meine Lösung entspricht ja beinahe der von SlaterB.
Die Lösung von Landei ist wirklich elegant, aber vermutlich auch nicht im Sinne des Aufgabenstellers..
Aber gut.. was beliebt ist auch erlaubt, oder so...
 
würde eher Volvagia zustimmen

Java:
public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int zahl = scan.nextInt();
		int ergebnis = 0;

		ergebnis = zahl % 5 != 0 ? zahl % 5 : zahl / 5;

		System.out.println(ergebnis);
	}

man könnts auch mit switch case machen :/
 
Ich denke mal, ein [c]:?[/c] ist faktisch ein [c]if[/c], genauso wie ein [c]switch[/c]:

Java:
switch(x % 5) {
  case 0 : System.out.println(x / 5); break;
  default:  System.out.println(x % 5);
}
 
@SlaterB: Vielleicht sollte man dem Aufgabensteller sagen, dass er die Aufgabe anders formulieren soll: "Schreibe ...[das Programm] ... ohne dass im resultierenden Bytecode die bytes aa,ab,a5,a6,9f,a0,a1,a2,a3,a4,99,9a,9b,9c,9d,9e,c7 oder c6 vorkommen" 😀
 
Um auch eine numerische Lösung präsentieren zu können:

Java:
int a = ((((x%5)*2-1)%2)+1)/2;
int result = a*(x%5)+(1-a)*(x/5);
 

Neue Themen


Zurück
Oben