daily pastebin goal
37%
SHARE
TWEET

Untitled

a guest Jan 18th, 2019 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package company;
  2.  
  3. import com.sun.source.tree.Tree;
  4.  
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.util.*;
  8. import java.util.stream.IntStream;
  9.  
  10. /**
  11.  * January 2016 Exam problem 1
  12.  */
  13. public class StudentRecordsTest {
  14.     public static void main(String[] args) {
  15.         System.out.println("=== READING RECORDS ===");
  16.         StudentRecords studentRecords = new StudentRecords();
  17.         int total = studentRecords.readRecords(System.in);
  18.         System.out.printf("Total records: %d\n", total);
  19.         System.out.println("=== WRITING TABLE ===");
  20.       studentRecords.writeTable(System.out);
  21.         System.out.println("=== WRITING DISTRIBUTION ===");
  22.         studentRecords.writeDistribution(System.out);
  23.     }
  24. }
  25. class Student{
  26.     private String ime;
  27.     private String nasoka;
  28.     private int []oceni;
  29.     public Student(String code, String typeOfStudeis, int []oceni) {
  30.         this.ime = code;
  31.         this.nasoka = typeOfStudeis;
  32.         this.oceni = oceni;
  33.  
  34.     }
  35.  
  36.     public String getIme() {
  37.         return ime;
  38.     }
  39.  
  40.     public String getNasoka() {
  41.         return nasoka;
  42.     }
  43.     public double getAverages() {
  44.         return (oceni[0]*6+oceni[1]*7+oceni[2]*8+oceni[3]*9+oceni[4]*10)/(double)(oceni[0]+oceni[1]+oceni[2]+oceni[3]+oceni[4]);
  45.     }
  46.     @Override
  47.     public String toString() {
  48.         return String.format("%s %.2f",ime,getAverages());
  49.     }
  50. }
  51. class Nasoka{
  52.     String name;
  53.     HashMap<Integer,Integer> oceni;
  54.  
  55.     public Nasoka(String name,int niza[]) {
  56.         this.name = name;
  57.         oceni=new HashMap<>();
  58.         oceni.put(6,niza[0]);
  59.         oceni.put(7,niza[1]);
  60.         oceni.put(8,niza[2]);
  61.         oceni.put(9,niza[3]);
  62.         oceni.put(10,niza[4]);
  63.     }
  64.  
  65.     public String getName() {
  66.         return name;
  67.     }
  68.  
  69.     public void add(int ocenki[]){
  70.         int tmp=oceni.get(6);
  71.         oceni.replace(6,tmp,tmp+ocenki[0]);
  72.         tmp=oceni.get(7);
  73.         oceni.put(7,tmp+ocenki[1]);
  74.         tmp=oceni.get(8);
  75.         oceni.put(8,tmp+ocenki[2]);
  76.         tmp=oceni.get(9);
  77.         oceni.put(9,tmp+ocenki[3]);
  78.         tmp=oceni.get(10);
  79.         oceni.put(10,tmp+ocenki[4]);
  80.     }
  81.   int getDesetki(){
  82.         return oceni.get(10);
  83.     }
  84.  
  85.     @Override
  86.     public String toString() {
  87.         StringBuilder sb=new StringBuilder();
  88.         sb.append(name).append("\n");
  89.         IntStream.range(6,11).forEach(x->{
  90.             sb.append(String.format("%2d | ",x));
  91.             for (int i=0;i<oceni.get(x);i+=10){ sb.append("*");}
  92.             sb.append(String.format("(%d)\n",oceni.get(x)));
  93.         });
  94.         return sb.toString();
  95.     }
  96. }
  97. class StudentRecords{
  98.     TreeMap<String, TreeSet<Student>> tabela1;
  99.  
  100.     HashMap<String,Nasoka> tabela3;
  101.     public StudentRecords() {
  102.         tabela1=new TreeMap<>();
  103.         tabela3=new HashMap<>();
  104.     }
  105.     int readRecords(InputStream inputStream){
  106.         int br=0;
  107.         Scanner sc =new Scanner(inputStream);
  108.         String line=null;
  109.         while (!(line=sc.nextLine()).equals("")){
  110.             String part[]=line.split("\\s+");
  111.             String name=part[0];
  112.             String nasoka=part[1];
  113.             int[] oceni=new int[5];
  114.             for (int i = 2; i <part.length ; i++) {
  115.                 if(part[i].equals("6")){
  116.                     oceni[0]++;
  117.                 }
  118.               else  if(part[i].equals("7")){
  119.                     oceni[1]++;
  120.                 }
  121.                else if(part[i].equals("8")){
  122.                     oceni[2]++;
  123.                 }
  124.                 else if(part[i].equals("9")){
  125.                     oceni[3]++;
  126.                 }
  127.                else if(part[i].equals("10")){
  128.                     oceni[4]++;
  129.                 }
  130.             }
  131.             br++;
  132.             tabela1.computeIfAbsent(nasoka,x->new TreeSet<>(Comparator.comparing(Student::getAverages).thenComparing(Student::getIme).reversed())).add(new Student(name,nasoka,oceni));
  133.             if(tabela3.get(nasoka)==null){
  134.                 tabela3.put(nasoka,new Nasoka(nasoka,oceni));
  135.             }else{
  136.                 tabela3.get(nasoka).add(oceni);
  137.             }
  138.  
  139.         }
  140.         return br;
  141.     }
  142.   void writeDistribution(OutputStream outputStream){
  143.      tabela3.values().stream().sorted(Comparator.comparing(Nasoka::getDesetki).thenComparing(Nasoka::getName).reversed()).forEach(System.out::print);
  144.   }
  145.     void writeTable(OutputStream outputStream){
  146.         tabela1.entrySet().stream().forEach(x->{
  147.             System.out.println(x.getKey());
  148.             x.getValue().stream().forEach(System.out::println);
  149.         });
  150.     }
  151. }
  152.  
  153. //Masala masala kasala
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top