Počítání váženého průměru bakaláři

Počítání váženého průměru známek bakaláři

当前为 2016-04-12 提交的版本,查看 最新版本

// ==UserScript==
// @name         Počítání váženého průměru bakaláři
// @namespace    none
// @version      2.1
// @description  Počítání váženého průměru známek bakaláři
// @author       Tomáš Falešník (2015)
// @match        http://znamky.zsunesco.cz/*
// @grant        none
// ==/UserScript==

//Created by Tomáš Falešník 2015 (see the license file)

function $x(path){
  var xpath = document.evaluate(path, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  var temp = [];
  for (var i = xpath.snapshotLength - 1; i >= 0; i--) {
    temp.push(xpath.snapshotItem(i));
  }
  return temp;
}

function MarksNeededToGetSpecifiedMark(crrZn, crrVh ) {
  var result = parseFloat(0.1);
  var running = true;
  var weightOfUsedMark = parseFloat(6);
  var usedMark = parseFloat(1);
  var multiplier = parseFloat(1);
  var wantedMark = parseFloat(1.5);
  var firstCycle = true;
  
  while(running){
    temp = parseFloat((parseFloat(crrZn + (usedMark * weightOfUsedMark) * multiplier)) / (parseFloat(crrVh + weightOfUsedMark * multiplier)));
    
    if(temp <= 1.5){
      if(firstCycle){
        return multiplier - 1;
      }else{
        return multiplier;
      }           
    }else{
      multiplier += 1;
    }   
    firstCycle = false;                    
  }
}

var predmety = $x("//div[@class='nazevprdiv']/a");
var mainRoute = $x("//div[@class='nazevprdiv']");
   
for (var i = 0; predmety.length > i; i++) { 
  var currentVahy = 0;
  var currentZnamky = 0;
  var vaha = 0;
  var secteneZnamky = 0;
  var secteneVahy = 0;

  var nazev = predmety[i].innerHTML;

  var znamky = $x("//div[@class='nazevprdiv' and ./a[text()='"+nazev+"']]/../../td/table/tbody/tr[@class='detznamka']/td");
  var vahy = $x("//div[@class='nazevprdiv' and ./a[text()='"+nazev+"']]/../../td/table/tbody/tr[@class='typ']/td");  
  
  for (var o = 0; znamky.length > o; o++) {
    switch (vahy[o].innerHTML) {
      case "D":
        vaha = 6;
        break;
     
      case "M":
        vaha = 4;
        break;
     
      case "F":
        vaha = 3;
        break;
     
      case "T":
        vaha = 2;
        break;
     
      case "C":
        vaha = 10;
        break;
     
      case "O":
        vaha = 3;
        break;
     
      case "P":
        vaha = 6;
        break;
     
      case "L":
        vaha = 4;
        break;
     
      case "A":
        vaha = 1;
        break;
    }
   
    if(znamky[o].innerHTML != "A" && znamky[o].innerHTML != "X" && znamky[o].innerHTML != "?" && znamky[o].innerHTML != "N"){
      secteneZnamky += parseInt(vaha) * parseInt(znamky[o].innerHTML);
      secteneVahy += parseInt(vaha);
      currentVahy += parseInt(vaha);
      currentZnamky += parseInt(vaha) * parseInt(znamky[o].innerHTML);
    }
  }
  
  var vysledek = parseInt(secteneZnamky) / parseInt(secteneVahy);
  mainRoute[i].innerHTML = mainRoute[i].innerHTML + '<div class="nazevpr" style="text-align:left;font-size:9pt;text-decoration:none;">Průměr: <span style="text-decoration: underline;color: #671d15;">' + vysledek + '</span></div><div class="nazevpr" style="text-align:left;font-size:8pt;text-decoration:none;">Počet jedniček s váhou 6 potřebný k tomu,<br> aby tvůj průměr byl pod 1.5: <span style="font-size:9pt; text-decoration: underline;color: #671d15;">' + MarksNeededToGetSpecifiedMark(currentZnamky, currentVahy) + '</span></div>';
  
  //console.log(nazev + ": " + multiplier + " " + temp + " currentZnamky: " + currentZnamky + " currentVahy: " + currentVahy);
  //Just for debugging (not useable now cuz i moved code to the function MarksNeededToGetSpecifiedMark)
  
  currntZnamky = 0;
  currentVahy = 0;
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址