Добавил:
sava514
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы заочникам Яковлев / SiAOD(java) / src / Task1 / Main
.java package Task1;
import java.util.Scanner;
public class Main {
/*Лабораторная работа №1
*
* Указатели и списки.
*
* Задание разработать:
* логическую функцию Equality(p,q), проверяющую равенство многочленов p и q;
* функцию Meaning(p, x), вычисляющую значение многочлена в целочисленной точке х;
* процедуру Add(p,q,r) вычисления суммы многочленов q и r, результат – многочлен p.
*
*
* Выполнил Беликов В.С. гр. 681075
*/
private static Scanner scanner = new Scanner(System.in);
// функцию Meaning(p, x), вычисляющую значение многочлена в целочисленной точке х;
private static int meaning(Element p, int x) {
int result = 0;
Element pStart = p;
do {
p = p.getNext();
result += p.getMultiplier() * (int) Math.pow(x, p.getPower());
System.out.println(p.getMultiplier() + "*" + x + "^" + p.getPower() + "="
+ (p.getMultiplier() * (int) Math.pow(x, p.getPower())));
} while (p.getNext() != null);
p = pStart;
return result;
}
// процедуру Add(p,q,r) вычисления суммы многочленов q и r, результат – многочлен p.
private static Element add(Element p, Element q) {
Element r = new Element(0, 0);
Element rStart = r;
Element qStart = q;
Element pStart = p;
while (p != null) {
boolean ownMult = true;
while (q != null) {
if (p.getPower() == q.getPower() && q.getMultiplier() != 0 && p.getMultiplier() != 0) {
Element next = new Element(p.getMultiplier() + q.getMultiplier(), p.getPower());
ownMult = false;
next.setBack(r);
r.setNext(next);
r = r.getNext();
}
q = q.getNext();
}
if (ownMult) {
if (p.getMultiplier() != 0) {
Element next = new Element(p.getMultiplier(), p.getPower());
next.setBack(r);
r.setNext(next);
r = r.getNext();
}
}
q = qStart;
p = p.getNext();
}
p = pStart;
r = rStart;
return r;
}
// Вывод многочлена в консоль
private static void print(Element el) {
Element startEl = el;
while (el != null) {
if (el.getMultiplier() != 0) {
System.out.print(el.getMultiplier() + (el.getPower() != 0 ? "x^" + el.getPower() : ""));
if (el.getNext() != null) {
System.out.print(el.getNext().getMultiplier() > 0 ? "+" : "");
}
}
el = el.getNext();
}
el = startEl;
System.out.println();
System.out.println();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Element p = new Element(0, 0);
int countElement = 0;
System.out.println("Введите количество элементов в многочлене P");
countElement = scanner.nextInt();
System.out.println("Введите многочлен P:");
input(p, countElement);
returnToStart(p);
System.out.println();
System.out.println();
Element q = new Element(0, 0);
System.out.println("Введите количество элементов в многочлене Q");
countElement = scanner.nextInt();
System.out.println("Введите многочлен Q:");
input(q, countElement);
returnToStart(q);
System.out.println("Многочлен P: ");
print(p);
System.out.println("Многочлен Q: ");
print(q);
System.out.println("Сумма многочленов P и Q: ");
print(add(p, q));
System.out.println("Многочлены P и Q " + (equality(p, q) ? "равны" : "не равны"));
System.out.println("Введите x: ");
int x = scanner.nextInt();
System.out.println("Результат в многочлена P в точке x: " + meaning(p, x));
System.out.println("Результат в многочлена Q в точке x: " + meaning(q, x));
}
// Умножение многочлена на число
private static Element mul(Element p, int number) {
Element r = new Element(0, 0);
Element rStart = r;
Element pStart = p;
while (p != null) {
Element next = new Element(number * p.getMultiplier(), p.getPower());
next.setBack(r);
r.setNext(next);
r = r.getNext();
p = p.getNext();
}
r = rStart;
p = pStart;
return r;
}
// Сравнение двух многочленнов
private static boolean equality(Element p, Element q) {
Element r = add(p, mul(q, -1));
while (r != null) {
if (r.getMultiplier() != 0){
return false;
}
r = r.getNext();
}
return true;
}
// Ввод многочлена
private static void input(Element p, int countElement) {
for (int i = 0; i < countElement; i++) {
System.out.println("Введите коэффицент " + (i + 1) + "-го элемента: ");
int mult = scanner.nextInt();
System.out.println("Введите степень " + (i + 1) + "-го элемента: ");
int power = scanner.nextInt();
Element next = new Element(mult, power);
next.setBack(p);
p.setNext(next);
p = next;
}
}
// Возвращение к началу списка
private static void returnToStart(Element el) {
while (el.getBack() != null) {
el = el.getBack();
}
}
}
import java.util.Scanner;
public class Main {
/*Лабораторная работа №1
*
* Указатели и списки.
*
* Задание разработать:
* логическую функцию Equality(p,q), проверяющую равенство многочленов p и q;
* функцию Meaning(p, x), вычисляющую значение многочлена в целочисленной точке х;
* процедуру Add(p,q,r) вычисления суммы многочленов q и r, результат – многочлен p.
*
*
* Выполнил Беликов В.С. гр. 681075
*/
private static Scanner scanner = new Scanner(System.in);
// функцию Meaning(p, x), вычисляющую значение многочлена в целочисленной точке х;
private static int meaning(Element p, int x) {
int result = 0;
Element pStart = p;
do {
p = p.getNext();
result += p.getMultiplier() * (int) Math.pow(x, p.getPower());
System.out.println(p.getMultiplier() + "*" + x + "^" + p.getPower() + "="
+ (p.getMultiplier() * (int) Math.pow(x, p.getPower())));
} while (p.getNext() != null);
p = pStart;
return result;
}
// процедуру Add(p,q,r) вычисления суммы многочленов q и r, результат – многочлен p.
private static Element add(Element p, Element q) {
Element r = new Element(0, 0);
Element rStart = r;
Element qStart = q;
Element pStart = p;
while (p != null) {
boolean ownMult = true;
while (q != null) {
if (p.getPower() == q.getPower() && q.getMultiplier() != 0 && p.getMultiplier() != 0) {
Element next = new Element(p.getMultiplier() + q.getMultiplier(), p.getPower());
ownMult = false;
next.setBack(r);
r.setNext(next);
r = r.getNext();
}
q = q.getNext();
}
if (ownMult) {
if (p.getMultiplier() != 0) {
Element next = new Element(p.getMultiplier(), p.getPower());
next.setBack(r);
r.setNext(next);
r = r.getNext();
}
}
q = qStart;
p = p.getNext();
}
p = pStart;
r = rStart;
return r;
}
// Вывод многочлена в консоль
private static void print(Element el) {
Element startEl = el;
while (el != null) {
if (el.getMultiplier() != 0) {
System.out.print(el.getMultiplier() + (el.getPower() != 0 ? "x^" + el.getPower() : ""));
if (el.getNext() != null) {
System.out.print(el.getNext().getMultiplier() > 0 ? "+" : "");
}
}
el = el.getNext();
}
el = startEl;
System.out.println();
System.out.println();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Element p = new Element(0, 0);
int countElement = 0;
System.out.println("Введите количество элементов в многочлене P");
countElement = scanner.nextInt();
System.out.println("Введите многочлен P:");
input(p, countElement);
returnToStart(p);
System.out.println();
System.out.println();
Element q = new Element(0, 0);
System.out.println("Введите количество элементов в многочлене Q");
countElement = scanner.nextInt();
System.out.println("Введите многочлен Q:");
input(q, countElement);
returnToStart(q);
System.out.println("Многочлен P: ");
print(p);
System.out.println("Многочлен Q: ");
print(q);
System.out.println("Сумма многочленов P и Q: ");
print(add(p, q));
System.out.println("Многочлены P и Q " + (equality(p, q) ? "равны" : "не равны"));
System.out.println("Введите x: ");
int x = scanner.nextInt();
System.out.println("Результат в многочлена P в точке x: " + meaning(p, x));
System.out.println("Результат в многочлена Q в точке x: " + meaning(q, x));
}
// Умножение многочлена на число
private static Element mul(Element p, int number) {
Element r = new Element(0, 0);
Element rStart = r;
Element pStart = p;
while (p != null) {
Element next = new Element(number * p.getMultiplier(), p.getPower());
next.setBack(r);
r.setNext(next);
r = r.getNext();
p = p.getNext();
}
r = rStart;
p = pStart;
return r;
}
// Сравнение двух многочленнов
private static boolean equality(Element p, Element q) {
Element r = add(p, mul(q, -1));
while (r != null) {
if (r.getMultiplier() != 0){
return false;
}
r = r.getNext();
}
return true;
}
// Ввод многочлена
private static void input(Element p, int countElement) {
for (int i = 0; i < countElement; i++) {
System.out.println("Введите коэффицент " + (i + 1) + "-го элемента: ");
int mult = scanner.nextInt();
System.out.println("Введите степень " + (i + 1) + "-го элемента: ");
int power = scanner.nextInt();
Element next = new Element(mult, power);
next.setBack(p);
p.setNext(next);
p = next;
}
}
// Возвращение к началу списка
private static void returnToStart(Element el) {
while (el.getBack() != null) {
el = el.getBack();
}
}
}