Schrift
[thread]8913[/thread]

eine Frage zu objektorientertem Perl (Seite 6)



<< |< 1 ... 3 4 5 6 7 8 9 ... 15 >| >> 150 Einträge, 15 Seiten
GwenDragon
 2007-04-13 14:14
#75847 #75847
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
nach while muss eine bedingung kommen!
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

ASDS
 2007-04-13 14:24
#75848 #75848
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
    while (1) { 
############################
#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;
}
}
}
}

*motz* danke, aber bei einem else gehört keine Bedigung... und beim letzten schreit er mir wieder nach einem Synatxerror. Daweil.. is das ja genau das gleiche w.o nur mit rechtsweg eben.
Ronnie
 2007-04-13 14:34
#75849 #75849
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=ASDS,13.04.2007, 12:24]
*motz* danke, aber bei einem else gehört keine Bedigung... und beim letzten schreit er mir wieder nach einem Synatxerror. Daweil.. is das ja genau das gleiche w.o nur mit rechtsweg eben.[/quote]
naja, da kommt nach einem else noch ein else. Fehlt evtl. ein irgendwo ein if auf das sich das zweite else bezieht?
EDIT: kann es sein das du falsch geklammert hast:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
    else {
if(defined($$refvalue{'rechtsweg'})) {
$refvalue = $$refvalue{'rechtsweg'};
}
# klammer entfernt
else {
$$refvalue{'rechtsweg'} = knot($zahl);
last;
}
}
\n\n

<!--EDIT|Ronnie|1176461283-->
ASDS
 2007-04-13 15:42
#75850 #75850
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
*g* Perfekt, sodala...auf zwei weitere Fehler bin ich selbst drauf gekommen und jetzt besteht genau das problem, mit der Liste 2.
Ich muss jetzt mal Pause machen. Vielen Dank für eure prompte Hilfe, das erleichtert das lernen und erlernen schon sehr!
ASDS
 2007-04-16 10:50
#75851 #75851
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Gute Morgen ihr LIeben,

na hattet ihr ein schönes WE, meines war grauenhaft.
Zur Ablenkung heute morgen, hab ich mein .pm verändert. Habt ihr verbesserungsvorschläge, über de ich mich freuen kann?

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 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 = @_;
if (defined($self->{ref_wurzel})){
my $list = $self->{Liste2};
foreach my $neueZahl (@newList)
{ push(@$list, $neueZahl); };
$self->{ref_wurzel} = newtree ($list);

}
}

}

1;

ob es läuft weiß ich noch nicht habs noch nicht ausprobiert, mach ich aber gleich, wenn ich mein .pl fertig geschrieben hab
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?
renee
 2007-04-16 12:55
#75853 #75853
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da fehlen die geschweiften Klammern am Anfang der Subroutine und am Ende...
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-17 10:02
#75854 #75854
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
Wunderschönen Guten Morgen,

vielen DAnk renee, bin gestern aber eh noch drauf gekommen, hab nur vergessen zu posten.
Danke, trotzdem gibts jetzt noch immer fehler, ich muss mal guggenob ich wieder selbst drauf komm.
ASDS
 2007-04-17 12:46
#75855 #75855
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
sodala, wieder auf ein paar draufgekommen, abe rhier häng ich:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
           push @liste1,$eingabe;
               }
   print "Sie haben folgende Zahlen eingegeben: (@liste1) \n";

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

}}
\n\n

<!--EDIT|ASDS|1176800133-->
renee
 2007-04-17 12:55
#75856 #75856
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Woran hängst Du?

Wenn es der Code ist, den Du oben gepostet hast, dann gibt es kein package baum!
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/
<< |< 1 ... 3 4 5 6 7 8 9 ... 15 >| >> 150 Einträge, 15 Seiten



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