| … | |
… | |
| 393 | |
393 | |
| 394 | CGI::p('The percentage of students with no more than the indicated number of total attempts'), |
394 | CGI::p('The percentage of students with no more than the indicated number of total attempts'), |
| 395 | CGI::start_table({-border=>1}), |
395 | CGI::start_table({-border=>1}), |
| 396 | CGI::Tr( |
396 | CGI::Tr( |
| 397 | CGI::td( ['% students', |
397 | CGI::td( ['% students', |
| 398 | (map { " ".(100-$_) } @brackets) , |
398 | (map { " ".(100-$_) } @brackets, 0) , |
| 399 | |
399 | |
| 400 | ] |
400 | ] |
| 401 | ) |
401 | ) |
| 402 | ); |
402 | ); |
| 403 | |
403 | |
| 404 | |
404 | |
| 405 | foreach my $probID (@problemIDs) { |
405 | foreach my $probID (@problemIDs) { |
| 406 | print CGI::Tr( |
406 | print CGI::Tr( |
| 407 | CGI::td( [ |
407 | CGI::td( [ |
| 408 | "Prob $probID", |
408 | "Prob $probID", |
| 409 | (map { '≤ '.sprintf("%0.0f",$attempts_percentiles_for_problem{$probID}->{$_}) } @brackets), |
409 | (map { '≤ '.sprintf("%0.0f",$attempts_percentiles_for_problem{$probID}->{$_}) } @brackets, 0), |
| 410 | |
410 | |
| 411 | ] |
411 | ] |
| 412 | ) |
412 | ) |
| 413 | ); |
413 | ); |
| 414 | |
414 | |