Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.30 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package lab5;
  7.  
  8. import java.util.Scanner;
  9.  
  10. /**
  11.  *
  12.  * @author Student
  13.  */
  14.  
  15. public class Fraction
  16. {
  17.  //zadanie 1
  18. private int licznik;
  19. private int mianownik;
  20.  
  21. public Fraction(int l, int m)
  22.  {
  23.    if(m == 0)
  24.    {
  25.     throw new IllegalArgumentException("parametr n=0!");  
  26.    }
  27.    else
  28.    {
  29.    this.licznik=l;
  30.    this.mianownik=m;
  31.    }
  32.    this.correction();       //wstawka do zadania 4
  33.    this.reduce();           //wstawka z zadania 5
  34.  }
  35.  
  36.  public String toString()
  37.  {
  38.   return licznik+"/"+mianownik;
  39.  }
  40.  
  41.  //zadanie 2
  42. public Fraction()
  43. {
  44.     licznik = 0;
  45.     mianownik = 1;
  46.    
  47.     //albo: this(0,1)
  48.     this.correction();
  49.     this.reduce();
  50. }
  51.  
  52. public Fraction(int licznik1)
  53. {
  54.     this.licznik = licznik1;
  55.     this.mianownik = 1;
  56.     this.correction();
  57.     this.reduce();
  58. }
  59.  
  60. //zadanie 3
  61. //konstruktor kopiujący
  62. public Fraction(Fraction f)
  63. {
  64.   this.licznik = f.licznik;
  65.   this.mianownik = f.mianownik;
  66. }
  67.  
  68. //zadanie 4
  69. public void correction()
  70. {
  71.     if(mianownik < 0)
  72.     {
  73.        this.mianownik = this.mianownik *(-1);
  74.        this.licznik = this.licznik *(-1);
  75.     }
  76. }
  77.  
  78. //zadanie 5
  79.  
  80. private int nwd(int m, int l)
  81. {
  82.     int nwd = 0;
  83.     if(l < 0)  l = l*(-1);
  84.    
  85.     while(l != m)    {
  86.       if(l > m)
  87.         l = l- m;
  88.       else
  89.         m = m - l;
  90.     }
  91.     return l;
  92.    
  93. }
  94. public Fraction reduce()
  95. {
  96.     int d = nwd(this.licznik,this.mianownik);
  97.     if(d!=1)
  98.     {
  99.         this.mianownik /= d;
  100.         this.licznik = this.licznik / d;
  101.     }
  102.     return this;
  103. }
  104.  
  105. public Fraction reduce(int d)
  106. {
  107.     if(mianownik%d == 0 && licznik%d==0)
  108.     {
  109.         this.mianownik /= d;
  110.         this.licznik = this.licznik /= d;
  111.     }
  112.     return this;
  113. }
  114.  
  115.  
  116. public Fraction equivalent(int n)
  117. {
  118.     this.licznik = this.licznik *n;
  119.     this.mianownik *=n;
  120.     return this;
  121. }
  122.  
  123. //zadanie 6
  124. public Fraction mult(int a)         //przeciazanie
  125. {
  126.     Fraction f=new Fraction();
  127.     f.licznik = this.licznik *a;
  128.     return f;
  129. }
  130.  
  131. public Fraction mult(Fraction a)
  132. {
  133.     Fraction f=new Fraction();
  134.     f.licznik = this.licznik * a.licznik;
  135.     f.mianownik = this.mianownik *a.mianownik;
  136.     return f;
  137. }
  138. //metod statycznych nie wywołujemy na obiektach
  139. //zadanie 7
  140. public static Fraction prod(Fraction a, Fraction b)    //iloczyn dwóch ułaaamków
  141. {
  142.     Fraction f = new Fraction();
  143.     f.licznik =a.licznik * b.licznik;
  144.     f.mianownik =a.mianownik * b.mianownik;
  145.     return f;
  146. }
  147. public static Fraction prod(Fraction a, int b)        //iloczyn ułamka i liczby całkowitej
  148. {
  149.     Fraction f = new Fraction();          
  150.     f.licznik = a.licznik * b;
  151.     return f;
  152. }
  153. public static Fraction prod(int a, Fraction b)                        //liczby całkowitej przez ułamek
  154. {
  155.     Fraction f = new Fraction();  
  156.     f.licznik = b.licznik * a;
  157.     return f;
  158. }
  159.  
  160. public static Fraction prod(int a, int b)           //iloczyn dwóch liczb całkowitych zapisanych w postaci obiektu klasy Fraction
  161. {
  162.     Fraction f = new Fraction();
  163.     f.licznik = a*b;
  164.     return f;
  165. }
  166.  
  167. //zad 16
  168. public int getNum()
  169. {
  170.     return this.licznik;
  171. }
  172. public int getDen()
  173. {
  174.     return this.mianownik;
  175. }
  176.  
  177. //zad 17
  178. public void setNum(int l)
  179. {
  180.     this.licznik = l;
  181. }
  182.  
  183. public void setDen(int m)
  184. {
  185.    this.mianownik = m;
  186. }
  187.  
  188. public void setFrac(int l, int m)
  189. {
  190.   this.licznik = l;
  191.   this.mianownik = m;
  192. }
  193.  
  194. //zad 18        //przysłanianie
  195. /*public boolean equals(Fraction f)
  196. {
  197.     if(f != null)
  198.     {
  199.         if(this.licznik*f.mianownik == this.mianownik *f.licznik)       //sprawdzanie czy obiekty sa takie same
  200.         {      
  201.             return true;
  202.         }
  203.         return false;
  204.     }
  205.     else
  206.         return false;  
  207. }
  208. */
  209. //nadpisanie
  210.  
  211.     @Override
  212.     public int hashCode() {
  213.         int hash = 7;
  214.         hash = 17 * hash + this.licznik;
  215.         hash = 17 * hash + this.mianownik;
  216.         return hash;
  217.     }
  218.  
  219.     @Override
  220.     public boolean equals(Object obj) {
  221.         if (this == obj) {
  222.             return true;
  223.         }
  224.         if (obj == null) {
  225.             return false;
  226.         }
  227.         if (this.getClass() != obj.getClass()) {     //sprawdzanie klas czy są atkie same
  228.             return false;
  229.         }
  230.         final Fraction other = (Fraction) obj;      //rzutowanie na fraction obj
  231.         if (this.licznik != other.licznik) {
  232.             return false;
  233.         }
  234.         if (this.mianownik != other.mianownik) {
  235.             return false;
  236.         }
  237.         return true;
  238.     }
  239.  
  240.  
  241.  
  242. //zad 19
  243. public double doubleValue()
  244. {
  245.     return (double)this.licznik / this.mianownik;
  246. }
  247.  
  248. public float floatValue()
  249. {
  250.    
  251.      return (float)this.licznik / this.mianownik;
  252. }
  253.  
  254. public static double toDouble(Fraction f)
  255. {
  256.      return (double)f.licznik / f.mianownik;        //konwersja z int na double
  257. }
  258.  
  259. public static float toFloat(Fraction f)
  260. {
  261.    return (float)f.licznik / f.mianownik;
  262. }
  263.  
  264. //zad 20
  265. public Fraction(String s)       //string wpisywany jest argumentem
  266. {
  267.    String licznikCaly;                    //do zapisu . lub ,
  268.    int doMianownika = 0;
  269.    char[] tab = s.toCharArray();        //zamiana stringa na tablicę char
  270.    String licznikS = "";                //pole reprezentujące pole licznik
  271.    String mianownikS = "1";              
  272.    int b=0;                        //zminenna kiedy kończy sie licznik
  273.    
  274.    for(int i=0; i<tab.length; i++)        
  275.    {
  276.        if(tab[i]!= '/' && b==0 && tab[i]!=',' && tab[i]!='.')
  277.            licznikS += tab[i];
  278.        else if(tab[i] == '/')
  279.        {
  280.             b = 1;
  281.             mianownikS = "";
  282.         }
  283.         else if(tab[i]==',' || tab[i]=='.')
  284.        {
  285.             b = 2;
  286.             mianownikS = "";
  287.         }
  288.        else
  289.        {
  290.            mianownikS +=tab[i];
  291.            doMianownika++;
  292.        }          
  293.    }
  294.    if(b == 2)
  295.    {
  296.     int dl = mianownikS.length();
  297.     licznikS +=mianownikS;
  298.     mianownikS = "1";
  299.  
  300.     for(int i = 0; i<dl; i++)
  301.         mianownikS+= '0';
  302.    }
  303.    
  304.    this.licznik = Integer.parseInt(licznikS);       //przypisywanie licznkaS do pola licznik
  305.    this.mianownik = Integer.parseInt(mianownikS);
  306.    
  307.      
  308.     this.correction();
  309.     this.reduce();
  310. }
  311.  //zad 21
  312. public static Fraction valueOf(float p)
  313. {
  314.    String pS = Float.toString(p);
  315.    Fraction f =new Fraction(pS);
  316.    return f;  
  317. }
  318.  
  319. public static Fraction valueOf(double p)
  320. {
  321.    String pS = Double.toString(p);
  322.    Fraction f =new Fraction(pS);
  323.    return f;
  324. }
  325.  
  326. public static Fraction valueOf(int p)
  327. {
  328.    Fraction f = new Fraction();
  329.    f.licznik = p;
  330.    return f;  
  331. }
  332.  
  333. public static Fraction valueOf(String p)
  334. {
  335.    Fraction f = new Fraction(p);
  336.    return f;
  337. }
  338.  
  339. public static Fraction valueOf(int p1,int p2)
  340. {
  341.     Fraction f = new Fraction(p1, p2);
  342.     return f;
  343. }
  344.  
  345. //Zad 26 znak zachety --> w tym wypadku st
  346. public static Fraction inputFraction(String st)
  347. {
  348.     System.out.print(st);           //wyietlanie znaku zachęty
  349.     Scanner nowy = new Scanner(System.in);
  350.     String y = nowy.next();         //wyciąganie następnej wartości typu string z obiektu typu skaner (czyli z nowy)
  351.     Fraction f = valueOf(y);    
  352.     return f;
  353. }
  354.  
  355.  
  356.  
  357.  
  358. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement