Advertisement
Valleri

Exam Scores - Java Basics - 22 June 2014

Jul 26th, 2014
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Solve(args) {
  2.     map = {};
  3.  
  4.     for(var i = 0; i < args.length; i++) {  //starting from 3 to avoid the header, ending at -1 to avoid bottom-border
  5.         var inputHolder = args[i].split(/[^a-zA-Z0-9.]+/);
  6.         inputHolder = inputHolder.filter(function (n) { return n != '' }); // removing empty array elements
  7.  
  8.         var score = inputHolder[2];
  9.         var name = inputHolder[0] + " " + inputHolder[1];
  10.         var mark = parseFloat(inputHolder[3]);
  11.  
  12.         if(!(score in map)) {    // ako lipsva key (v slu4aq score na studenta e kluch za mapa) dobavqme i inicializirame
  13.             map[score] = [mark, []];
  14.             map[score][1].push(name); // map[score][1] e array s imenata
  15.         }
  16.         else {                  // ako ima takav klu4 trbva kum dosegashnata suma da dobavim ocenkata za da smetnem average posle
  17.             map[score][0] += mark; // obnovqvame ocenkata
  18.             if(map[score][1].indexOf(name) == -1) {
  19.                 map[score][1].push(name); //dobavqme imeto
  20.             }
  21.         }
  22.     }
  23.  
  24.     for(var key in map) {            // minavame prez vsi4ki keys ot mapa
  25.         map[key][1].sort();   // sortirame arrays s imenata
  26.         var result = key + " -> " + map[key][1].join(", ") + "; avg=" + (map[key][0] / map[key][1].length).toFixed(2);  
  27.         // ^^ iz4islqvame average kato razdelim sbora ot si4ki ocenki na razmera na array s imena , do 2 mesta sled to4kata
  28.         console.log(result);
  29.     }
  30.  
  31. }
  32.  
  33.  
  34. Solve(["| George Ivanov       | 306        | 5.26  |",
  35. "| George Stefanov     | 120        | 3.12  |",
  36. "| Petya Koleva        | 400        | 6.00  |",
  37. "| Aleksandar Stoyanov | 300        | 5.00  |",
  38. "| Diana Kirova        | 120        | 3.23  |",
  39. "| Ivan Ivanov         | 0          | 2.00  |",
  40. "| Kalin Petrov        | 300        | 5.40  |",
  41. "| Stoyan Kotsev       | 400        | 5.00  |",
  42. "| Krasimir Mihaylov   | 400        | 5.98  |"]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement