Schrift
[thread]8693[/thread]

Anfänger Frage Taschenrechner: Erstellung einen Taschenrechners Anfänge (Seite 2)



<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten
renee
 2007-01-29 14:17
#73772 #73772
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=ASDS,29.01.2007, 13:02]*dummbin* meinst du mit geschachtelten Klammern folgendes:
1* (2+ ( 3*4) - 4) / 3
oder etwas anderes.
[...][/quote]
Ja, genau das meinte ich...
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-01-29 14:32
#73773 #73773
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
ja okay...
aber renee ( ich hoff ich hab deinen Namen jetzt nicht falsch geschriebe)

hast du jetzt Tipps für mich

@all: mir helfen die funktionen nichts... ich muss mehr oder weniger die eval funktion selbst nachtippseln.. und deshalb sagt mal String oder Array.. und wie mach ih das dann mit eben den Klammern?
lichtkind
 2007-01-29 14:51
#73774 #73774
User since
2004-03-22
5708 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ohne eval wird es zwar etwas mehr code aber vom prinzp bleibt das gleiche wie im vorgestellten code
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
ASDS
 2007-01-29 15:02
#73775 #73775
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
[quote=lichtkind,29.01.2007, 13:51]ohne eval wird es zwar etwas mehr code aber vom prinzp bleibt das gleiche wie im vorgestellten code[/quote]
wo? Code häää? ich seh keinen Code.
und falls du meinen meinst....
heißt es jetzt, dass ich strings verweden soll?

gut... wenn es das heißt, hab ich ja noch das problem, wie ich erm sag... so und DA steht jetzt eine Klammer... lies zuerst den Klammeraudruck, berechne ihn, merk ihn dir und rechne dann weiter...

ihr versteh nicht was ich mein oder.. toll und ich kanns nicht erklären *schnief* hmmm
sorry, bei solchen Dingen kann ich mich selten klar audrücken.
renee
 2007-01-29 15:22
#73776 #73776
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [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
#!/usr/bin/perl

use strict;
use warnings;

my $formula = '((1 + 2) * 2) + (2 * 3)';

my %hash = ('*' => \&mal,
'-' => \&minus,
'+' => \&plus,
'/' => \&div,);


while($formula =~ s/\(([^\(]*?)\)/calc($1)/eg){
}

print calc($formula);

sub calc{
my ($part) = @_;
my ($op1,$op,$op2) = $part =~ m!(\d+)\s*([\*\+\/\-])\s*(\d+)!;
return 0 unless exists($hash{$op});
return $hash{$op}->($op1,$op2);
}

sub mal{
my ($op1,$op2) = @_;
return $op1 * $op2;
}

sub minus{
my ($op1,$op2) = @_;
return $op1 - $op2;
}

sub plus{
my ($op1,$op2) = @_;
return $op1 + $op2;
}

sub div{
my ($op1,$op2) = @_;
return $op1 / $op2;
}
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-01-29 15:37
#73777 #73777
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
[quote=renee,29.01.2007, 14:22]
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
#!/usr/bin/perl

use strict;
use warnings;

my $formula = '((1 + 2) * 2) + (2 * 3)';

my %hash = ('*' => \&mal,
           '-' => \&minus,
        '+' => \&plus,
        '/' => \&div,);


while($formula =~ s/\(([^\(]*?)\)/calc($1)/eg){
}

print calc($formula);

sub calc{
 my ($part) = @_;
 my ($op1,$op,$op2) = $part =~ m!(\d+)\s*([\*\+\/\-])\s*(\d+)!;
 return 0 unless exists($hash{$op});
 return $hash{$op}->($op1,$op2);
}

sub mal{
   my ($op1,$op2) = @_;
   return $op1 * $op2;
}

sub minus{
   my ($op1,$op2) = @_;
   return $op1 - $op2;
}

sub plus{
   my ($op1,$op2) = @_;
   return $op1 + $op2;
}

sub div{
   my ($op1,$op2) = @_;
   return $op1 / $op2;
}
[/quote]
wwwwwwwwwaaaah wie cool danke, und das funzt sogar...sorry.. okay, werd mal versuchen den zu überreisen.
eine frage hätte ich schon mal
Code: (dl )
my ($part) = @_;

bedeutet?
renee
 2007-01-29 15:52
#73778 #73778
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hier eine verbesserte Version (die erste kann nichts mit Termen wie 1 + 2 + 3 anfangen):
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
#!/usr/bin/perl

use strict;
use warnings;

my $formula = '((1 + 2) * (2 -1)) + (2 * 3) + 5';

my %hash = ('*' => \&mal,
'-' => \&minus,
'+' => \&plus,
'/' => \&div,);


while($formula =~ s/\(([^\(]*?)\)/calc($1)/eg){
}

print calc($formula);

sub calc{
my ($part) = @_;
while($part =~ s!(\d+)\s*([\*\/])\s*(\d+)!subcalc($1,$2,$3)!eg){};
while($part =~ s!(\d+)\s*([\+\-])\s*(\d+)!subcalc($1,$2,$3)!eg){};
return $part;
}

sub subcalc{
my ($op1,$op,$op2) = @_;
return 0 unless exists($hash{$op});
return $hash{$op}->($op1,$op2);
}

sub mal{
my ($op1,$op2) = @_;
return $op1 * $op2;
}

sub minus{
my ($op1,$op2) = @_;
return $op1 - $op2;
}

sub plus{
my ($op1,$op2) = @_;
return $op1 + $op2;
}

sub div{
my ($op1,$op2) = @_;
return $op1 / $op2;
}


Mit my ($part) = @_ speichere ich die Übergabeparameter (in dem Fall $1 aus dem Regulären Ausdruck) in einer Variablen.

Für Dich dürfte das hier ganz interessant sein:
perlintro
perlsub
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/
betterworld
 2007-01-29 16:04
#73779 #73779
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=ASDS,29.01.2007, 11:57]Soll ihn das als Stringt ode Array einlesen?[/quote]
Wenn Du das hier mit Einlesen als Array meinst:
Code: (dl )
my @array = <STDIN>;

Das macht ja nur dann Sinn, wenn man mehrere Zeilen einliest, weil in jedem Element des Arrays dann eine Zeile steht.
ASDS
 2007-01-29 16:22
#73780 #73780
User since
2007-01-29
115 Artikel
BenutzerIn
[default_avatar]
hm sag mal: #print ("%.2f\n", calc($ergebnis));
geht nicht, oder?
ich mein.. nein ich weiß, dass es nicht funkt, aber warum nicht?
Ich muss ja auch noch kommazahlen ausgeben... und bei 3*4 z.B kommt 12 raus und nicht 12,00 ...

die angegeben Links guck ich mir gleich mal an. DANKE , war sehr sehr hilfreif.. der hash tipp... ich hab mich immer gscheut diese zu verwenden, weil ich mir gedacht hab das is voll kompliziert und so... aber is eigentlich voll cool, wenn das print mit float noch funzen würd...
ich guck mal im Inet nach ob ich dazu noch was find.
renee
 2007-01-29 16:38
#73781 #73781
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das muss dann print sprintf("%.2f\n",calc($ergebnis)) heißen...

Warum es nicht funktioniert? Weil die print-Funktion anders programmiert ist. Dafür gibt's eben printf bzw. sprintf...
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 2 3 4 5 >| >> 45 Einträge, 5 Seiten



View all threads created 2007-01-29 12:57.