Thread Dezimalzahlen ausgeben (21 answers)
Opened by Sade J at 2010-10-18 17:47

topeg
 2010-10-19 10:38
#142034 #142034
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich hoffe du hast dich informiert wie CGIs funktionieren?

Ich würde niemals versuchen die Eingaben selber zu Parsen, wenn ich nicht genau weiß wie bei CGI Die Werte Kodiert werden. Und warum den Aufwand? Es gibt ein fertiges und sehr gut getestetes Modul, dass das macht!

Ich habe keine Ahnung was du hier versuchst, ich vermute mal, du willst die Zahlen aus einem String extrahieren. Das geht sicher einfacher und übersichtlicher, wen du sagst was du da eigendlich für einen String zerlegen willst.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
$daten = <>;
@daten = split("",$daten);
splice(@daten,3,5);
shift@daten;
splice(@daten,1,1);
@zahl = @daten;
pop @zahl;
$zahl = join("",@zahl);
@potenz = splice(@daten,1,1);
$potenz = join("",@potenz);



Hier ein Code der funktionieren sollte:
Code (perl): (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl -w
# bitte immer "strict" und "warnings" nutzen
use strict;
use warnings;
# Programm ist ein CGI
use CGI;
# Fehler an den Browser
use CGI::Carp qw(fatalsToBrowser);

# CGI initialisieren
my $cgi=CGI->new();
# Header senden WICHTIG!
print $cgi->header();

# alle werte holen
my $zahl=$cgi->param('zahl') || 0;
my $potenz=$cgi->param('potenz') || 0;
# HTML einleiten
print "<html><body>";

# sind alles Zahlen?
# testen mit einem regulären Ausdruck
my $regexp=qr(^[+-]?\d+$);
if($zahl=~$regexp && $potenz=~$regexp)
{
  my $faktor=$zahl;
  if ($potenz == 0)
  {
    $zahl=1;
  }
  elsif ($potenz > 0)
  {
    for (my $i = 1;$i <= $potenz - 1;$i = $i + 1) {
      $zahl = $zahl * $faktor;
    }
  }
  else
  {
    $zahl = 1/$zahl;
    $faktor = 1/$faktor;

    for (my $j = -1;$j >= $potenz + 1;$j = $j - 1){
      $zahl = $zahl * $faktor;
    }
  }
  print "<h1>Die Lösung ergibt: $zahl</h1>\n";
}
else
{
  print "<h1>Zahl, Faktor und Potenz müssen Zahlen sein!</h1>\n";
}
print "</body></html>\n";

Der Aufruf im Browser wäre dann:
Code: (dl )
http://deine.url.sonstwo/cgi-bin/das_script.cgi?zahl=10&potenz=10



EDIT:
Das mit "Faktor" korrigiert.
Last edited: 2010-10-19 11:01:55 +0200 (CEST)

View full thread Dezimalzahlen ausgeben