Thread Kleines mathe-skript (31 answers)
Opened by SirLant at 2003-09-02 16:39

snadra
 2003-09-02 18:10
#82981 #82981
User since
2003-08-11
265 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,02.09.2003, 15:45]Snadra deine Methode versteh ich nicht :([/quote]
Ok, noachmal kommentiert. Es ist zwar peinlich diesen lausigen Code noch mal zu erwähnen, aber es geht ja ums Prinzip. Ich dachte zwar dieses Gekritzel wäre die Erklärung... Also nochmal kommentiert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Deine beiden Zahlen, 
# von denen Du das kleinste gemeinsame Vielfache suchst
# kgV ist die kleinste Zahl, durch die beide teilbar sind
my ($zahl1, $zahl2) = (8,9);

# Ergebnis soll inkrementiert (immer plus 1) werden
# bis das kgV erreicht ist
# die beiden $zahlteiler brauche ich, um zu vergleichen
# ob ich beim teilen durch meine beiden Zahlen integer Werte
# (integer = ganze Zahl, ohne Nachkommastellen) erhalte
# Ich habe sie jetzt mit Nachkommastellen gesetzt, um
# eine Zeile Code zu sparen, ist lausig, und macht nicht viel
# Sinn
my ($ergebnis,$zahl1teiler,$zahl2teiler) = (1, 0.2, 0.3);

# Da Perl keine Typüberprüfung hat, sondern Variableninhalte
# einfach als Skalare behandelt, benutze ich regexes um
# selbst die Typüberprüfung vorzunehmen. /^\d+$/ bedeutet,
# daß nur Zahlen in der variable vorkommen dürfen.
# Ein Punkt (Komma) würde also nicht passen.
# Wenn beide $zahlteiler integers sind habe ich den
# kgv erreicht
while ($zahl1teiler !~ /^\d+$/ || $zahl2teiler !~ /^\d+$/) {
$zahl1teiler = $ergebnis/$zahl1;
$zahl2teiler = $ergebnis/$zahl2;
# ergebnis wird solange inkrementiert, bis es groß genug
# ist, so daß beide Zahlen teilbar sind, in diesem Fall: 72
$ergebnis++;
}

# Da ich durch die while Schleife einmal zu oft inkrementiert
# habe, ziehe ich $ergebnis das wieder ab.
# ein repeat ... until, wie in Pascal wäre eleganter für so
# etwas.
$ergebnis = $ergebnis - 1;

# Damit Du das Ergebnis kennst, printe ich es:
print "Das kleinste gemeinsame Vielfache ist: $ergebnis\n"


Wie gesagt, man kann es auch in Perl schicker lösen, aber ich war in Eile und wollte Dir nur kurz erklären worum es geht...
Wenn Du es schicker machen willst, schreibe eine hübschere Schleife, so daß das $ergebnis - 1 wegfällt und werde die Kommazahlen auf die ich die $zahlteiler gesetzt habe los...
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}

View full thread Kleines mathe-skript