Schrift
[thread]8913[/thread]

eine Frage zu objektorientertem Perl (Seite 14)



<< |< 1 ... 11 12 13 14 15 >| >> 150 Einträge, 15 Seiten
renee
 2007-04-18 12:40
#75927 #75927
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wobei der Baum etwas falsch aufgebaut wird. Das müsste wohl eher so gehen:
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
sub newtree {
my $ref_liste1 = shift;
# Wurzel des Baums erzeugen
my $ref_wurzel = knot(shift @$ref_liste1);

for my $zzahl (@$ref_liste1){
my $knoten = $ref_wurzel;
while (1){
if($zzahl < $knoten->{'zahl'}){
if(defined($knoten->{'linksweg'})){
$knoten = $knoten->{'linksweg'};
}
else {
$knoten->{'linksweg'} = knot($zzahl);
$knoten = $knoten->{linksweg};
last; #Ende
}
}
#wenns Links nicht mehr weiter geht, geh rechts weiter
else {
if ($zzahl >= $knoten->{'zahl'}) {
if(defined($knoten->{'rechtsweg'})){
$knoten =$knoten->{'rechtsweg'};
}
else {
$knoten->{'rechtsweg'} = knot($zzahl);
$knoten = $knoten->{rechtsweg};
last;
}
}
}
}
}
return $ref_wurzel;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-04-18 12:41
#75928 #75928
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=ASDS,18.04.2007, 10:40]use Data::Dumper;
und ohne dem würds auch funktionieren? den hab ich ja nicht.[/quote]
Ja, das hatte ich nur für ne Testausgabe drin...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ASDS
 2007-04-18 12:48
#75929 #75929
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
[quote=renee,18.04.2007, 10:41][quote=ASDS,18.04.2007, 10:40]use Data::Dumper;
und ohne dem würds auch funktionieren? den hab ich ja nicht.[/quote]
Ja, das hatte ich nur für ne Testausgabe drin...[/quote]
so also mit dem Dumper gehts bei mir auch und das auch noch richtig.
woran kann der Fehler jetzt liegen?

dran:
Code: (dl )
sub Ausgabe { $ebaum ->ausgabe(@HinzufuegenListe);}
ASDS
 2007-04-18 12:55
#75930 #75930
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
selbst wenn ich erm den Spass weggeben gehts nicht
Code: (dl )
sub Ausgabe { $ebaum ->ausgabe();}
ASDS
 2007-04-18 13:38
#75931 #75931
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
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
#!/usr/bin/perl

use Baum1;
use strict;

my @liste1 = ();
my @liste2 = (4, 28, 9, 100, 12, 84, 10, 11);
my @HinzufuegenListe = ();
my @NeuListe = ();
my $ebaum = 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 Zahlen ein \n";
chomp($eingabe);
}
else {
push @liste1,$eingabe;
}
}
print "Sie haben folgende Zahlen eingegeben: (@liste1) \n";

$ebaum =Baum1->neu(@liste1);

}
sub Hinzufuegen {
my $zzahl = @_;
$ebaum ->append(my @NeueListe);
}

sub Ausgabe { $ebaum ->ausgabe();}

BaumNeu;
Hinzufuegen;
Ausgabe;


hoffnunslos... am besten ich renn gegen die Wand und fall um.
renee
 2007-04-18 13:43
#75932 #75932
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was macht denn append im Modul?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ASDS
 2007-04-18 13:45
#75933 #75933
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
[quote=renee,18.04.2007, 11:43]Was macht denn append im Modul?[/quote]
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
#!/usr/bin/perl

package Baum1;
use strict;
use warnings;
....#Hauptprogramm {sub neu, sub hinzufügen, sub ausgabe}
sub neu {
my $class = shift;
my @liste = @_;
my $ref_wurzel = newtree(\@liste);
my $self = { val => $ref_wurzel, l => \@liste};
bless $self, ref($class) || $class;
return $self;
}

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

if (defined($knoten->{'linksweg'}))
{
ausgabe($knoten->{'linksweg'});
}
print " $knoten->{'zahl'} ";


if(defined($knoten->{'rechtsweg'}))
{
ausgabe($knoten->{'rechtsweg'});
}
}
###############
#Hinzufügen weiterer Äste

sub append {
my $self = shift;
my @vals = @_;
if (defined($self->{val}))
{
my $liste = $self->{l};

for my $zzahl (@vals){
push(@$liste, $zzahl); }
$self->{val} = newtree ($liste);
}

}
1;

es soll später einmal die Liste 2 hinzufügen.
ASDS
 2007-04-18 14:28
#75934 #75934
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
http://de.selfhtml.org/perl/sprache/objekte.htm

die hier machen das OHNE sub methoden im .pl aber ich brauch doch meine sub, weil ich z.B meine for-schleife da drinnen hab, oder nicht?
ASDS
 2007-04-18 15:56
#75935 #75935
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Ich habs.. ich habs ... es geht..
ASDS
 2007-04-18 16:08
#75936 #75936
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Aber mal was anderes.. oder eh noch das gleiche..
mein append ist ja gemoggelt und wenn ich es so machen will, wie es Ronnie gemacht hat, weil das ja nicht blöd ist, sollte der Baum 10.000 Verzweigungen haben, dann wir das Programm elendes langsam werden... oder bei meinem Rechner sich aufhängen.

Mein Problem ist jetzt folgendes Ronnie hat hat es ja auf div. SubMethoden aufgeteilt...also das nach Rechts und nach Links weggehen... ich hab es nach wie vor bei meinem COde belassen

Ist es nun möglich das zu verbinden, wenn ja wie...wie komm ich wieder in meine while (1) schleife?
Code: (dl )
1
2
3
4
5
6
7
8
sub append {
  my $self = shift;
  my @vals = @_;
  while ( my $n = shift @vals ) {
      if ($n < $self->{val}) { $self->($n) }
      elsif ($n > $self->{val}) { $self->($n) }          
  }
}


So mal nicht, weil das ist nich aussagekäftig, bzw. er findet keine Code Referenz, lass ich mir auch reinreden.
Bekomm ich nen Tipp ???

val zeigt mir eh auf mein ref_wurzel aber wie komm ich ins Programm rein?

Code: (dl )
my $self = { 'val' => $ref_wurzel, l => \@liste};
\n\n

<!--EDIT|ASDS|1176898191-->
<< |< 1 ... 11 12 13 14 15 >| >> 150 Einträge, 15 Seiten



View all threads created 2007-04-10 15:14.