prometheus800

Ф1 Трка НП

Nov 24th, 2020
955
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.92 KB | None | 0 0
  1. //Да се имплементира класа F1Race која ќе чита од влезен тек (стандарден влез, датотека, ...) податоци за времињата од последните 3 круга на неколку пилоти на Ф1 трка. Податоците се во следниот формат:
  2. //
  3. //        Driver_name lap1 lap2 lap3, притоа lap е во формат mm:ss:nnn каде mm се минути ss се секунди nnn се милисекунди (илјадити делови од секундата). Пример:
  4. //
  5. //        Vetel 1:55:523 1:54:987 1:56:134.
  6. //
  7. //        Ваша задача е да ги имплементирате методите:
  8. //
  9. //        F1Race() - default конструктор
  10. //        void readResults(InputStream inputStream) - метод за читање на податоците
  11. //        void printSorted(OutputStream outputStream) - метод кој ги печати сите пилоти сортирани според нивното најдобро време (најкраткото време од нивните 3 последни круга) во формат Driver_name best_lap со 10 места за името на возачот (порамнето од лево) и 10 места за времето на најдобриот круг порамнето од десно. Притоа времето е во истиот формат со времињата кои се читаат.
  12.  
  13. //Sample input
  14. //        Massa 1:57:563 1:55:187 1:55:634
  15. //        Vettel 1:55:523 1:54:987 1:56:134
  16. //        Alonso 1:53:563 1:56:187 1:54:139
  17. //        Hamilton 1:56:174 1:54:371 1:56:199
  18. //
  19. //Sample output
  20. //        1. Alonso      1:53:563
  21. //        2. Hamilton    1:54:371
  22. //        3. Vettel      1:54:987
  23. //        4. Massa       1:55:187
  24.  
  25.  
  26. import java.io.InputStream;
  27. import java.io.OutputStream;
  28. import java.io.PrintWriter;
  29. import java.util.ArrayList;
  30. import java.util.Scanner;
  31.  
  32. public class F1Test {
  33.  
  34.     public static void main(String[] args) {
  35.         F1Race f1Race = new F1Race();
  36.         f1Race.readResults(System.in);
  37.         f1Race.printSorted(System.out);
  38.     }
  39.  
  40. }
  41.  
  42. class F1Driver implements Comparable<F1Driver>{
  43.     private final String name;
  44.     private final String lap1;
  45.     private final String lap2;
  46.     private final String lap3;
  47.  
  48.     F1Driver(String name, String lap1, String lap2, String lap3){
  49.         this.name = name;
  50.         this.lap1 = lap1;
  51.         this.lap2 = lap2;
  52.         this.lap3 = lap3;
  53.     }
  54.  
  55.     public String bestLap(){
  56.         String max = lap1;
  57.         if(lap2.compareTo(lap1) < 0)
  58.             max = lap2;
  59.         if(lap3.compareTo(max) < 0)
  60.             max = lap3;
  61.         return max;
  62.     }
  63.  
  64.     @Override
  65.     public int compareTo(F1Driver o) {
  66.         return bestLap().compareTo(o.bestLap());
  67.     }
  68.  
  69.     @Override
  70.     public String toString() {
  71.         StringBuilder stringBuilder = new StringBuilder();
  72.         stringBuilder.append(name);
  73.         int emptySpaces = 20 - name.length() - bestLap().length();
  74.         for (int i = 0; i < emptySpaces; i++) {
  75.             stringBuilder.append(" ");
  76.         }
  77.         stringBuilder.append(bestLap()).append("\n");
  78.         return stringBuilder.toString();
  79.     }
  80. }
  81.  
  82. class F1Race {
  83.     // vashiot kod ovde
  84.     private final ArrayList<F1Driver> drivers;
  85.  
  86.     public F1Race(){
  87.         drivers = new ArrayList<>();
  88.     }
  89.  
  90.     public void readResults(InputStream inputStream){
  91.         Scanner scanner = new Scanner(inputStream);
  92.         while (scanner.hasNextLine()){
  93.             String line = scanner.nextLine();
  94.             String[] tmp = line.split("\\s+");
  95.             String name = tmp[0];
  96.             String lap1 = tmp[1];
  97.             String lap2 = tmp[2];
  98.             String lap3 = tmp[3];
  99.             drivers.add(new F1Driver(name, lap1, lap2, lap3));
  100.         }
  101.     }
  102.  
  103.     public void sortDrivers(){
  104.         for (int i = 0; i < drivers.size(); i++) {
  105.             for (int j = 0; j < drivers.size() - i - 1; j++) {
  106.                 if(drivers.get(j).bestLap().compareTo(drivers.get(j+1).bestLap()) > 0){
  107.                     F1Driver temp = drivers.get(j);
  108.                     drivers.set(j, drivers.get(j + 1));
  109.                     drivers.set(j + 1, temp);
  110.                 }
  111.             }
  112.         }
  113.     }
  114.  
  115.     public void printSorted(OutputStream outputStream){
  116.         sortDrivers();
  117.         PrintWriter printWriter = new PrintWriter(outputStream);
  118.         printWriter.write(this.toString());
  119.         printWriter.flush();
  120.         printWriter.close();
  121.     }
  122.  
  123.     @Override
  124.     public String toString() {
  125.         StringBuilder stringBuilder = new StringBuilder();
  126.         for (int i = 0; i < drivers.size(); i++) {
  127.             stringBuilder.append(i+1).append(". ");
  128.             stringBuilder.append(drivers.get(i).toString());
  129.         }
  130.         return stringBuilder.toString();
  131.     }
  132. }
Add Comment
Please, Sign In to add comment