Thread Vokabeltrainer (17 answers)
Opened by Futureflo at 2011-03-06 23:06

clms
 2011-03-07 13:06
#146281 #146281
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2011-03-07T11:42:59 Futureflo
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

... 

while ($durchgaenge<($anzahl_loesung+1)){
my$vokabel = $vokabeln_array[$zahl];
#$zahl=0+rand($anzahl_vokabeln);

if(exists ($schon_gefragt{my$vokabel}) )  {
next;
}
else {
...

Da legst Du in der IF-Bedingung eine neue lexikalische Variable $vokabel an, die Dein altes $vokabel verdeckt. Wenn Du keine neue Variabel deklarieren willst, musst Du das my weglassen.

Mein Vorschlag (ungetestet):
Code (perl): (dl )
1
2
3
4
5
6
7
8
my %schon_gefragt;
... 
while ($durchgaenge´< ($anzahl_loesung+1)) {
  my $vokabel = $vokabeln_array[$zahl];
  
  next if $schon_gefragt{$vokabel}++; 
  ...
}

Dabei wird in der IF-Bedingung die Vokabel für den nächsten Durchgang gleich als "schon_gefragt" markiert.

Ansonsten rate ich Dir, den Code sauber einzurücken und ein paar
Leerzeichen zu spendieren, z.B. zwischen my und den Variabeln
oder zwischen while/if und der Bedingung.
Das erhöht die Lesbarkeit des Codes enorm.

View full thread Vokabeltrainer