Advertisement
Guest User

PETKA ILI GLAVA; GENERICHKA TROJKA

a guest
Nov 17th, 2017
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.80 KB | None | 0 0
  1. === PETKA ILI GLAVA ===
  2.  
  3. Дадена е класа Coin која се користи за симулирање на вртење монета. Методот flip во оваа класа со помош на класата Random (која користи рамномерна распределба) враќа HEAD (глава) или TAIL (петка) со еднаква веројатност од 0.5 (50%).
  4.  
  5. Да се напише класа LoadedCoin која наследува од класата Coin и го препокрива методот flip така што ќе враќа HEAD со некоја веројатност P (0 - 100%). Веројатноста P е класна променлива и се иницијализира преку конструкторот.
  6.  
  7.  
  8. import java.util.Random;
  9. import java.util.Scanner;
  10.  
  11. public class LoadedCoinTest {
  12.     public static void main(String[] args) {
  13.         Scanner scanner = new Scanner(System.in);
  14.         int probability = scanner.nextInt();
  15.         Coin c = new Coin();
  16.         int heads = 0;
  17.         int n = 1000;
  18.         for(int i = 0; i < n; i++) {
  19.             SIDE side = c.flip();
  20.             if(side == SIDE.HEAD) {
  21.                 heads++;
  22.             }
  23.         }
  24.         if(heads > 450&&heads < 550) {
  25.             System.out.println("YES");
  26.         } else {
  27.             System.out.println("NO");
  28.         }
  29.         c = new LoadedCoin(probability);
  30.         heads = 0;
  31.         for(int i = 0; i < n; i++) {
  32.             SIDE side = c.flip();
  33.             if(side == SIDE.HEAD) {
  34.                 heads++;
  35.             }
  36.         }
  37.         if(heads > probability * 10 - 50 && heads < probability * 10 + 50) {
  38.             System.out.println("YES");
  39.         } else {
  40.             System.out.println("NO");
  41.         }
  42.     }
  43. }
  44. enum SIDE {
  45.     HEAD, TAIL
  46. }
  47. class Coin {
  48.  
  49.     SIDE side;
  50.  
  51.     public SIDE flip() {
  52.         Random random = new Random();
  53.         boolean isHead = random.nextBoolean();
  54.         if (isHead) {
  55.             return SIDE.HEAD;
  56.         } else {
  57.             return SIDE.TAIL;
  58.         }
  59.     }
  60. }
  61.  
  62. class LoadedCoin extends Coin {
  63.     int P;
  64.     public LoadedCoin(int _P){
  65.         P = _P;
  66.     }
  67.     public SIDE flip(){
  68.         Random random = new Random();
  69.         double isHead = random.nextDouble();
  70.         if(isHead <= P/100.00){
  71.             return SIDE.HEAD;
  72.         } else {
  73.             return SIDE.TAIL;
  74.         }
  75.     }
  76. }
  77.  
  78.  
  79. === GENERICHKA TROJKA ===
  80.  
  81. Да се имплемнтира генеричка класа Triple (тројка) од нумерички вредности (три броја). За класата да се имплементираат:
  82.  
  83. конструктор со 3 аргументи,
  84. double max() - го враќа најголемиот од трите броја
  85. double average() - кој враќа просек на трите броја
  86. void sort() - кој ги сортира елементите во растечки редослед
  87. да се преоптовари методот toString() кој враќа форматиран стринг со две децимални места за секој елемент и празно место помеѓу нив.
  88.  
  89.  
  90. import java.util.*;
  91.  
  92. public class TripleTest {
  93.     public static void main(String[] args) {
  94.         Scanner scanner = new Scanner(System.in);
  95.         int a = scanner.nextInt();
  96.         int b = scanner.nextInt();
  97.         int c = scanner.nextInt();
  98.         Triple<Integer> tInt = new Triple<Integer>(a, b, c);
  99.         System.out.printf("%.2f\n", tInt.max());
  100.         System.out.printf("%.2f\n", tInt.average());
  101.         tInt.sort();
  102.         System.out.println(tInt);
  103.         float fa = scanner.nextFloat();
  104.         float fb = scanner.nextFloat();
  105.         float fc = scanner.nextFloat();
  106.         Triple<Float> tFloat = new Triple<Float>(fa, fb, fc);
  107.         System.out.printf("%.2f\n", tFloat.max());
  108.         System.out.printf("%.2f\n", tFloat.average());
  109.         tFloat.sort();
  110.         System.out.println(tFloat);
  111.         double da = scanner.nextDouble();
  112.         double db = scanner.nextDouble();
  113.         double dc = scanner.nextDouble();
  114.         Triple<Double> tDouble = new Triple<Double>(da, db, dc);
  115.         System.out.printf("%.2f\n", tDouble.max());
  116.         System.out.printf("%.2f\n", tDouble.average());
  117.         tDouble.sort();
  118.         System.out.println(tDouble);
  119.     }
  120. }
  121.  
  122. class Triple<E extends Number>{
  123.     List<E> lista;
  124.     public Triple(E _a, E _b, E _c){
  125.         lista = new ArrayList<E>();
  126.         lista.add(_a);
  127.         lista.add(_b);
  128.         lista.add(_c);
  129.     }
  130.     public double max(){
  131.         return Double.max(lista.get(0).doubleValue(), Double.max(lista.get(1).doubleValue(), lista.get(2).doubleValue()));
  132.     }
  133.     public double average(){
  134.         return (double)(lista.get(0).doubleValue()+lista.get(1).doubleValue()+lista.get(2).doubleValue())/3;
  135.     }
  136.     public void sort(){
  137.         for (int i = 0; i <3; i++){
  138.             for(int j = 1; j < (3-i); j++){
  139.                 if(lista.get(j-1).doubleValue() > lista.get(j).doubleValue()){
  140.                     E temp = lista.get(j-1);  
  141.                     lista.set(j-1, lista.get(j));
  142.                     lista.set(j, temp);
  143.                 }
  144.             }
  145.         }
  146.     }
  147.     public String toString(){
  148.         return String.format("%.2f %.2f %.2f", lista.get(0).doubleValue(), lista.get(1).doubleValue(), lista.get(2).doubleValue());
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement