Thread eine Frage zu objektorientertem Perl (149 answers)
Opened by ASDS at 2007-04-10 15:14

ASDS
 2007-04-16 12:29
#75852 #75852
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
So, also ich bin mal fertig so wie ich mir das vorgestellt hab, allerdings spuckt die cmd jede Menge fehler aus.
Hier mal das ausführende Programm:
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
#!/usr/bin/perl

use baum;
use strict;

my @liste1 = ();
my @liste2 = (4, 28, 9, 100, 12, 84, 10, 11);
my @HinzufuegenListe = ();
my @ NeuListe = ();
my @ erstellebaum = undef;

############################
#Eingabe der ersten 10 Zahlen / Liste 1
############################

sub BaumNeu
for(0..9){
print "Bitte geben Sie eine Zahlen ein: ";
my $eingabe = <STDIN>;
if ( $eingabe == /^\D*$/[){

print "Ungültige Eingabe, bitte geben sie nur Za &nbs
p; hlen ein \n"
chomp($eingabe);
push @liste1,$eingabe;
}
print "Sie haben folgende Zahlen eingegeben: (@liste1) \n";

$erstellebaum =baum->Neu(@NeuListe);


sub Hinzufuegen {
my $zzahl = @_; }
$erstellebaum =baum->hinzufuegen(@NeueListe);


sub Ausgabe {}
$erstellebaum = baum->ausgabe (@HinzufuegenListe);


und das Modul:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!c:/perl

#package binärerbaum;
use strict;
use warnings;



sub knot { return ( { 'zahl' => shift,
'linksweg' => undef,
'rechtsweg' => undef } );
}

sub newtree {
######################
# Erstellen des Trees

my $ref_liste1 = shift;
my $zahl = undef;

my $ref_wurzel = undef;

for my $zzahl (@$ref_liste1){
my $refvalue = $ref_wurzel;

if ($zahl)
{ while (1) {
############################
#Beginn des Vergleichs

if($zzahl < $$refvalue{'zahl'}) {
if(defined($$refvalue{'linksweg'}))
{
$refvalue = $$refvalue{'linksweg'};
}
else {
$$refvalue{'linksweg'} = knot($zzahl);
$zahl = $ref_wurzel
last; #Ende
}
}
#######
#wenns Links nicht mehr weiter geht, geh rechts weiter

else { if ($zzahl > $$$refvlue {'zahl'}) {

if(defined($$refvalue{'rechtsweg'}))
{$refvalue = $$refvalue{'rechtsweg'};

}
else {
$$refvalue{'rechtsweg'} = knot($zzahl);
last;
}
}
}
}


return($ref_wurzel);
}



########
#Hauptprogramm
########

###################
#Ausgabe des Trees
####

sub ausgabe {
my $self = shift;
my $refvalue = shift;

if(defined($self->{'ref_wurzel'}->{'linksweg'})) {
ausgabe($$refvalue{'linksweg'})
}

print "$self->{'ref_wurzel'}->{'zahl'}\n";

if(defined($self->{'ref_wurzel'}->{'rechtsweg'})) {
ausgabe($$refvalue{'rechtsweg'})
}
}
ausgabe($ref_wurzel);


sub Neu {
my $class = shift;
my $self = {};
bless( $self, $class );

my @liste = @_;
$self->{'ref_wurzel'} = newtree (\@liste);
return $self;
}
###############
#Hinzufügen weiterer Äste
###############
sub hinzufuegen {
my $self = shift;
my @newList = @_;
if (defined($self->{ref_wurzel})){
my $list = $self->{ref_liste1};
foreach my $zzahl (@newList)
{ push(@$list, $zzahl); };
$self->{ref_wurzel} = newtree ($list);

}
}

}

1;


hm, okay einige der Fehler hab ich jetzt gefunden und ausgebessert, jetzt schreib er mir aber:
Illegal declaration of subroutin main::BaumNeu at MainBaum.pl line 17.

wo isn da der Fehler, ich dachte mir die Deklaration passt so?

View full thread eine Frage zu objektorientertem Perl