Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package lab5;
- import java.util.Scanner;
- /**
- *
- * @author Student
- */
- public class Fraction
- {
- //zadanie 1
- private int licznik;
- private int mianownik;
- public Fraction(int l, int m)
- {
- if(m == 0)
- {
- throw new IllegalArgumentException("parametr n=0!");
- }
- else
- {
- this.licznik=l;
- this.mianownik=m;
- }
- this.correction(); //wstawka do zadania 4
- this.reduce(); //wstawka z zadania 5
- }
- public String toString()
- {
- return licznik+"/"+mianownik;
- }
- //zadanie 2
- public Fraction()
- {
- licznik = 0;
- mianownik = 1;
- //albo: this(0,1)
- this.correction();
- this.reduce();
- }
- public Fraction(int licznik1)
- {
- this.licznik = licznik1;
- this.mianownik = 1;
- this.correction();
- this.reduce();
- }
- //zadanie 3
- //konstruktor kopiujący
- public Fraction(Fraction f)
- {
- this.licznik = f.licznik;
- this.mianownik = f.mianownik;
- }
- //zadanie 4
- public void correction()
- {
- if(mianownik < 0)
- {
- this.mianownik = this.mianownik *(-1);
- this.licznik = this.licznik *(-1);
- }
- }
- //zadanie 5
- private int nwd(int m, int l)
- {
- int nwd = 0;
- if(l < 0) l = l*(-1);
- while(l != m) {
- if(l > m)
- l = l- m;
- else
- m = m - l;
- }
- return l;
- }
- public Fraction reduce()
- {
- int d = nwd(this.licznik,this.mianownik);
- if(d!=1)
- {
- this.mianownik /= d;
- this.licznik = this.licznik / d;
- }
- return this;
- }
- public Fraction reduce(int d)
- {
- if(mianownik%d == 0 && licznik%d==0)
- {
- this.mianownik /= d;
- this.licznik = this.licznik /= d;
- }
- return this;
- }
- public Fraction equivalent(int n)
- {
- this.licznik = this.licznik *n;
- this.mianownik *=n;
- return this;
- }
- //zadanie 6
- public Fraction mult(int a) //przeciazanie
- {
- Fraction f=new Fraction();
- f.licznik = this.licznik *a;
- return f;
- }
- public Fraction mult(Fraction a)
- {
- Fraction f=new Fraction();
- f.licznik = this.licznik * a.licznik;
- f.mianownik = this.mianownik *a.mianownik;
- return f;
- }
- //metod statycznych nie wywołujemy na obiektach
- //zadanie 7
- public static Fraction prod(Fraction a, Fraction b) //iloczyn dwóch ułaaamków
- {
- Fraction f = new Fraction();
- f.licznik =a.licznik * b.licznik;
- f.mianownik =a.mianownik * b.mianownik;
- return f;
- }
- public static Fraction prod(Fraction a, int b) //iloczyn ułamka i liczby całkowitej
- {
- Fraction f = new Fraction();
- f.licznik = a.licznik * b;
- return f;
- }
- public static Fraction prod(int a, Fraction b) //liczby całkowitej przez ułamek
- {
- Fraction f = new Fraction();
- f.licznik = b.licznik * a;
- return f;
- }
- public static Fraction prod(int a, int b) //iloczyn dwóch liczb całkowitych zapisanych w postaci obiektu klasy Fraction
- {
- Fraction f = new Fraction();
- f.licznik = a*b;
- return f;
- }
- //zad 16
- public int getNum()
- {
- return this.licznik;
- }
- public int getDen()
- {
- return this.mianownik;
- }
- //zad 17
- public void setNum(int l)
- {
- this.licznik = l;
- }
- public void setDen(int m)
- {
- this.mianownik = m;
- }
- public void setFrac(int l, int m)
- {
- this.licznik = l;
- this.mianownik = m;
- }
- //zad 18 //przysłanianie
- /*public boolean equals(Fraction f)
- {
- if(f != null)
- {
- if(this.licznik*f.mianownik == this.mianownik *f.licznik) //sprawdzanie czy obiekty sa takie same
- {
- return true;
- }
- return false;
- }
- else
- return false;
- }
- */
- //nadpisanie
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 17 * hash + this.licznik;
- hash = 17 * hash + this.mianownik;
- return hash;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (this.getClass() != obj.getClass()) { //sprawdzanie klas czy są atkie same
- return false;
- }
- final Fraction other = (Fraction) obj; //rzutowanie na fraction obj
- if (this.licznik != other.licznik) {
- return false;
- }
- if (this.mianownik != other.mianownik) {
- return false;
- }
- return true;
- }
- //zad 19
- public double doubleValue()
- {
- return (double)this.licznik / this.mianownik;
- }
- public float floatValue()
- {
- return (float)this.licznik / this.mianownik;
- }
- public static double toDouble(Fraction f)
- {
- return (double)f.licznik / f.mianownik; //konwersja z int na double
- }
- public static float toFloat(Fraction f)
- {
- return (float)f.licznik / f.mianownik;
- }
- //zad 20
- public Fraction(String s) //string wpisywany jest argumentem
- {
- String licznikCaly; //do zapisu . lub ,
- int doMianownika = 0;
- char[] tab = s.toCharArray(); //zamiana stringa na tablicę char
- String licznikS = ""; //pole reprezentujące pole licznik
- String mianownikS = "1";
- int b=0; //zminenna kiedy kończy sie licznik
- for(int i=0; i<tab.length; i++)
- {
- if(tab[i]!= '/' && b==0 && tab[i]!=',' && tab[i]!='.')
- licznikS += tab[i];
- else if(tab[i] == '/')
- {
- b = 1;
- mianownikS = "";
- }
- else if(tab[i]==',' || tab[i]=='.')
- {
- b = 2;
- mianownikS = "";
- }
- else
- {
- mianownikS +=tab[i];
- doMianownika++;
- }
- }
- if(b == 2)
- {
- int dl = mianownikS.length();
- licznikS +=mianownikS;
- mianownikS = "1";
- for(int i = 0; i<dl; i++)
- mianownikS+= '0';
- }
- this.licznik = Integer.parseInt(licznikS); //przypisywanie licznkaS do pola licznik
- this.mianownik = Integer.parseInt(mianownikS);
- this.correction();
- this.reduce();
- }
- //zad 21
- public static Fraction valueOf(float p)
- {
- String pS = Float.toString(p);
- Fraction f =new Fraction(pS);
- return f;
- }
- public static Fraction valueOf(double p)
- {
- String pS = Double.toString(p);
- Fraction f =new Fraction(pS);
- return f;
- }
- public static Fraction valueOf(int p)
- {
- Fraction f = new Fraction();
- f.licznik = p;
- return f;
- }
- public static Fraction valueOf(String p)
- {
- Fraction f = new Fraction(p);
- return f;
- }
- public static Fraction valueOf(int p1,int p2)
- {
- Fraction f = new Fraction(p1, p2);
- return f;
- }
- //Zad 26 znak zachety --> w tym wypadku st
- public static Fraction inputFraction(String st)
- {
- System.out.print(st); //wyietlanie znaku zachęty
- Scanner nowy = new Scanner(System.in);
- String y = nowy.next(); //wyciąganie następnej wartości typu string z obiektu typu skaner (czyli z nowy)
- Fraction f = valueOf(y);
- return f;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement