Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.26 KB | None | 0 0
  1. /**
  2.  * קלט: שני מספרים שלמים ופעולה חשבונית
  3.  * (חיבור, חיסור, כפל, חזקה, חילוק ושארית)
  4.  * פלט: הפעולה החשבונית על שני המספרים עם תוצאה.
  5.  * יוסי זלנסקי ה3
  6.  */
  7. import java.util.*;
  8. public class Calculator {
  9.      static Scanner in = new Scanner (System.in);
  10.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את סכומם
  11.     public static int add (int a,int b){
  12.         return a+b;
  13.     }
  14.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את הפרשם
  15.     public static int sub (int a, int b){
  16.         return a-b;
  17.     }
  18.     //פעולה המקבלת שני מספרים שלמים חיובים ומחזירה את מכפלתם
  19.     //הנחה: המספר השני אינו שלילי
  20.     public static int multi (int a, int b){
  21.         int z = 0;
  22.         for (int i = 1 ; i <= b ; i++)
  23.         {
  24.         z = z + a;
  25.         }
  26.         return z;
  27.     }
  28.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את המספר הראשון בחזקת השני
  29.     //הנחה: המספר השני אינו שלילי
  30.     public static int pow (int a, int b){
  31.         int z = a;
  32.         if (b != 0){
  33.             for (int i = 1; i < b; i++){
  34.                 a = a * z;
  35.             }
  36.         }
  37.         else
  38.             a = 1;
  39.         return a;
  40.     }
  41.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את המספר הראשון חלקי השני
  42.     //הנחה: המספר השני שונה מאפס
  43.     public static double divide (double a, double b){
  44.         return a/b;
  45.     }
  46.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה
  47.     //את המספר הראשון חלקי המספר השני
  48.     public static int div (int a, int b){
  49.         int counter = 0;
  50.         while (a >= b){
  51.             a = a - b;
  52.             counter ++;
  53.         }  
  54.         return counter;
  55.     }
  56.     //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה
  57.     // את שארית המספר הראשון בשני
  58.     public static int mod (int a, int b){
  59.         while (a >= b){
  60.             a = a - b;
  61.         }
  62.         return a;
  63.     }
  64.     //פעולה המקבלת מספר חיובי שלם או ממשי ומחזירה את השורש שלו
  65.     //הנחה: המספר השני ישמש לסטיית השגיאה המותרת
  66.     public static double sqrt (double a, double b){
  67.         double p, x, y, err;
  68.         p = a;
  69.         err = b;
  70.         x = 1;
  71.         y = p / x;
  72.        
  73.         while (Math.abs(x - y) > err){
  74.             x = (x + y) / 2;
  75.             y = p / x;
  76.         }
  77.         return x;
  78.     }
  79.     public static int getPositiveNum (){
  80.         int y;
  81.         do {
  82.             System.out.print("Enter number that positive -> ");
  83.             y = in.nextInt();
  84.         }
  85.         while (y < 0);
  86.         return y;
  87.     }
  88.     public static double getNoneZeroNum (){
  89.         double y;
  90.         do{
  91.             System.out.print("Enter 2nd number that bigger then 0 -> ");
  92.             y = in.nextDouble();
  93.         }
  94.         while (y <= 0);
  95.         return y;
  96.     }
  97.     public static char getOp(){
  98.         char op;
  99.         do{
  100.             System.out.print("Enter operation (+/-/x/^/:/%/#/&) -> ");
  101.             op = in.next().charAt(0);
  102.         }
  103.         while (op != '+' && op != '-' && op != 'x' && op != ':' && op != '%'
  104.                 && op != '^' && op != '#' && op != '&');
  105.             return op;
  106.     }
  107.     public static void main(String[] args) {
  108.         int x = 0, y = 0;
  109.         double result = 0, y1 = 0;
  110.         char op;
  111.  
  112.         op = getOp();
  113.        
  114.         if (op == '+' || op == '-' || op == 'x' || op == '^'){
  115.             System.out.print("Enter 1st number -> ");
  116.             x = in.nextInt();
  117.            
  118.             y = getPositiveNum();
  119.            
  120.             switch (op){
  121.             case '+': result = add(x,y); break;
  122.             case '-': result = sub(x,y); break;
  123.             case 'x': result = multi(x,y); break;
  124.             case '^': result = pow(x,y); break;
  125.             }
  126.         }
  127.         else if (op != '&') {
  128.        
  129.             System.out.print("Enter 1st number -> ");
  130.             x = in.nextInt();
  131.        
  132.             y = (int) getNoneZeroNum();
  133.            
  134.         switch (op){
  135.         case '#': result = div(x,y); break;
  136.         case '%': result = mod(x,y); break;
  137.         case ':': result = divide(x,y); break;
  138.         }
  139.         }
  140.         else {
  141.             x = getPositiveNum();
  142.        
  143.             y1 = getNoneZeroNum();
  144.             result = sqrt(x,y1);
  145.  
  146.         }
  147.        
  148.         if (result % 1 == 0)
  149.             System.out.println("\n" + x + " " + op + " " + y
  150.                     + " = " + (int)result);
  151.         else if (op != '&')
  152.             System.out.println("\n" + x + " " + op + " " + y
  153.                     + " = " + result);
  154.             else
  155.                 System.out.println("\n" + x + " " + op + " " + y1
  156.                         + " = " + result);
  157.     }
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement