Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package forLiza;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.util.Scanner;
- public class Polinom3 {
- private Element head;
- public Element getHead() {
- return head;
- }
- public void setHead(Element head) {
- this.head = head;
- }
- public Polinom3(String text) throws FileNotFoundException {
- Scanner sc = new Scanner(new File(text));
- String[] headParams = sc.nextLine().split(" ");
- this.head = new Element(Integer.valueOf(headParams[0]), new Vector(Integer.valueOf(headParams[1]), Integer.valueOf(headParams[2]), Integer.valueOf(headParams[3])));
- Element current = head;
- while (sc.hasNextLine()) {
- headParams = sc.nextLine().split(" ");
- current.setNext(new Element(Integer.valueOf(headParams[0]), new Vector(Integer.valueOf(headParams[1]), Integer.valueOf(headParams[2]), Integer.valueOf(headParams[3]))));
- current = current.getNext();
- }
- }
- @Override
- public String toString() {
- Element current = head;
- StringBuilder builder = new StringBuilder();
- Vector vect = current.getVector();
- builder.append(String.format("%dx^%dy^%dz^%d", head.getK(), vect.getX(), vect.getY(), vect.getZ()));
- while (current.hasNext()) {
- current = current.getNext();
- vect = current.getVector();
- builder.append(String.format("%s%dx^%dy^%dz^%d", current.getK() > 0 ? "+" : "", current.getK(), vect.getX(), vect.getY(), vect.getZ()));
- }
- return builder.toString();
- }
- public void insert(int coef, int deg1, int deg2, int deg3) {
- Element toInsert = new Element(coef, new Vector(deg1, deg2, deg3));
- Element current = head;
- if (head.equals(toInsert)) {
- toInsert.setNext(head.getNext());
- head = toInsert;
- return;
- }
- while (current.hasNext()) {
- current = current.getNext();
- if (current.equals(toInsert)) {
- toInsert.setNext(current.getNext());
- current = toInsert;
- return;
- }
- }
- current.setNext(toInsert);
- }
- public void delete(int coef, int deg1, int deg2, int deg3) {
- Element toDelete = new Element(coef, new Vector(deg1, deg2, deg3));
- Element current = head;
- if (head.equals(toDelete)) {
- if (head.hasNext()) {
- head = head.getNext();
- } else head = null;
- return;
- }
- Element previous;
- while (current.hasNext()) {
- previous = current;
- current = current.getNext();
- if (current.equals(toDelete)) {
- previous.setNext(current.hasNext() ? current.getNext() : null);
- return;
- }
- }
- System.out.println("Такого элемента не существует");
- }
- public void derivative(int i) {
- switch (i) {
- case 1:
- derivativeX();
- break;
- case 2:
- derivativeY();
- break;
- case 3:
- derivativeZ();
- break;
- default:
- System.out.println("Неверный ввод");
- }
- }
- private void derivativeX() {
- Element current = head;
- current.setK(current.getK() * current.getVector().getX());
- current.getVector().setX(current.getVector().getX() - 1);
- while (current.hasNext()) {
- current = current.getNext();
- current.setK(current.getK() * current.getVector().getX());
- current.getVector().setX(current.getVector().getX() - 1);
- }
- }
- private void derivativeY() {
- Element current = head;
- current.setK(current.getK() * current.getVector().getY());
- current.getVector().setY(current.getVector().getY() - 1);
- while (current.hasNext()) {
- current = current.getNext();
- current.setK(current.getK() * current.getVector().getY());
- current.getVector().setY(current.getVector().getY() - 1);
- }
- }
- private void derivativeZ() {
- Element current = head;
- current.setK(current.getK() * current.getVector().getZ());
- current.getVector().setZ(current.getVector().getZ() - 1);
- while (current.hasNext()) {
- current = current.getNext();
- current.setK(current.getK() * current.getVector().getZ());
- current.getVector().setZ(current.getVector().getZ() - 1);
- }
- }
- public int value(int x, int y, int z) {
- int value = 0;
- Element current = head;
- value += valueForElement(head, x, y, z);
- while (current.hasNext()){
- current = current.getNext();
- value+=valueForElement(current, x, y, z);
- }
- return value;
- }
- private int valueForElement(Element element, int x, int y, int z) {
- int value = element.getK();
- for (int i = 0; i < element.getVector().getX(); i++) {
- value *= x;
- }
- for (int i = 0; i < element.getVector().getY(); i++) {
- value *= y;
- }
- for (int i = 0; i < element.getVector().getZ(); i++) {
- value *= z;
- }
- return value;
- }
- }
- class Vector {
- private int x;
- private int y;
- private int z;
- public Vector(int x, int y, int z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- public int getY() {
- return y;
- }
- public void setY(int y) {
- this.y = y;
- }
- public int getZ() {
- return z;
- }
- public void setZ(int z) {
- this.z = z;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Vector vector = (Vector) o;
- return x == vector.x &&
- y == vector.y &&
- z == vector.z;
- }
- }
- class Element {
- private Vector vector;
- private int k;
- private Element next;
- public Element(int k, Vector vector) {
- this.k = k;
- this.vector = vector;
- }
- public boolean hasNext() {
- return !(this.getNext() == null);
- }
- public Vector getVector() {
- return vector;
- }
- public void setVector(Vector vector) {
- this.vector = vector;
- }
- public int getK() {
- return k;
- }
- public void setK(int k) {
- this.k = k;
- }
- public Element getNext() {
- return next;
- }
- public void setNext(Element next) {
- this.next = next;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Element element = (Element) o;
- return k == element.k &&
- vector.equals(element.vector);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement