Приложение А1. Лабораторная работа №1



Исходный код класса Main

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
   String info =
           "Лабораторная работа №1 \n " +
           "Вариант 3 \n " +
           "Соколов Евгений Александрович \n " +
           "Условие: Ввести n строк с консоли. Вывести на консоль те строки, \n " +
           "длина которых меньше средней, также их длины.";
   System.out.println(info);
   for (int a = 0; a < 5; a++) {
       System.out.println(" \n ============= " + (a + 1) + " ===============");
       Scanner scanner = new Scanner(System.in); // для считывания с консоли
      
int count;
       do {
           try {   // в блоке try помещается код, который может выкинуть exception. Тут это если передать вместо числа строку(ее нельзя записать в int)
              
System.out.print("Введите количество строк:"); // Приглашение на ввод
              
count = Integer.parseInt(scanner.next()); // читаем кол-во строк
               
break; // выйдет из цикла
          
} catch (NumberFormatException e) { // если ошибка произошла, будет выполнен код в catch
              
System.out.println("Не число."); // вывод сообщения об ошибке
          
}
       } while (true);

       scanner.nextLine(); // nextInt не пихает в поток символ конца строки, поэтому nextLine не ждет ввода.

       Str str = new Str(); // создаем класс

       for (int i = 0; i < count; i++) { // для всех строк введенных с клавиатуры
          
System.out.println("Введите " + (i + 1) + " строку"); // вывод номер строки
          
str.add(scanner.nextLine()); // добавляем строку в обьект класса
      
}

       str.print(); // вызывает метод принт

       System.out.print(" \n Повторить? да/нет: ");
       if (scanner.nextLine().equals("нет")) {
           return;
       }
   }
}
}

 

Исходный код класса Str

import java.util.ArrayList;
import java.util.List;

public class Str {
private List<String> list; // список строк
private double average// средняя длинна

public Str() { // конструктор
  
list = new ArrayList<>(); // создаем пустой лист
  
average = 0; // начальное значение средней длинны 0
}

void add(String string) { // метод для добавления новых строк
  
list.add(string); // добавляет в лист новую строку
  
calculateAverage(); // т.к. добавилась новая строка вызывается метод для пересчета средней длинны
}

private void calculateAverage() { // считает среднюю длину
  
int commonLength = 0; // общая длинна всех строк
  
for (String s : list) { // для каждой строки в списке
      
commonLength += s.length();    // сумма длин строк
  
}
   average = ((double) commonLength) / list.size(); // средняя длинна = общая длинна всех строк / на кол-во строк
}

public void print(){ // метод вывода информации
  
System.out.print("Средние: " + average); // вывод средней длины
  
for (String s : list) {  // для каждой строки
      
if (s.length() < average){ // если длина строки меньше средней
          
System.out.print(s + " \n Длина: " + s.length()); // вывод строки и ее длины
      
}
   }
}
}

 

Приложение А2. Лабораторная работа №2

Исходный код класса Main

import javafx.geometry.Point3D;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
   String info =

           "Лабораторная работа№2 \n " +
           "Вариант3 \n " +
           "Соколов Евгений Александрович \n " +
           "Условие:Класс вектор,члены класса - 3 прямоугольные декартовые координаты, методы-конструктор, \n " +
           "методы вывода вектора, метод вычисления длины вектора,методы сложения(+), скалярное(%)и векторное(*) произведение векторов. \n " +
           "Исходные данные-a={ax,ay,az},b={bx,by,bz}, c={cx,cy, cz}. Результаты-r=(a+b)*c, t=(a+b)c. Найти длины исходных и результирующего векторов.";
   System.out.println(info);

   Scanner scanner = new Scanner(System.in);
   while (true) {
       System.out.println("============= ======== ===============");
       Random rnd = new Random();
       Vector a = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10))); // создание векторов для примера
      
Vector b = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10)));
       Vector c = new Vector(new Point3D(rnd.nextInt(10), rnd.nextInt(10), rnd.nextInt(10)));

       System.out.printf("норма для вектора a  %.2f \n ", a.norm()); // вывод длины вектора
      
System.out.printf("норма для вектора b  %.2f \n ", b.norm());
       System.out.printf("норма для вектора c  %.2f \n ", c.norm());

       Vector r = a.addition(b).vectorMultiplication(c); // (a+b) и векторное умножение на c
      
r.info(); // вывод информации о векторе r

       double t = a.addition(b).scalarMultiplication(c); // (a+b)c
      
System.out.printf("(a+b)c = %.2f \n ", t);

       System.out.print("Повторить? да/нет:");
       if (scanner.nextLine().equals("нет")) {
           return;
          }
   }
}
}

Исходный код класса Vector

import javafx.geometry.Point3D;

public class Vector {   // класс вектор
private Point3D basis; // ортогональные координаты вектора. 3 точки

public Vector(Point3D basis) { // конструктор, который принимает обьект класса Point3D, который хранит в себе 3 точки
  
this.basis = basis; // сохраняем то что было в аргументе, в переменую, котороя находится в этом классе
}

public double cosAlpha() {   // направляющие косинусы вектора
  
return basis.getX() / norm();
}

public double cosBeta() {
   return basis.getY() / norm();
}

public double cosGamma() {
   return basis.getZ() / norm();
}

public double norm() { //норма, модуль или длинна вектора
  
return Math.sqrt(basis.getX() * basis.getX() + basis.getY() * basis.getY() + basis.getZ() * basis.getZ());

}

public Vector addition(Vector other) { // сложение векторов, в качестве аргумента - другой обьект класса
  
double i = basis.getX() + other.basis.getX(); // получаем новые координаты
  
double j = basis.getY() + other.basis.getY();
   double k = basis.getZ() + other.basis.getZ();

   Point3D newBasis = new Point3D(i, j, k); // сохдаем новый экхемпляр класса Point3D, для того чтобы передать его в качестве аргумента при создании нового вектора[см строку ниже]
  
return new Vector(newBasis); // вызываем конструктор класса Vector[это создает обьект, т.е. новый вектор с координатами, которые передавались в качестве аргумента] и возвращаем этот обьект[ссылку на него, еслу так понятней]
}

public double scalarMultiplication(Vector other) { // скалярное произведение векторов
  
return basis.getX() * other.basis.getX() + basis.getY() * other.basis.getY() + basis.getZ() * other.basis.getZ(); // результатом является число
}

public Vector vectorMultiplication(Vector other) { // векторное произведение
  
double i = basis.getY() * other.basis.getZ() - basis.getZ() * other.basis.getY(); //получаем координаты нового вектора
  
double j = basis.getZ() * other.basis.getX() - basis.getX() * other.basis.getZ();
   double k = basis.getX() * other.basis.getY() - basis.getY() * other.basis.getX();

   Point3D newBasis = new Point3D(i, j, k); // создаем экземпляр[обьект] класса Point3D
  
return new Vector(newBasis); // вызываем конструктор[создаем] обьект[экземпляр] класса Vector и возвращаем его
}

public void info() { // выводит информацию о данном векторе
  
System.out.println("###");
   System.out.println("Характеристика вектора");

   System.out.printf("Базис вектора: (%.2f; %.2f; %.2f) \n ", basis.getX(), basis.getY(), basis.getZ());

   System.out.println("Направление косинусов вектора:");
   System.out.printf("Альфа %.2f \n ", cosAlpha());
   System.out.printf("Бета %.2f \n ", cosBeta());
   System.out.printf("Гамма %.2f \n ", cosGamma());
   System.out.println("###");
}
}

 

 


Дата добавления: 2018-11-24; просмотров: 258; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!