Sven: Eine Variable für eine entsprechende Antwort counten lassen

Beitrag lesen

Es wäre interessant zu sehen, wie Du die Daten im Vorfeld ausgewertet hast. Vielleicht könntest Du die Statistiken gleich beim Einlesen mit befüllen. Ich vermute, dass die Daten gar nicht in der Form vorliegen, wie es dieses Code-Fragment 'annimmt'.

#!/usr/bin/perl

#----------------------------------------#

Vorbestimmung der Variablen und Arrays

#----------------------------------------#

@fragen = "";
shift(@fragen);
@antworten = "";
shift(@antworten);
$frage = "";
$aktiviert = 1;
$fragenanzahl = 0;
$teilnehmer = 0;
$antwortengesamt = 0;
@answers = "";
shift(@answers);
$antwort1 = 0;
$antwort2 = 0;
$antwort3 = 0;
$antwort4 = 0;
$antwort5 = 0;

#---------------------------------------------------------#

Speichern der Fragen und Antworten aus fragen in Arrays

#---------------------------------------------------------#

open(IN,"C:/wampp2/cgi-bin/fragen");
while($zeile = <IN>)
{
 chomp($zeile);
 ($frage,$answer) = split("[(]",$zeile);
 ($answer1,$answer2) = split(" ",$answer);
 ($answer2,$null) = split("[)]",$answer2);
 push(@fragen,$frage);
 push(@answers,$answer1);
 push(@answers,$answer2);
 $fragenanzahl++;
}
close(IN);

#------------------------#

Leersetzen der Gruppen

#------------------------#

for($i = 1;$i <= $fragenanzahl;$i++)
{
 @{"gruppe".$i} = "";
 shift(@{$array});
}

#---------------------------------------------------#

Zählen und Speichern der Antworten in einem Array

#---------------------------------------------------#

$a = 0;
opendir(DIR,"C:/wampp2/cgi-bin/daten");
 while($datei = readdir(DIR))
{
 $a++;
 if($a >= 3)
{
  $teilnehmer++;
  open(IN,"C:/wampp2/cgi-bin/daten/$datei");
  while($zeile = <IN>)
{
  chomp($zeile);
  ($fragenzahl,$antwort) = split(" ",$zeile);
  push(@antworten,$antwort);
  $antwortengesamt++;
}
}
}
close(IN);
closedir(DIR);

#--------------------------------------------------------------------------#

Speichern der Antworten in verschiedenen Gruppen (pro Frage eine Gruppe)

#--------------------------------------------------------------------------#

$a = 1;
for($i = 0;$i <= $antwortengesamt;$i++)
{
  push(@{"gruppe".$a},@antworten[$i]);
  $a++;
  if($a > $fragenanzahl)
{
   $a = 1;
}
}

#--------------------------------------------------#

Ausgabe des Anfangs (Teilnehmer und Überschrift)

#--------------------------------------------------#

print "content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<style type="text/css">\n";
print "body, table\n{\ncolor:"blue";\nfont-size:10pt;\nfont-family:Comic Sans MS;\n}\n";
print "h1\n{\ncolor:"red";\nfont-size:18pt;\nfont-family:Comic Sans MS;\n}\n";
print "i\n{\ncolor:"red";\nfont-size:12pt;\nfont-family:Comic Sans MS;\n}\n";
print "b\n{\ncolor:"green";\nfont-size:14pt;\nfont-family:Comic Sans MS;\n}\n";
print "</style>\n</head>\n<body>\n";
print "<h1>Auswertung</h1>\n";
print "<b>Anzahl der Teilnehmer: $teilnehmer</b>\n<br><br>\n";

#-----------------------------------------------#

Ausgabe der Fragen, Antworten und Statistiken

#-----------------------------------------------#

$a = 0;
for($i = 0;$i < $fragenanzahl-1;$i++)
{
 for($b = 0;$b < $teilnehmer;$b++)
{
  if(@{"gruppe".$i+1}[$b] == 1){$antwort1++;}
  if(@{"gruppe".$i+1}[$b] == 2){$antwort2++;}
  if(@{"gruppe".$i+1}[$b] == 3){$antwort3++;} #Hier liegt mein Problem!
  if(@{"gruppe".$i+1}[$b] == 4){$antwort4++;}
  if(@{"gruppe".$i+1}[$b] == 5){$antwort5++;}
}

@prozente = $A1/A2+A1/A3+A1/A4+A1/A5;

print "<i>@fragen[$i]\n</i>\n";
 print "<table border=0>\n<tr>\n<td width=120>\n";
 print "sehr @answers[$a]\n</td>\n<td>\n$antwort1</td></tr>\n<tr>\n<td>\n";
 print "@answers[$a]\n</td>\n<td>\n$antwort2</td>\n</tr>\n<tr>\n<td>\n";
 print "mittelmäßig\n</td>\n<td>\n$antwort3</td>\n</tr>\n<tr>\n<td>\n";
 $a++;
 print "@answers[$a]\n</td>\n<td>\n$antwort4</td>\n</tr>\n<tr>\n<td>\n";
 print "sehr @answers[$a]\n</td>\n<td>\n$antwort5</td>\n</tr>\n</table>";
 $a++;
 $b++;
$antwort1 = 0;
$antwort2 = 0;
$antwort3 = 0;
$antwort4 = 0;
$antwort5 = 0;
}
print @gruppe1; #nur um zu sehen, dass das mit den Gruppen funzt!

Der Code ist ein bißchen lang, aber soweit funzt er!

BTW: imho machst Du es schon hier etwas kompliziert.

for($i = 1; $i<$fragenanzahl;$i++) {
  for($b = 0; $b < $teilnehmer; $b++) {
    $A[$gruppe[$i][$b]]++;
    }
  }

So könnte das aussehen, wenn Du $A1 bis $A5 durch ein Array ersetzt[1] und auch @gruppe.. als zweidimensionales Array anlegst.
Das alles hat jetzt nicht wirklich etwas mit Deinem Problem zu tun. Ihc wollte es nur gesagt haben.

Als ich den Teil bei mir eingebaut habe, kam ein Servererror!

Grüße Sven