ZAD4 #33

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

View File

@ -1,7 +1,11 @@
//package com.madrakrystian.algebra; //package com.madrakrystian.algebra;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Arrays; import java.util.Arrays;
import java.util.Scanner; import java.util.Scanner;
import java.util.Stack;
public class MainApp { public class MainApp {
@ -24,54 +28,85 @@ public class MainApp {
// Output: [[3,1,0,5,0,1,4,5,5], [5,2,1], DivisionError] // Output: [[3,1,0,5,0,1,4,5,5], [5,2,1], DivisionError]
// Input w programie dla przykladu 1
// Podaj n:
// 2
// Pierwszy wielomian:
// Podaj liczbe wyrazow w wielomianie:
// 5
// Podaj kolejne wyrazy wielomianu po przycisku enter
// 1
// 1
// 1
// 0
// 1
// Drugi wielomian:
// Podaj liczbe wyrazow w wielomianie:
// 3
// Podaj kolejne wyrazy wielomianu po przycisku enter
// 0
// 1
// 1
// czytanie inputu z System.in // czytanie inputu z System.in
static Scanner reader = new Scanner(System.in); static Scanner reader = new Scanner(System.in);
public static void main(String[] args) { public static void main(String[] args) {
// wielomiany // liczniki indeksow wielomianow
int counterFirst = 0, counterSecond = 0;
// wielomiany + pomocniczme stosy
int polyOne[]; int polyOne[];
Stack<Integer> p1 = new Stack<Integer>();
int polyTwo[]; int polyTwo[];
Stack<Integer> p2 = new Stack<Integer>();
// wspolczynnik n // wspolczynnik n
int n=1; int n=1;
//input
do{
System.out.println("Podaj n: ");
// wpisz liczbe
n = reader.nextInt();
}while(n > 1000 || n <= 0); String str;
String input;
char temp;
System.out.println("Pierwszy wielomian: "); //
polyOne = fillPolynomial(); // poprawiony bardzo nieelegancki nowy input
//
input = reader.nextLine();
BufferedReader read = new BufferedReader(
new StringReader(input));
// od poczatku pierwszego wielomianu '['
int i = 3;
try {
if ((str = read.readLine()) != null) {
if (str.length() > 0) {
n = Character.getNumericValue(str.charAt(0));
}
temp = str.charAt(i);
while(temp != ']') {
if(temp != ',') {
p1.push(Character.getNumericValue(temp));
counterFirst++;
}
i++;
temp = str.charAt(i);
}
// przejscie do drugiej tablicy (zakladamy ze wielomiany oddzielone sa spacja)
i += 3;
temp = str.charAt(i);
while(temp != ']') {
if(temp != ',') {
p2.push(Character.getNumericValue(temp));
counterSecond++;
}
i++;
temp = str.charAt(i);
}
// inicjalizacja tablic
polyOne = new int[counterFirst];
polyTwo = new int[counterSecond];
// wypelnianie tablic
for(int j=polyOne.length-1; j>=0; j--) {
polyOne[j] = p1.pop();
}
for(int j=polyTwo.length-1; j>=0; j--) {
polyTwo[j] = p2.pop();
}
System.out.println("Drugi wielomian: ");
polyTwo = fillPolynomial();
// wyswietl wielomiany // wyswietl wielomiany
System.out.println("f:" + Arrays.toString(polyOne)); System.out.println("f:" + Arrays.toString(polyOne));
@ -95,6 +130,31 @@ public class MainApp {
reader.close(); reader.close();
} }
} catch(IOException e) {
e.printStackTrace();
}
//input(old)
/*
do{
System.out.println("Podaj n: ");
// wpisz liczbe
n = reader.nextInt();
}while(n > 1000 || n <= 0);
System.out.println("Pierwszy wielomian: ");
polyOne = fillPolynomial();
System.out.println("Drugi wielomian: ");
polyTwo = fillPolynomial();
*/
reader.close();
}
// uzupelnianie tablicy // uzupelnianie tablicy
public static int[] fillPolynomial() { public static int[] fillPolynomial() {
@ -119,6 +179,7 @@ public class MainApp {
return tab; return tab;
} }
// dzielenie modulo tablicy // dzielenie modulo tablicy
public static int[] modTheTab(int tab[], int mod) { public static int[] modTheTab(int tab[], int mod) {