Exemplo n.º 1
0
std::string Student::grade(bool flag_b4_moss, Student *lowest_d) const {

  if (section == 0) return "";
  if (section == 11) return "";  // fake section
  if (section == 12) return "";  // fake section

  if (manual_grade != "") return manual_grade;
  
  float over = overall();
  if (flag_b4_moss) {
    over = overall_b4_moss();
  }


  // some criteria that might indicate automatica failure of course
  // (instructor can override with manual grade)
  int failed_lab   = (GradeablePercent(GRADEABLE_ENUM::LAB)       < 1.01 * lowest_d->GradeablePercent(GRADEABLE_ENUM::LAB)       ) ? true : false;
  int failed_hw    = (GradeablePercent(GRADEABLE_ENUM::HOMEWORK)  < 0.95 * lowest_d->GradeablePercent(GRADEABLE_ENUM::HOMEWORK)  ) ? true : false;
  int failed_testA = (GradeablePercent(GRADEABLE_ENUM::TEST)      < 0.90 * lowest_d->GradeablePercent(GRADEABLE_ENUM::TEST)      ) ? true : false;
  int failed_testB = (GradeablePercent(GRADEABLE_ENUM::EXAM)      < 0.90 * lowest_d->GradeablePercent(GRADEABLE_ENUM::EXAM)      ) ? true : false;
  int failed_testC = (GradeablePercent(GRADEABLE_ENUM::TEST) + GradeablePercent(GRADEABLE_ENUM::EXAM) < 
                      0.90 * lowest_d->GradeablePercent(GRADEABLE_ENUM::TEST) + lowest_d->GradeablePercent(GRADEABLE_ENUM::EXAM) ) ? true : false;
  if (failed_lab || failed_hw ||
      ( failed_testA +
        failed_testB +
        failed_testC ) > 1) {
    return "F";
  }
  

  // otherwise apply the cutoffs
  if (over >= CUTOFFS["A"])  return "A";
  if (over >= CUTOFFS["A-"]) return "A-";
  if (over >= CUTOFFS["B+"]) return "B+";
  if (over >= CUTOFFS["B"])  return "B";
  if (over >= CUTOFFS["B-"]) return "B-";
  if (over >= CUTOFFS["C+"]) return "C+";
  if (over >= CUTOFFS["C"])  return "C";
  if (over >= CUTOFFS["C-"]) return "C-";
  if (over >= CUTOFFS["D+"]) return "D+";
  if (over >= CUTOFFS["D"])  return "D";
  else return "F";

  return "?";
}
Exemplo n.º 2
0
void SKPBench::onDraw(const int loops, SkCanvas* canvas) {
    SkIRect bounds;
    SkAssertResult(canvas->getClipDeviceBounds(&bounds));

    SkAutoCanvasRestore overall(canvas, true/*save now*/);
    canvas->scale(fScale, fScale);

    for (int i = 0; i < loops; i++) {
        for (int y = bounds.fTop; y < bounds.fBottom; y += FLAGS_benchTile) {
            for (int x = bounds.fLeft; x < bounds.fRight; x += FLAGS_benchTile) {
                SkAutoCanvasRestore perTile(canvas, true/*save now*/);
                canvas->clipRect(SkRect::Make(
                            SkIRect::MakeXYWH(x, y, FLAGS_benchTile, FLAGS_benchTile)));
                fPic->playback(canvas);
            }
        }
        canvas->flush();
    }
}
Exemplo n.º 3
0
bool RRSchedule::teams_feasible(int home, int away)
/* Check to ensure:
 1.  Not playing themself
 2.  Not playing elsewhere
 3.  Not played too much already that night
 4.  Not played twice more than another team overall
 5.  Not played too many times in that timeslot // Deprecated due to sorting
 6.  Will not force a wait of <x> hours // Deprecated due to sorting
 */
{
    return  (
             themself(home, away)
             and elsewhere(home,away)
             and that_night(home,away)
             and overall(home,away)
             //and balanced_time(home,away)
             //and check_wait_time(home,away)
             );
}
Exemplo n.º 4
0
void SKPBench::onDraw(const int loops, SkCanvas* canvas) {
    if (fUseMultiPictureDraw) {
        for (int i = 0; i < loops; i++) {
            SkMultiPictureDraw mpd;

            for (int i = 0; i < fTileRects.count(); ++i) {
                SkMatrix trans;
                trans.setTranslate(-fTileRects[i].fLeft/fScale,
                                   -fTileRects[i].fTop/fScale);
                mpd.add(fSurfaces[i]->getCanvas(), fPic, &trans);
            }

            mpd.draw();

            for (int i = 0; i < fTileRects.count(); ++i) {
                fSurfaces[i]->getCanvas()->flush();
            }
        }
    } else {
        SkIRect bounds;
        SkAssertResult(canvas->getClipDeviceBounds(&bounds));

        SkAutoCanvasRestore overall(canvas, true/*save now*/);
        canvas->scale(fScale, fScale);

        for (int i = 0; i < loops; i++) {
            for (int y = bounds.fTop; y < bounds.fBottom; y += FLAGS_benchTile) {
                for (int x = bounds.fLeft; x < bounds.fRight; x += FLAGS_benchTile) {
                    SkAutoCanvasRestore perTile(canvas, true/*save now*/);
                    canvas->clipRect(SkRect::MakeXYWH(x/fScale, y/fScale,
                                                      FLAGS_benchTile/fScale,
                                                      FLAGS_benchTile/fScale));
                    fPic->playback(canvas);
                }
            }

            canvas->flush();
        }
    }
}