Didito
Hallo Leute,
ich habe 2 kleine Quellcode-Stücke.
Wer kann mir die so verkürzen (so kurz wie möglich machen), sodass die Programme weiterhin genauso funktionieren.
Code 1
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
if($a >= 0)
{
if($a <= 0)
{
$a = 1;
}
else
{
$a = 2;
}
}
|
|
Code 2
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
if($a > 0)
{
$b = $a;
}
else
{
if($a == 0)
{
$b = 0;
}
else
{
$b = -$a
}
}
|
|
Kann es sein, dass es bei einer von beiden oder bei beiden garnicht kürzer geht?
Dizzy.w3
Hi,
moeglich ist es, jedoch auch fraglich, ob man es will bzw soll. Schliesslich zerstoert es die Lesbarkeit.
Dein 1. Code ist unlogisch. Du fragst ab ob a groesser oder gleich 0 ist, und anschliessend nochmal, ob a kleiner oder gleich ist.
Code 1
php: |
1:
|
<?php ($a == 0) ? $a = 1 : (($a > 0) ? $a = 2 :); ?> |
|
Code 2
php: |
1:
|
<?php ($a > 0) ? $b = $a : (($a == 0) ? $b = 0 : $b = -$a); ?> |
|
Wobei Code 2 niemals so in der Praxis verwendet werden sollte.
Sofern die beiden oberen Codestuecke ueberhaupt funktionieren. :/ ... Zu dieser Zeit weiss man sowas ja net.
Wenn du den Code unbedingt - praxisbezogen - verkleinern willst, dann mit Dangling-Elses, wobei auch diese mit grosser Vorsicht zu benutzen sind, da sie schnell unuebersichtlich werden.
Code 1
php: |
1:
2:
3:
4:
|
<?php
if($a == 0) $a = 1;
else if ($a > 0) $a = 2;
?> |
|
Code 2
php: |
1:
2:
3:
4:
5:
|
<?php
if($a > 0) $b = $a;
else if ($a == 0) $b = 0;
else $b = -$a;
?> |
|
Warum stellst du diese Frage eigentlich?
// Edit: groesser-Operator bei Code 1 vergessen.
Didito
Sollen wir in der Schule machen.
Betrachten sie folgenden Pseudocode, wobei a und b Variablen für ganze Zahlen sind.
Code 1
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
if a >= 0
if a <= 0
then
a := 1
else
a := 2
|
|
Code 2
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
if a > 0
then
b := a
else
if a = 0
then
b := 0
else
b := (-a)
|
|
Gibt es für die Verzweigungen jeweils eine einfachere Lösung mit gleicher Wirkung?
mkkcs
also bei dem 1. Code fehlt mir jede Logik !
da das erste then fehlt !
und beim Code 2
würde ich evtl. diesen Weg gehen
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
b := 0
if a > 0
then
b := a
else
if a < 0
then
b := (-a)
|
|
mehr "Kürzung" sehe ich da jetzt nicht !
Dizzy.w3
Loese deine Aufgaben selbst!
// Edit: Oh mein Gott, du bist Informatik Student im 1. Semester und laesst deine Aufgaben von anderen loesen?! Waere mein erster Beitrag nicht so allgemein, haette ich ihn spaetestens jetzt geleert.