ZAD4 #33

Closed
s426182 wants to merge 18 commits from (deleted):ZAD4 into master
Showing only changes of commit 2c6b020848 - Show all commits

View File

@ -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 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
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);
}
}
}