Advertisement
Teammasik

laba3_OOP

Oct 26th, 2023 (edited)
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.11 KB | None | 0 0
  1. //Calculator class
  2. import java.util.Scanner;
  3.  
  4. public class Calculator {
  5.     public static void main(String[] args) {
  6.         Scanner input = new Scanner(System.in);
  7.         int x,n;
  8.         Double num,answer = 0.0;
  9.  
  10.  
  11.         while (true){
  12.             System.out.print("Введите число 1, если вычисляем значение функции, 2 если вычисялем на интервале ");
  13.             x = input.nextInt();
  14.             System.out.println("Введите число 1, для синуса, 2 для косинуса, 3 для тангенса, 4 для котангенса\n5 для корня");
  15.             if (x == 1) {
  16.                 n = input.nextInt();
  17.                 System.out.print("Введите число: ");
  18.                 num = input.nextDouble();
  19.                 Function func = switchCase(n);
  20.                 if (func.calculated(num) == null){
  21.                     System.out.println("Попал в точку разрыва, прекращаю работу ");
  22.                 }
  23.                 else{
  24.                     System.out.println(func.calculated(num));
  25.                 }
  26.             } else if (x==2) {
  27.                 n = input.nextInt();
  28.                 System.out.print("Введите границы и интервал: ");
  29.                 int border1 = input.nextInt();
  30.                 int border2 = input.nextInt();
  31.                 int interv = input.nextInt();
  32.                 Function func = switchCase(n);
  33.                 for (int i = border1; i <= border2; i+=interv) {
  34.                     if (func.calculated(i) == null){
  35.                         System.out.println("Попал в точку разрыва, прекращаю работу ");
  36.                         break;
  37.                     }
  38.                     answer += func.calculated(i);
  39.                 }
  40.                 System.out.println(answer);
  41.  
  42.  
  43.             }
  44.             else{
  45.                 break;
  46.             }
  47.         }
  48.     }
  49.  
  50.     static Function switchCase(int n){
  51.         Function func;
  52.         switch (n){
  53.             case 1:
  54.                 func = new Sinus();
  55.                 break;
  56.             case 2:
  57.                 func = new Cosinus();
  58.                 break;
  59.             case 3:
  60.                 func = new Tang();
  61.                 break;
  62.             case 4:
  63.                 func = new Cotang();
  64.                 break;
  65.             case 5:
  66.                 func = new Root();
  67.                 break;
  68.             default:func=null;break;
  69.         }
  70.         return func;
  71.     }
  72.  
  73. }
  74.  
  75.  
  76. //class Function
  77. public class Function {
  78.     boolean isCalculatable(double value) {
  79.         return true;
  80.     };
  81.  
  82.     Double calculated(double value){
  83.         return null;
  84.     };
  85. }
  86.  
  87. class Sinus extends  Function{
  88.     @Override
  89.     boolean isCalculatable(double value) {
  90.         return true;
  91.     }
  92.  
  93.     @Override
  94.     Double calculated(double value) {
  95.         if(isCalculatable(value)){
  96.             return Math.sin(value);
  97.         }
  98.         return null;
  99.     }
  100. }
  101.  
  102. class Cosinus extends  Function{
  103.  
  104.     @Override
  105.     boolean isCalculatable(double value) {
  106.         return true;
  107.     }
  108.  
  109.     @Override
  110.     Double calculated(double value) {
  111.         return Math.cos(value);
  112.     }
  113.  
  114. }
  115.  
  116. class Tang extends  Function{
  117.  
  118.     @Override
  119.     boolean isCalculatable(double value) {
  120.         return true;
  121.     }
  122.  
  123.     @Override
  124.     Double calculated(double value) {
  125.         return Math.tan(value);
  126.     }
  127. }
  128.  
  129. class Cotang extends  Function{
  130.     @Override
  131.     boolean isCalculatable(double value) {
  132.         if (Math.tan(value) == 0) return false; return true;
  133.     }
  134.  
  135.     @Override
  136.     Double calculated(double value) {
  137.         if(isCalculatable(value)){
  138.             return 1/Math.tan(value);
  139.         }
  140.         return null;
  141.     }
  142. }
  143.  
  144. class Root extends  Function{
  145.     @Override
  146.     boolean isCalculatable(double value) {
  147.         if (value>=0) return true; return false;
  148.     }
  149.  
  150.     @Override
  151.     Double calculated(double value) {
  152.         if(isCalculatable(value)){
  153.             return Math.pow(value, 0.5);
  154.         }
  155.         return null;
  156.     }
  157. }
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement