Plik gotowy do kompilacji

This commit is contained in:
Krystian Madra 2018-06-07 15:10:43 +00:00
parent 42bc4ae122
commit 2c6b020848

View File

@ -1,5 +1,3 @@
//package com.madrakrystian.algebra;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
@ -9,25 +7,6 @@ import java.util.Stack;
public class MainApp { 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 fg R[x]
// klasę reszty f R[x]/(g)
// największy wspólny dzielnik nwd(f,g) korzystając z algorytmu Euklidesa.
//
// Uwaga: wielomiany 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 // czytanie inputu z System.in
static Scanner reader = new Scanner(System.in); static Scanner reader = new Scanner(System.in);
@ -51,11 +30,7 @@ public class MainApp {
char temp; char temp;
// input = args[0];
// poprawiony bardzo nieelegancki nowy input
//
input = reader.nextLine();
BufferedReader read = new BufferedReader( BufferedReader read = new BufferedReader(
new StringReader(input)); new StringReader(input));
@ -120,7 +95,9 @@ public class MainApp {
// 2. // 2.
System.out.println("2. klasa reszty: "); System.out.println("2. klasa reszty: ");
res = polynomialsDivide(polyOne,polyTwo,n); res = polynomialsDivide(polyOne,polyTwo,n);
System.out.println(Arrays.toString(res)); if(res != null){
System.out.println(Arrays.toString(res));
}
// 3. // 3.
System.out.println("3. nwd: "); System.out.println("3. nwd: ");
@ -134,7 +111,7 @@ public class MainApp {
e.printStackTrace(); e.printStackTrace();
} }
//input(old) //input
/* /*
do{ do{
System.out.println("Podaj n: "); System.out.println("Podaj n: ");
@ -276,6 +253,11 @@ public class MainApp {
//2. Dzielenie wielomianow //2. Dzielenie wielomianow
public static int[] polynomialsDivide(int polyOne[], int polyTwo[], int mod) { 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 // druga tablica ale z rowna liczba indeksow co pierwsza
int[] tempTab = new int[polyOne.length]; int[] tempTab = new int[polyOne.length];
// output // output
@ -334,10 +316,16 @@ public class MainApp {
// 3. // 3.
public static int[] nwd(int polyOne[], int polyTwo[], int mod) { public static int[] nwd(int polyOne[], int polyTwo[], int mod) {
if(polyTwo.length == 0) { if(polyTwo.length == 0) {
return polyOne; 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);
}
} }
} }