From e3d18097cd5ccc9bf195b81a7da99cd1a755954f Mon Sep 17 00:00:00 2001 From: Partow Roshani Date: Thu, 23 Apr 2026 01:32:34 +0330 Subject: [PATCH] add Rational --- .idea/encodings.xml | 7 ++ src/main/java/MathMethods/Rational.java | 108 ++++++++++++++++++ src/{ => main/java}/movie/apis/Genre.java | 0 src/{ => main/java}/movie/apis/Main.java | 0 src/{ => main/java}/movie/apis/Movie.java | 0 .../java}/movie/apis/MovieService.java | 0 6 files changed, 115 insertions(+) create mode 100644 .idea/encodings.xml create mode 100644 src/main/java/MathMethods/Rational.java rename src/{ => main/java}/movie/apis/Genre.java (100%) rename src/{ => main/java}/movie/apis/Main.java (100%) rename src/{ => main/java}/movie/apis/Movie.java (100%) rename src/{ => main/java}/movie/apis/MovieService.java (100%) diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/java/MathMethods/Rational.java b/src/main/java/MathMethods/Rational.java new file mode 100644 index 0000000..3791373 --- /dev/null +++ b/src/main/java/MathMethods/Rational.java @@ -0,0 +1,108 @@ +package MathMethods; + +public class Rational { + private int numerator; + private int denominator; + + // Constructor + public Rational(int numerator, int denominator) { + if (denominator == 0) { + throw new IllegalArgumentException("Denominator cannot be zero"); + } + this.numerator = numerator; + this.denominator = denominator; + simplify(); + } + + // GCD helper for simplification + private int gcd(int a, int b) { + a = Math.abs(a); + b = Math.abs(b); + while (b != 0) { + int temp = b; + b = a % b; + a = temp; + } + return a; + } + + // Simplify the fraction + private void simplify() { + int gcd = gcd(numerator, denominator); + numerator /= gcd; + denominator /= gcd; + + // Keep denominator positive + if (denominator < 0) { + numerator = -numerator; + denominator = -denominator; + } + } + + // ✅ COMPLETED - Instance method: this + other + public Rational add(Rational other) { + int newNumerator = this.numerator * other.denominator + other.numerator * this.denominator; + int newDenominator = this.denominator * other.denominator; + return new Rational(newNumerator, newDenominator); + } + + // ✅ COMPLETED - Static method: r1 + r2 + public static Rational add(Rational r1, Rational r2) { + return r1.add(r2); + } + + // TODO: Instance method - this - other + // Formula: a/b - c/d = (a*d - c*b) / (b*d) + public Rational subtract(Rational other) { + // YOUR CODE HERE + return null; // Remove this line when implemented + } + + // TODO: Static method - r1 - r2 + public static Rational subtract(Rational r1, Rational r2) { + // YOUR CODE HERE + return null; // Remove this line when implemented + } + + // TODO: Instance method - this * other + // Formula: (a/b) * (c/d) = (a*c) / (b*d) + public Rational multiply(Rational other) { + // YOUR CODE HERE + return null; // Remove this line when implemented + } + + // TODO: Static method - r1 * r2 + public static Rational multiply(Rational r1, Rational r2) { + // YOUR CODE HERE + return null; // Remove this line when implemented + } + + // TODO: Instance method - this / other + // Formula: (a/b) ÷ (c/d) = (a*d) / (b*c) + public Rational divide(Rational other) { + // YOUR CODE HERE + // HINT: Division is multiplication by reciprocal + // Don't forget to check if other.numerator is zero! + return null; // Remove this line when implemented + } + + // TODO: Static method - r1 / r2 + public static Rational divide(Rational r1, Rational r2) { + // YOUR CODE HERE + return null; // Remove this line when implemented + } + + // ✅ PROVIDED - String representation + @Override + public String toString() { + if (denominator == 1) { + return numerator + ""; + } + return numerator + "/" + denominator; + } + + // ✅ PROVIDED - Decimal value + public double toDouble() { + return (double) numerator / denominator; + } +} diff --git a/src/movie/apis/Genre.java b/src/main/java/movie/apis/Genre.java similarity index 100% rename from src/movie/apis/Genre.java rename to src/main/java/movie/apis/Genre.java diff --git a/src/movie/apis/Main.java b/src/main/java/movie/apis/Main.java similarity index 100% rename from src/movie/apis/Main.java rename to src/main/java/movie/apis/Main.java diff --git a/src/movie/apis/Movie.java b/src/main/java/movie/apis/Movie.java similarity index 100% rename from src/movie/apis/Movie.java rename to src/main/java/movie/apis/Movie.java diff --git a/src/movie/apis/MovieService.java b/src/main/java/movie/apis/MovieService.java similarity index 100% rename from src/movie/apis/MovieService.java rename to src/main/java/movie/apis/MovieService.java