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

ASDS
 2007-04-12 17:04
#75836 #75836
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
So ich komm net drauf... was sagst ihr.. muss ich den Code nochmal neu machen , oder wie bring das PRogramm dazu, die Liste 2 nach Anforderung an die Liste1 und somit dem Baum anzuhängen.

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
#!c:/perl
use strict;
use warnings;


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


sub knot { return ( { 'zahl' => $_[0],
'linksweg' => undef,
'rechtsweg' => undef } );
}

sub newtree {
############################
#Eingabe der ersten 10 Zahlen
############################
for(0..9){
print "Bitte geben Sie eine Zahlen ein: ";
my $eingabe = <STDIN>;
chomp($eingabe);
push @liste1,$eingabe;
}
print "Sie haben folgende Zahlen eingegeben: (@liste1) \n";

######################
# Erstellen des Trees
######################

my $ref_liste1 = shift;
my $zahl = shift(@$ref_liste1); #Wurzel wird mit erster Zahl der Liste1 erstellt

my $ref_wurzel = knot($zahl);

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

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

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



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

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

sub ausgabe {

my $refvalue = shift;
my $self = 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 new {
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 = my @liste2;


ich denk, dass hier der springende Punkt liegt:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $ref_liste1 = shift;
my $zahl = shift(@$ref_liste1); #Wurzel wird mit erster Zahl der Liste1 erstellt

my $ref_wurzel = knot($zahl);

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

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

if($zahl < $$refvalue{'zahl'}) {
if(defined($$refvalue{'linksweg'}))
{
$refvalue = $$refvalue{'linksweg'};
zahl und refvalue auf undef setzen oder () ?

View full thread eine Frage zu objektorientertem Perl