Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  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. public void add(int ocenki[]){
  65. int tmp=oceni.get(6);
  66. oceni.put(6,tmp+ocenki[0]);
  67. tmp=oceni.get(7);
  68. oceni.put(7,tmp+ocenki[1]);
  69. tmp=oceni.get(8);
  70. oceni.put(8,tmp+ocenki[2]);
  71. tmp=oceni.get(9);
  72. oceni.put(9,tmp+ocenki[3]);
  73. tmp=oceni.get(10);
  74. oceni.put(10,tmp+ocenki[4]);
  75. }
  76. int getDesetki(){
  77. return oceni.get(10);
  78. }
  79.  
  80. @Override
  81. public String toString() {
  82. StringBuilder sb=new StringBuilder();
  83. sb.append(name).append("\n");
  84. IntStream.range(6,11).forEach(x->{
  85. sb.append(String.format("%2d | ",x));
  86. for (int i=0;i<oceni.get(x);i+=10){ sb.append("*");}
  87. sb.append(String.format("(%d)\n",oceni.get(x)));
  88. });
  89. return sb.toString();
  90. }
  91. }
  92. class StudentRecords{
  93. TreeMap<String, TreeSet<Student>> tabela1;
  94. HashMap<String,HashMap<Integer,Integer>> tabela2;
  95. HashMap<String,Nasoka> tabela3;
  96. public StudentRecords() {
  97. tabela1=new TreeMap<>();
  98. tabela2=new HashMap<>();
  99. tabela3=new HashMap<>();
  100. }
  101. int readRecords(InputStream inputStream){
  102. int br=0;
  103. Scanner sc =new Scanner(inputStream);
  104. String line=null;
  105. while (!(line=sc.nextLine()).equals("")){
  106. String part[]=line.split("\\s+");
  107. String name=part[0];
  108. String nasoka=part[1];
  109. int[] oceni=new int[5];
  110. for (int i = 2; i <part.length ; i++) {
  111. if(part[i].equals("6")){
  112. oceni[0]++;
  113. }
  114. else if(part[i].equals("7")){
  115. oceni[1]++;
  116. }
  117. else if(part[i].equals("8")){
  118. oceni[2]++;
  119. }
  120. else if(part[i].equals("9")){
  121. oceni[3]++;
  122. }
  123. else if(part[i].equals("10")){
  124. oceni[4]++;
  125. }
  126. }
  127. br++;
  128. tabela1.computeIfAbsent(nasoka,x->new TreeSet<>(Comparator.comparing(Student::getAverages).reversed())).add(new Student(name,nasoka,oceni));
  129. tabela3.computeIfAbsent(nasoka,x->new Nasoka(nasoka,oceni)).add(oceni);
  130.  
  131. }
  132. return br;
  133. }
  134. void writeDistribution(OutputStream outputStream){
  135. tabela3.values().stream().sorted(Comparator.comparing(Nasoka::getDesetki).reversed()).forEach(System.out::print);
  136. }
  137. void writeTable(OutputStream outputStream){
  138. tabela1.entrySet().stream().forEach(x->{
  139. System.out.println(x.getKey());
  140. x.getValue().stream().forEach(System.out::println);
  141. });
  142. }
  143. }
  144. BYYY KASKO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement