Schrift
[thread]7606[/thread]

wo ist hier der fehler?

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
COSTI
 2006-01-10 23:13
#61637 #61637
User since
2005-11-14
9 Artikel
BenutzerIn
[default_avatar]
ich hab hier ein programm geschrieben ich krieg aber die fehlermeldung
can't modify <HANDLE>in scalar assigment at line 2 near "$VCquanti
bin echt verzweifelt, wieso kann perl das nicht? wo liegt das prob.?

hier ist der Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
print "com quantas moedas vamos jogar?";
<STDIN> = $VCquanti, $EUquanti;
while(($EUquanti, $VCquanti) /= 0){
print "quantas moedas vc tem na mao q vale?";
<STDIN> = $VC;
if ($VC /= 0..$VCquanti){print "o que?, tenque ser um valor de 0 a $VCquanti";
die;}
$EU = int(rand(3));
$EUgues = int(rand($EU + $VC)+$EU);
print "enatao eu acho q no total sao $EUgues";
if ($EUgues = $EU + $VC){$EUquanti--;
print "ganhei agora so tenho $EUquanti moedas"}
else {print "erei sua vez, quantas moedas temos no total?";
<STDIN> = $VCgues;
if ($VCgues = $EU + $VC){$VCquanti--;
print "ahh nao vc ganhou, agora so tem $VCquanti moedas"}
else {print "ningem acertou nesse turno, vamos pro prosimo"}
}
}
print "haha ganhei o jogo e vc ainda tem $VCquanti moedas na mao" if $EUquanti = 0;
print "an nao vc ganhou o jogo eu morri com $EUquanti moedas na mao" if $VCquanti = 0;
\n\n

<!--EDIT|COSTI|1136931009-->
murphy
 2006-01-10 23:51
#61638 #61638
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ohne den Code näher analysiert zu haben -- denn dafür ist mir die Formatierung zu grauenhaft und meine Sprachkenntnisse sind nicht ausreichend -- würde ich darauf tippen, dass du einfach einige Zuweisungen falsch herum geschrieben hast. Statt
Code: (dl )
<STDIN> =  $VC;
sollte es vermutlich
Code: (dl )
$VC = <STDIN>;
heißen und analog auch an anderen Stellen.
When C++ is your hammer, every problem looks like your thumb.
betterworld
 2006-01-10 23:55
#61639 #61639
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Sag doch mal bitte, was genau die Zeile
Code: (dl )
<STDIN> = $VCquanti, $EUquanti;
tun sollte. Das ist wirklich keine gueltige Syntax und ich kann leider auch nicht gut raten, was Du machen moechtest. Mit <STDIN> liest man normalerweise etwas von der Standardeingabe ein. Um das dann in der Variable $blah zu speichern, schreibt man $blah = <STDIN> (also das Gleichheitszeichen kommt links von <STDIN>).

Und jetzt ganz wichtig: Wenn Du hier im Forum Code postest, schreibe davor bitte [code] und danach [/code]. Wenn Du dies nicht tust, sieht das Ergebnis ueberhaupt nicht gut zu lesen aus. Bitte editiere jetzt Deinen Beitrag und fuege das noch nachtraeglich hinzu.

Ausserdem solltest Du http://wiki.perl-community.de/bin/view/Wissensbasis/UseStrict ganz durchlesen.\n\n

<!--EDIT|betterworld|1136934967-->
murphy
 2006-01-10 23:58
#61640 #61640
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=COSTI,10.01.2006, 21:13][...]
can't modify <HANDLE>in scalar assigment at line 2 near "$VCquanti
bin echt verzweifelt, wieso kann perl das nicht?
[...][/quote]
Vielleicht, weil es totaler Unfug wäre?

Überlege doch einmal: Warum sollte es möglich sein, einem Befehl zum Lesen aus einer Datei einen Wert zuzuweisen? Und was sollte diese Zuweisung dann tun?

Diese Anweisung hat einen ähnlichen Sinngehalt wie
Code: (dl )
4 + 2 = 42;
, was sich ebenfalls im klassischen Paradigma kontemporärer Programmiersprachen nicht sinnvoll interpretieren lässt.
When C++ is your hammer, every problem looks like your thumb.
Dubu
 2006-01-11 00:05
#61641 #61641
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Also, die Textsprache koennte ja Portugiesisch sein - aber was ist hier die Programmiersprache?? Mit Perl hat das nun wirklich nur vage Aehnlichkeit.

Bei einer Konstruktion wie while(($EUquanti, $VCquanti) /= 0) kann ich mir zwar ungefaehr vorstellen, was sie heissen soll, ich erkenne aber nicht die Sprache. Ruby vielleicht? (Sorry, wenn ich jetzt einen Ruby-Fan veraergere.) Oder ist das schon Perl 6, und ich sollte nochmal die Apokalypsen und Exegesen lesen (und mir flugs ein Pugs installieren)?
COSTI
 2006-01-11 00:29
#61642 #61642
User since
2005-11-14
9 Artikel
BenutzerIn
[default_avatar]
OK, ich sehs ein, mein programmierstill ist nicht grad der sauberste :laugh:

ich will mit
Code: (dl )
<STDIN> = $VCquanti, $EUquanti;

,das die benutzereingabe als string in den variablen $VCquanti und $EUquant gespeichert wird ($VCquanti, $EUquanti = <STDIN> tuts auch nicht)

ps.@Dubu:jep, portogiesisch, bin brasilianer\n\n

<!--EDIT|COSTI|1136932186-->
murphy
 2006-01-11 00:39
#61643 #61643
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Der Stil ist hier gar nicht das Problem, sondern dass du Konstruktionen schreibst, die einfach sinnlos oder kein Perl sind.

Versuche statt
Code: (dl )
<STDIN> = $VCquanti, $EUquanti;
entweder
Code: (dl )
my ($VCquanti, $EUquanti) = (<STDIN>, <STDIN>);
oder
Code: (dl )
my ($VCquanti, $EUquanti) = split /\s+/, <STDIN>;
-- bei ersterer Variante wird zweimal eine Zeile eingelesen und jeweils in einer Variablen gespeichert, bei zweiterer wird die Eingabe einer Zeile an Leerzeichen getrennt, dann werden die Teile den beiden Variablen zugewiesen.

Was du mit
Code: (dl )
($EUquanti, $VCquanti) /= 0
meinst ist mir schleierhaft, ebenso, was
Code: (dl )
$VC /= 0..$VCquanti
bedeuten soll.

Außerdem solltest du dringend dein Skript mit
Code: (dl )
1
2
use strict;
use warnings;
versehen um Fehler schneller zu finden.

edit: Da ich leider des Portugiesischen nicht mächtig bin, kann ich deine Programmierintention auch nicht aus den Texten erschließen :( Ich sollte dringend noch ein paar mehr natürliche Sprachen lernen, nicht nur formale ;)\n\n

<!--EDIT|murphy|1136932916-->
When C++ is your hammer, every problem looks like your thumb.
COSTI
 2006-01-11 02:36
#61644 #61644
User since
2005-11-14
9 Artikel
BenutzerIn
[default_avatar]
ahh jetzt executiert er den script:)
aber macht nicht, was ich will:(
und wenn ich use strict; und use warnings; benutze, krieg ich soooo viele fehler, das ich das programm lieber neu schreibe

Es ist ein spiel, wenn man zb mit 3 muenzen spielt tut man 0 bis 3 muenzenin der rechten hand und zeigt sie vor. Dann mus man die gesamtzahl der muenzen raten, hoert sich banal an ist aber ziemlich kompliziert und verzwickt
morph
 2006-01-11 03:17
#61645 #61645
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich versiche mich mal an der Geschichte:
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
#!/usr/bin/perl

use strict;
use warnings;


print "com quantas moedas vamos jogar?";

my ($VCquanti, $EUquanti) = <STDIN>;


# Ich kann mir nicht vorstellen, dass "$var /= 0" zu irgendeinem Ergebnis führt.
# Das heißt nämlich $var = $var / 0. Jede Programmiersprache wird einen Fehler
# ausspucken, wenn man durch Null teilen will. Früher sind Programme deswegen
# sogar abgestürzt.;-)

while( ($EUquanti, $VCquanti) != 0 ) {

print "quantas moedas vc tem na mao q vale?";

my $VC = <STDIN>;

if($VC /= 1..$VCquanti) {

print "o que?, tenque ser um valor de 0 a $VCquanti";
exit(1);
}
my $EU = int(rand(3));
my $EUgues = int(rand($EU + $VC) + $EU);

print "enatao eu acho q no total sao $EUgues";

if($EUgues == $EU + $VC) {

$EUquanti--;

print "ganhei agora so tenho $EUquanti moedas";

} else {

print "erei sua vez, quantas moedas temos no total?";

my $VCgues = <STDIN>;

if($VCgues == $EU + $VC) {

$VCquanti--;

print "ahh nao vc ganhou, agora so tem $VCquanti moedas";

} else {

print "ningem acertou nesse turno, vamos pro prosimo";
}
}
}

print "haha ganhei o jogo e vc ainda tem $VCquanti moedas na mao" if($EUquanti == 0);
print "an nao vc ganhou o jogo eu morri com $EUquanti moedas na mao" if($VCquanti == 0);

exit(0);


So ungefähr muss ein Programm aussehen. Dabei habe ich jetzt gar nicht auf Sinnigkeiten geschaut. Kann also gut sein, dass das Teil noch immer 'ne Masse Fehler enthält. Ein paar Sachen möchte ich aber dennoch los werden.

Costi, Dir muss klar doch sein, dass es ein gewaltiger Schuss nach hinten wird, wenn Du einfach so drauf los programmierst. Dazu gehört eben auch eine Menge "LeseArbeit". Nun ja, mir selber schmeckt das auch nicht immer, aber es muss eben sein.

Und noch etwas:
Sei mir nicht bös' wenn ich das so sage. Aber Du kannst doch nicht wirklich erwarten, dass wir DEINE Arbeit machen. Wir haben selber genug. Wenn Du Dich mal ein Bisschen in die Programmierwelt eingefunden hast, wirst Du unseren Standpunkt verstehen.

Als dann, hier noch ein paar Webseiten, die ich Anfängern gerne mit auf den Weg gebe. Und nebenbei, das ist auch Teil DEINER Arbeit. Denn Google zu benutzen, sollte heute ja nicht mehr wirklich Probleme darastellen? Mein kleiner Cousin kann das, und der ist 8 Jahre alt.

http://www.perlunity.de/cgi-bin....=8&pn=0

So und nun wünsche ich Dir viel Glück für Deinen weiteren Werdegang als Programmierer und hoffe, dass wir in Zukunft von solchen Sinnlosigkeiten verschont bleiben. ;)

-uw\n\n

<!--EDIT|TbHoCne|1136942462-->
renee
 2006-01-11 04:18
#61646 #61646
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Yippieh, ich darf hier mal pq "spielen" *freu*...

Lies bitte mal Wiki:perldoc perlintro

(Ist dank pq auf deutsch!)
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 >| >> 18 Einträge, 2 Seiten



View all threads created 2006-01-10 23:13.