편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.04.13

    JAVA 다항식 덧셈계산에서 p1.hapPoly(p2) 구현이 어렵습니다


    ArrayList 클래스 (정정>> ArrList 입니다)

    import java.util.NoSuchElementException;
    
    public class ArrayList<E> { //ArrayList가 아닌 ArrList입니다.
        private E a[];
        private int size;
    
        public ArrayList() {
            a = (E[]) new Object[1];
            size = 0;
        }
    
        public E peek(int k) {
            if (size == 0 || k >= size)
                throw new NoSuchElementException();
            return a[k];
        }
    
        public boolean isEmpty() {
            if (size == 0)
                return true;
            return false;
        }
    
        public void insertLast(E newItem) {
            if (size == a.length)
                resize(2 * a.length);
            a[size++] = newItem;
        }
    
        private void resize(int newSize) {
            E[] t = (E[]) new Object[newSize];
            for (int i = 0; i < size; i++)
                t[i] = a[i];
            a = t;
        }
    
        public void insert(E newItem, int k) {
            if (size == a.length)
                resize(2 * a.length);
            for (int i = size - 1; i >= k; i--)
                a[i + 1] = a[i];
            a[k] = newItem;
            size++;
        }
    
        public void insert(E newItem) {
            insertLast(newItem);
        }
    
        public E delete(int k) {
            if (isEmpty())
                throw new NoSuchElementException();
            E item = a[k];
            for (int i = k; i < size; i++)
                a[i] = a[i + 1];
            size--;
            if (size > 0 && size <= a.length / 4)
                resize(a.length / 2);
            return item;
        }
    
        public void print() {
            for (int i = 0; i < a.length; i++) {
                if (i < size)
                    System.out.printf(a[i] + "\t");
                else
                    System.out.printf("null\t");
            }
            System.out.println();
        }
    }
    

    위 코드를 상속받아 ArrListPoly를 구현해야 합니다.

    여기서 int k: 최고 차수 / int[] arr: 다항식의 계수인 메소드 hapPoly 구현방법을 모르겠습니다.

    지금까지 작성한 ArrListPoly 클래스와 메인함수는 아래와 같습니다.

    import java.util.NoSuchElementException;
    
    class ArrListPoly extends ArrList{
        int highestDegree;
        private int k;
        private int[] arr=new int[20];
    
        public void setPoly(int highestDegree, int[] arr) {
            int i;
            for(i=arr.length-1;i>=0;i--) {
                super.insertLast(arr[i]);
            }
            this.highestDegree=highestDegree;
        }
    
        public int getHighestDegree() {
            return this.highestDegree;
        }
    
        void setPoly(int k){
            this.k=k;
            for(int i=0;i<=k;i++) { this.arr[i] = 0; }
        }
    
        public int getDegree() { return this.k; }
        public int getArr(int i) { return this.arr[i]; }
        public int setArr(int i, int arr) { return this.arr[i]=arr; }   
    }
    
    public class ArrListPolyTest {
    
        public static void main(String[] args) {
            ArrListPoly p1 = new ArrListPoly();
            int[] poly1 = { 2, 8, -4, 9, 1 };
            int p1highestDegree = poly1.length - 1;
            p1.setPoly(p1highestDegree, poly1);
            printPolyEq(p1, 1);
    
            ArrListPoly p2 = new ArrListPoly();
            int[] poly2 = { 6, 2, 9 };
            int p2highestDegree = poly2.length - 1;
            p2.setPoly(p2highestDegree, poly2);
            printPolyEq(p2, 3);
    
            ArrListPoly p3 = p1.hapPoly(p2); // 해당 hapPoly 구현에서 막혔습니다.
            printPolyEq(p3, 1);
        }
    
        public static void printPolyEq(ArrListPoly p, int nTabs) {
            for (int i = 0; i < nTabs; i++)
                System.out.printf("\t");
            for (int i = p.getHighestDegree(); i >= 0; i--)
                System.out.printf("%+d x%d\t", p.peek(i), i);
            System.out.println();
        }
    }
    

    ArrayList가 아닌 ArrList가 맞습니다. 상속받은 것도 ArrList가 맞습니다.

    "int k: 최고 차수 / int[] arr: 다항식의 계수"은 메소드 setPoly(k,arr)에서 사용됩니다.

    setPoly에서 다항식을 저장하고, hapPoly에서 차수에 맞게 p1과 p2 덧셈 후 새로운 다항식 p3에 저장하려는데 어떻게 해야 할 지 모르겠습니다ㅠㅠ

  • 프로필 편집요청빌런님의 편집
    날짜2020.04.13

    JAVA 다항식 덧셈계산에서 p1.hapPoly(p2) 구현이 어렵습니다


    ArrayList 클래스

    import java.util.NoSuchElementException;
    
    public class ArrayList<E> {
        private E a[];
        private int size;
    
        public ArrayList() {
            a = (E[]) new Object[1];
            size = 0;
        }
    
        public E peek(int k) {
            if (size == 0 || k >= size)
                throw new NoSuchElementException();
            return a[k];
        }
    
        public boolean isEmpty() {
            if (size == 0)
                return true;
            return false;
        }
    
        public void insertLast(E newItem) {
            if (size == a.length)
                resize(2 * a.length);
            a[size++] = newItem;
        }
    
        private void resize(int newSize) {
            E[] t = (E[]) new Object[newSize];
            for (int i = 0; i < size; i++)
                t[i] = a[i];
            a = t;
        }
    
        public void insert(E newItem, int k) {
            if (size == a.length)
                resize(2 * a.length);
            for (int i = size - 1; i >= k; i--)
                a[i + 1] = a[i];
            a[k] = newItem;
            size++;
        }
    
        public void insert(E newItem) {
            insertLast(newItem);
        }
    
        public E delete(int k) {
            if (isEmpty())
                throw new NoSuchElementException();
            E item = a[k];
            for (int i = k; i < size; i++)
                a[i] = a[i + 1];
            size--;
            if (size > 0 && size <= a.length / 4)
                resize(a.length / 2);
            return item;
        }
    
        public void print() {
            for (int i = 0; i < a.length; i++) {
                if (i < size)
                    System.out.printf(a[i] + "\t");
                else
                    System.out.printf("null\t");
            }
            System.out.println();
        }
    }
    

    위 코드를 상속받아 ArrListPoly를 구현해야 합니다.

    여기서 int k: 최고 차수 / int[] arr: 다항식의 계수인 메소드 hapPoly 구현방법을 모르겠습니다.

    지금까지 작성한 ArrListPoly 클래스와 메인함수는 아래와 같습니다.

    import java.util.NoSuchElementException;
    
    class ArrListPoly extends ArrList{
        int highestDegree;
        private int k;
        private int[] arr=new int[20];
    
        public void setPoly(int highestDegree, int[] arr) {
            int i;
            for(i=arr.length-1;i>=0;i--) {
                super.insertLast(arr[i]);
            }
            this.highestDegree=highestDegree;
        }
    
        public int getHighestDegree() {
            return this.highestDegree;
        }
    
        void setPoly(int k){
            this.k=k;
            for(int i=0;i<=k;i++) { this.arr[i] = 0; }
        }
    
        public int getDegree() { return this.k; }
        public int getArr(int i) { return this.arr[i]; }
        public int setArr(int i, int arr) { return this.arr[i]=arr; }   
    }
    
    public class ArrListPolyTest {
    
        public static void main(String[] args) {
            ArrListPoly p1 = new ArrListPoly();
            int[] poly1 = { 2, 8, -4, 9, 1 };
            int p1highestDegree = poly1.length - 1;
            p1.setPoly(p1highestDegree, poly1);
            printPolyEq(p1, 1);
    
            ArrListPoly p2 = new ArrListPoly();
            int[] poly2 = { 6, 2, 9 };
            int p2highestDegree = poly2.length - 1;
            p2.setPoly(p2highestDegree, poly2);
            printPolyEq(p2, 3);
    
            ArrListPoly p3 = p1.hapPoly(p2); // 해당 hapPoly 구현에서 막혔습니다.
            printPolyEq(p3, 1);
        }
    
        public static void printPolyEq(ArrListPoly p, int nTabs) {
            for (int i = 0; i < nTabs; i++)
                System.out.printf("\t");
            for (int i = p.getHighestDegree(); i >= 0; i--)
                System.out.printf("%+d x%d\t", p.peek(i), i);
            System.out.println();
        }
    }
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.04.13

    JAVA 다항식 덧셈계산에서 p1.hapPoly(p2) 구현이 어렵습니다


    ArrayList 클래스

    import java.util.NoSuchElementException;
    
    public class ArrayList <E> {
    private E a[];
    private int size;
    public ArrayList() {
    a = (E[]) new Object[1];
    size = 0;
    }
    public E peek(int k) {
    if(size ==0 || k >= size)
    throw new NoSuchElementException();
    return a[k];
    }
    public boolean isEmpty() {
    if( size == 0) return true;
    return false;
    }
    public void insertLast(E newItem) {
    if (size == a.length)
    resize(2*a.length);
    a[size++] = newItem;
    }
    private void resize(int newSize) {
    E[] t = (E[])new Object[newSize];
    for(int i = 0; i<size; i++)
    t[i] = a[i];
    a = t;
    }
    public void insert(E newItem, int k) {
    if( size == a.length)
    resize(2*a.length);
    for(int i = size -1; i>= k; i--) a[i+1] = a[i];
    a[k] = newItem;
    size++;
    }
    public void insert(E newItem) {
    insertLast(newItem);
    }
    public E delete(int k) {
    if(isEmpty()) throw new NoSuchElementException();
    E item = a[k];
    for (int i = k; i<size; i++) a[i] = a[i+1];
    size--;
    if(size > 0 && size<= a.length/4)
    resize(a.length/2);
    return item;
    }
    public void print() {
    for (int i =0; i<a.length; i++) {
    if( i<size) System.out.printf(a[i] + "\t");
    else System.out.printf("null\t");
    }
    System.out.println();
    }
    }
    

    위 코드를 상속받아 ArrListPoly를 구현해야 합니다.

    여기서 int k : 최고 차수 / int[] arr: 다항식의 계수인 메소드 hapPoly 구현방법을 모르겠습니다.

    지금까지 작성한 ArrListPoly 클래스와 메인함수는 아래와 같습니다.

    import java.util.NoSuchElementException;
    
    class ArrListPoly extends ArrList{
        int highestDegree;
        private int k;
        private int[] arr=new int[20];
    
        public void setPoly(int highestDegree, int[] arr) {
            int i;
            for(i=arr.length-1;i>=0;i--) {
                super.insertLast(arr[i]);
            }
            this.highestDegree=highestDegree;
        }
    
        public int getHighestDegree() {
            return this.highestDegree;
        }
    
        void setPoly(int k){
            this.k=k;
            for(int i=0;i<=k;i++) { this.arr[i] = 0; }
        }
    
        public int getDegree() { return this.k; }
        public int getArr(int i) { return this.arr[i]; }
        public int setArr(int i, int arr) { return this.arr[i]=arr; }   
    }
    
    public class ArrListPolyTest {
    
    public static void main(String[] args) {
    ArrListPoly p1 = new ArrListPoly();
    int[] poly1 = { 2, 8, -4, 9, 1 };
    int p1highestDegree = poly1.length - 1;
    p1.setPoly(p1highestDegree, poly1);
    printPolyEq(p1, 1);
    
    ArrListPoly p2 = new ArrListPoly();
    int[] poly2 = { 6, 2, 9 };
    int p2highestDegree = poly2.length - 1;
    p2.setPoly(p2highestDegree, poly2);
    printPolyEq(p2, 3);
    
    ArrListPoly p3 = p1.hapPoly(p2); //해당 hapPoly 구현에서 막혔습니다.
    printPolyEq(p3, 1);
    }
    
    public static void printPolyEq(ArrListPoly p, int nTabs) {
    for (int i = 0; i < nTabs; i++)
    System.out.printf("\t");
    for (int i = p.getHighestDegree(); i >= 0; i--)
    System.out.printf("%+d x%d\t", p.peek(i), i);
    System.out.println();
    }
    }