Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.20 KB | None | 0 0
  1. package forLiza;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.util.Scanner;
  6.  
  7. public class Polinom3 {
  8.  
  9.     private Element head;
  10.  
  11.  
  12.     public Element getHead() {
  13.         return head;
  14.     }
  15.  
  16.     public void setHead(Element head) {
  17.         this.head = head;
  18.     }
  19.  
  20.     public Polinom3(String text) throws FileNotFoundException {
  21.         Scanner sc = new Scanner(new File(text));
  22.         String[] headParams = sc.nextLine().split(" ");
  23.         this.head = new Element(Integer.valueOf(headParams[0]), new Vector(Integer.valueOf(headParams[1]), Integer.valueOf(headParams[2]), Integer.valueOf(headParams[3])));
  24.         Element current = head;
  25.         while (sc.hasNextLine()) {
  26.             headParams = sc.nextLine().split(" ");
  27.             current.setNext(new Element(Integer.valueOf(headParams[0]), new Vector(Integer.valueOf(headParams[1]), Integer.valueOf(headParams[2]), Integer.valueOf(headParams[3]))));
  28.             current = current.getNext();
  29.         }
  30.     }
  31.  
  32.     @Override
  33.     public String toString() {
  34.         Element current = head;
  35.         StringBuilder builder = new StringBuilder();
  36.         Vector vect = current.getVector();
  37.         builder.append(String.format("%dx^%dy^%dz^%d", head.getK(), vect.getX(), vect.getY(), vect.getZ()));
  38.         while (current.hasNext()) {
  39.             current = current.getNext();
  40.             vect = current.getVector();
  41.             builder.append(String.format("%s%dx^%dy^%dz^%d", current.getK() > 0 ? "+" : "", current.getK(), vect.getX(), vect.getY(), vect.getZ()));
  42.         }
  43.         return builder.toString();
  44.     }
  45.  
  46.     public void insert(int coef, int deg1, int deg2, int deg3) {
  47.         Element toInsert = new Element(coef, new Vector(deg1, deg2, deg3));
  48.         Element current = head;
  49.         if (head.equals(toInsert)) {
  50.             toInsert.setNext(head.getNext());
  51.             head = toInsert;
  52.             return;
  53.         }
  54.         while (current.hasNext()) {
  55.             current = current.getNext();
  56.             if (current.equals(toInsert)) {
  57.                 toInsert.setNext(current.getNext());
  58.                 current = toInsert;
  59.                 return;
  60.             }
  61.         }
  62.         current.setNext(toInsert);
  63.     }
  64.  
  65.     public void delete(int coef, int deg1, int deg2, int deg3) {
  66.         Element toDelete = new Element(coef, new Vector(deg1, deg2, deg3));
  67.         Element current = head;
  68.         if (head.equals(toDelete)) {
  69.             if (head.hasNext()) {
  70.                 head = head.getNext();
  71.             } else head = null;
  72.             return;
  73.         }
  74.         Element previous;
  75.         while (current.hasNext()) {
  76.             previous = current;
  77.             current = current.getNext();
  78.             if (current.equals(toDelete)) {
  79.                 previous.setNext(current.hasNext() ? current.getNext() : null);
  80.                 return;
  81.             }
  82.         }
  83.         System.out.println("Такого элемента не существует");
  84.  
  85.     }
  86.  
  87.     public void derivative(int i) {
  88.         switch (i) {
  89.             case 1:
  90.                 derivativeX();
  91.                 break;
  92.             case 2:
  93.                 derivativeY();
  94.                 break;
  95.             case 3:
  96.                 derivativeZ();
  97.                 break;
  98.             default:
  99.                 System.out.println("Неверный ввод");
  100.         }
  101.  
  102.     }
  103.  
  104.     private void derivativeX() {
  105.         Element current = head;
  106.         current.setK(current.getK() * current.getVector().getX());
  107.         current.getVector().setX(current.getVector().getX() - 1);
  108.         while (current.hasNext()) {
  109.             current = current.getNext();
  110.             current.setK(current.getK() * current.getVector().getX());
  111.             current.getVector().setX(current.getVector().getX() - 1);
  112.         }
  113.  
  114.     }
  115.  
  116.     private void derivativeY() {
  117.         Element current = head;
  118.         current.setK(current.getK() * current.getVector().getY());
  119.         current.getVector().setY(current.getVector().getY() - 1);
  120.         while (current.hasNext()) {
  121.             current = current.getNext();
  122.             current.setK(current.getK() * current.getVector().getY());
  123.             current.getVector().setY(current.getVector().getY() - 1);
  124.         }
  125.  
  126.     }
  127.  
  128.  
  129.     private void derivativeZ() {
  130.         Element current = head;
  131.         current.setK(current.getK() * current.getVector().getZ());
  132.         current.getVector().setZ(current.getVector().getZ() - 1);
  133.         while (current.hasNext()) {
  134.             current = current.getNext();
  135.             current.setK(current.getK() * current.getVector().getZ());
  136.             current.getVector().setZ(current.getVector().getZ() - 1);
  137.         }
  138.     }
  139.  
  140.     public int value(int x, int y, int z) {
  141.         int value = 0;
  142.         Element current = head;
  143.         value += valueForElement(head, x, y, z);
  144.         while (current.hasNext()){
  145.             current = current.getNext();
  146.             value+=valueForElement(current, x, y, z);
  147.         }
  148.         return value;
  149.     }
  150.  
  151.     private int valueForElement(Element element, int x, int y, int z) {
  152.         int value = element.getK();
  153.         for (int i = 0; i < element.getVector().getX(); i++) {
  154.             value *= x;
  155.         }
  156.         for (int i = 0; i < element.getVector().getY(); i++) {
  157.             value *= y;
  158.         }
  159.         for (int i = 0; i < element.getVector().getZ(); i++) {
  160.             value *= z;
  161.         }
  162.         return value;
  163.     }
  164.  
  165. }
  166.  
  167. class Vector {
  168.     private int x;
  169.     private int y;
  170.     private int z;
  171.  
  172.     public Vector(int x, int y, int z) {
  173.         this.x = x;
  174.         this.y = y;
  175.         this.z = z;
  176.     }
  177.  
  178.     public int getX() {
  179.         return x;
  180.     }
  181.  
  182.     public void setX(int x) {
  183.         this.x = x;
  184.     }
  185.  
  186.     public int getY() {
  187.         return y;
  188.     }
  189.  
  190.     public void setY(int y) {
  191.         this.y = y;
  192.     }
  193.  
  194.     public int getZ() {
  195.         return z;
  196.     }
  197.  
  198.     public void setZ(int z) {
  199.         this.z = z;
  200.     }
  201.  
  202.     @Override
  203.     public boolean equals(Object o) {
  204.         if (this == o) return true;
  205.         if (o == null || getClass() != o.getClass()) return false;
  206.         Vector vector = (Vector) o;
  207.         return x == vector.x &&
  208.                 y == vector.y &&
  209.                 z == vector.z;
  210.     }
  211.  
  212. }
  213.  
  214. class Element {
  215.     private Vector vector;
  216.     private int k;
  217.     private Element next;
  218.  
  219.     public Element(int k, Vector vector) {
  220.         this.k = k;
  221.         this.vector = vector;
  222.     }
  223.  
  224.     public boolean hasNext() {
  225.         return !(this.getNext() == null);
  226.     }
  227.  
  228.  
  229.     public Vector getVector() {
  230.         return vector;
  231.     }
  232.  
  233.     public void setVector(Vector vector) {
  234.         this.vector = vector;
  235.     }
  236.  
  237.     public int getK() {
  238.         return k;
  239.     }
  240.  
  241.     public void setK(int k) {
  242.         this.k = k;
  243.     }
  244.  
  245.     public Element getNext() {
  246.         return next;
  247.     }
  248.  
  249.     public void setNext(Element next) {
  250.         this.next = next;
  251.     }
  252.  
  253.     @Override
  254.     public boolean equals(Object o) {
  255.         if (this == o) return true;
  256.         if (o == null || getClass() != o.getClass()) return false;
  257.         Element element = (Element) o;
  258.         return k == element.k &&
  259.                 vector.equals(element.vector);
  260.     }
  261.  
  262. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement