add Rational
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package movie.apis;
|
||||
|
||||
public class Genre {
|
||||
//TODO
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package movie.apis;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
// TODO: Receive your data from here
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package movie.apis;
|
||||
|
||||
public class Movie {
|
||||
//TODO
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package movie.apis;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class MovieService {
|
||||
|
||||
private final static String GENRES_URL = "https://moviesapi.ir/api/v1/genres";
|
||||
private static String MOVIES_BY_GENRE_URL = "https://moviesapi.ir/api/v1/genres/";
|
||||
private final static String MOVIE_INFO = "https://moviesapi.ir/api/v1/movies/{movie_id}";//todo fazel
|
||||
private final static HttpClient client = HttpClient.newHttpClient();
|
||||
private ArrayList<Movie> moviesList;
|
||||
private ArrayList<Genre> genresList;
|
||||
|
||||
|
||||
private String getGenresList() {
|
||||
try {
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(GENRES_URL))
|
||||
.build();
|
||||
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
|
||||
if (response.statusCode() == 200) {
|
||||
System.out.println("Genres List received successfully");
|
||||
return response.body();
|
||||
} else {
|
||||
throw new IOException("HTTP error code: " + response.statusCode());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("!!Exception : " + e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getMoviesByGenreList(Long genreId, Long page) {
|
||||
try {
|
||||
|
||||
MOVIES_BY_GENRE_URL = MOVIES_BY_GENRE_URL + genreId + "/movies?page=" + page;
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(MOVIES_BY_GENRE_URL))
|
||||
.build();
|
||||
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
|
||||
if (response.statusCode() == 200) {
|
||||
System.out.println("Movies By Genre received successfully");
|
||||
return response.body();
|
||||
} else {
|
||||
throw new IOException("HTTP error code: " + response.statusCode());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("!!Exception : " + e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// TODO: Write a method that parses the JSON returned by getGenresList() into a list of Genre objects.
|
||||
// TODO: Write a method that displays the list of genres.
|
||||
|
||||
// TODO: Write a method whose inputs are genreId and page, and returns a list of movies for that genre and page.
|
||||
// TODO: Write a method that displays the genres of a specific movie.
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user