Eine Variable für eine entsprechende Antwort counten lassen
Sven
- perl
0 Klaus Mock0 Sven
folgendes:
Ich habe eine Umfrage programmiert und jetzt will ich eine Auswertung dazu schreiben. Ich habe schon die verschiedenen Antworten den Gruppen der Fragen zugewiesen. Mein Problem ist, dass die Variablen $A1, $A2, $A3, $A4 und $A5 sich nicht steigern.
for($i = 0;$i < $fragenanzahl-1;$i++)
{
for($b = 0;$b < $teilnehmer;$b++)
{
if(@{"gruppe".$i+1}[$b] == 1){$A1++;}
if(@{"gruppe".$i+1}[$b] == 2){$A2++;}
if(@{"gruppe".$i+1}[$b] == 3){$A3++;}
if(@{"gruppe".$i+1}[$b] == 4){$A4++;}
if(@{"gruppe".$i+1}[$b] == 5){$A5++;}
}
Ich habe es auch schon anstatt == mit =~ m/1/g versucht und @ durch $ ersetzt, aber das hat auch nicht geholfen.
Grüße,
Sven
Hallo,
Ich habe es auch schon anstatt == mit =~ m/1/g versucht und @ durch $ ersetzt, aber das hat auch nicht geholfen.
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'.
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.
Grüße,
Sven
Grüße
Klaus
[1] wobei 'A' aus zweierlei hinsicht unshcön ist. Erstens hat sichin der Perlgemeinde durchgesetzt keine Großbuchstaben für die Variablenbezeichner zu verwenden. Zweitens ist 'A' absolut nicht aussagekräftig genug. $voting_counts wäre imho eine bessere Wahl.
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
#----------------------------------------#
#----------------------------------------#
@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;
#---------------------------------------------------------#
#---------------------------------------------------------#
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);
#------------------------#
#------------------------#
for($i = 1;$i <= $fragenanzahl;$i++)
{
@{"gruppe".$i} = "";
shift(@{$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);
#--------------------------------------------------------------------------#
#--------------------------------------------------------------------------#
$a = 1;
for($i = 0;$i <= $antwortengesamt;$i++)
{
push(@{"gruppe".$a},@antworten[$i]);
$a++;
if($a > $fragenanzahl)
{
$a = 1;
}
}
#--------------------------------------------------#
#--------------------------------------------------#
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";
#-----------------------------------------------#
#-----------------------------------------------#
$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++;}
}
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
Hallo,
#!/usr/bin/perl
#!/usr/bin/perl -w
use strict; # danach alle Fehler beheben
@fragen = "";
shift(@fragen);
my @fragen = ();
@antworten = "";
shift(@antworten);
...
@answers = "";
shift(@answers);
$antwort1 = 0;
$antwort2 = 0;
$antwort3 = 0;
$antwort4 = 0;
$antwort5 = 0;
open(IN,"C:/wampp2/cgi-bin/fragen");
...
($frage,$answer) = split("[(]",$zeile);
($answer1,$answer2) = split(" ",$answer);
($answer2,$null) = split("[)]",$answer2);
my($frage,$answer) = split('[(]',$zeile,2);
push(@fragen,$frage);
...
$fragenanzahl++;
for($i = 1;$i <= $fragenanzahl;$i++)
{
@{"gruppe".$i} = "";
shift(@{$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++;
$a = 1;
for($i = 0;$i <= $antwortengesamt;$i++)
{
push(@{"gruppe".$a},@antworten[$i]);
$a++;
if($a > $fragenanzahl)
{
$a = 1;
}
}
Der Code ist ein bißchen lang, aber soweit funzt er!
Die Länge ist nicht das Problem;-)
Als ich den Teil bei mir eingebaut habe, kam ein Servererror!
Und was steht im Logfile?
Grüße
Klaus