ZAD4 #33
46
MainApp.java
46
MainApp.java
@ -1,5 +1,3 @@
|
||||
//package com.madrakrystian.algebra;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
@ -8,25 +6,6 @@ import java.util.Scanner;
|
||||
import java.util.Stack;
|
||||
|
||||
public class MainApp {
|
||||
|
||||
|
||||
// Napisać program, który dla danego pierścienia współczynników R = ℤ/nℤ, n ∈ ℕ oraz wielomianów f,g ∈ R[x] zmiennej x znajdzie:
|
||||
//
|
||||
// iloczyn f⋅g ∈ R[x]
|
||||
// klasę reszty f ∈ R[x]/(g)
|
||||
// największy wspólny dzielnik nwd(f,g) korzystając z algorytmu Euklidesa.
|
||||
//
|
||||
// Uwaga: wielomiany są podawane jako ciąg współczynników od wyrazu wolnego, do współczynnika wiodącego.
|
||||
//
|
||||
// Termin: 07.06
|
||||
// Przykłady:
|
||||
//
|
||||
// Input: 2, [1,1,1,0,1], [0,1,1] (i.e. f = 1 + x + x² + x⁴, g = x² + x)
|
||||
// Output: [[0,1,0,0,1,1,1], [1,1], [1,1]]
|
||||
//
|
||||
// Input: 6, [2,1,0,2,1,3], [1,0,0,5]
|
||||
// Output: [[3,1,0,5,0,1,4,5,5], [5,2,1], DivisionError]
|
||||
|
||||
|
||||
// czytanie inputu z System.in
|
||||
static Scanner reader = new Scanner(System.in);
|
||||
@ -51,11 +30,7 @@ public class MainApp {
|
||||
|
||||
char temp;
|
||||
|
||||
//
|
||||
// poprawiony bardzo nieelegancki nowy input
|
||||
//
|
||||
|
||||
input = reader.nextLine();
|
||||
input = args[0];
|
||||
|
||||
BufferedReader read = new BufferedReader(
|
||||
new StringReader(input));
|
||||
@ -120,7 +95,9 @@ public class MainApp {
|
||||
// 2.
|
||||
System.out.println("2. klasa reszty: ");
|
||||
res = polynomialsDivide(polyOne,polyTwo,n);
|
||||
System.out.println(Arrays.toString(res));
|
||||
if(res != null){
|
||||
System.out.println(Arrays.toString(res));
|
||||
}
|
||||
|
||||
// 3.
|
||||
System.out.println("3. nwd: ");
|
||||
@ -134,7 +111,7 @@ public class MainApp {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//input(old)
|
||||
//input
|
||||
/*
|
||||
do{
|
||||
System.out.println("Podaj n: ");
|
||||
@ -276,6 +253,11 @@ public class MainApp {
|
||||
//2. Dzielenie wielomianow
|
||||
public static int[] polynomialsDivide(int polyOne[], int polyTwo[], int mod) {
|
||||
|
||||
if(polyOne.length < polyTwo.length) {
|
||||
System.out.println("Division error");
|
||||
return null;
|
||||
}
|
||||
|
||||
// druga tablica ale z rowna liczba indeksow co pierwsza
|
||||
int[] tempTab = new int[polyOne.length];
|
||||
// output
|
||||
@ -334,10 +316,16 @@ public class MainApp {
|
||||
|
||||
// 3.
|
||||
public static int[] nwd(int polyOne[], int polyTwo[], int mod) {
|
||||
|
||||
if(polyTwo.length == 0) {
|
||||
return polyOne;
|
||||
}
|
||||
return nwd(polyTwo, polynomialsDivide(polyOne,polyTwo,mod),mod);
|
||||
if(polyOne.length >= polyTwo.length) {
|
||||
return nwd(polyTwo, polynomialsDivide(polyOne,polyTwo,mod),mod);
|
||||
}
|
||||
else {
|
||||
return nwd(polyTwo, polynomialsDivide(polyTwo,polyOne,mod),mod);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user