Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * קלט: שני מספרים שלמים ופעולה חשבונית
- * (חיבור, חיסור, כפל, חזקה, חילוק ושארית)
- * פלט: הפעולה החשבונית על שני המספרים עם תוצאה.
- * יוסי זלנסקי ה3
- */
- import java.util.*;
- public class Calculator {
- static Scanner in = new Scanner (System.in);
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את סכומם
- public static int add (int a,int b){
- return a+b;
- }
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את הפרשם
- public static int sub (int a, int b){
- return a-b;
- }
- //פעולה המקבלת שני מספרים שלמים חיובים ומחזירה את מכפלתם
- //הנחה: המספר השני אינו שלילי
- public static int multi (int a, int b){
- int z = 0;
- for (int i = 1 ; i <= b ; i++)
- {
- z = z + a;
- }
- return z;
- }
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את המספר הראשון בחזקת השני
- //הנחה: המספר השני אינו שלילי
- public static int pow (int a, int b){
- int z = a;
- if (b != 0){
- for (int i = 1; i < b; i++){
- a = a * z;
- }
- }
- else
- a = 1;
- return a;
- }
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה את המספר הראשון חלקי השני
- //הנחה: המספר השני שונה מאפס
- public static double divide (double a, double b){
- return a/b;
- }
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה
- //את המספר הראשון חלקי המספר השני
- public static int div (int a, int b){
- int counter = 0;
- while (a >= b){
- a = a - b;
- counter ++;
- }
- return counter;
- }
- //פעולה המקבלת שני מספרים שלמים חיוביים ומחזירה
- // את שארית המספר הראשון בשני
- public static int mod (int a, int b){
- while (a >= b){
- a = a - b;
- }
- return a;
- }
- //פעולה המקבלת מספר חיובי שלם או ממשי ומחזירה את השורש שלו
- //הנחה: המספר השני ישמש לסטיית השגיאה המותרת
- public static double sqrt (double a, double b){
- double p, x, y, err;
- p = a;
- err = b;
- x = 1;
- y = p / x;
- while (Math.abs(x - y) > err){
- x = (x + y) / 2;
- y = p / x;
- }
- return x;
- }
- public static int getPositiveNum (){
- int y;
- do {
- System.out.print("Enter number that positive -> ");
- y = in.nextInt();
- }
- while (y < 0);
- return y;
- }
- public static double getNoneZeroNum (){
- double y;
- do{
- System.out.print("Enter 2nd number that bigger then 0 -> ");
- y = in.nextDouble();
- }
- while (y <= 0);
- return y;
- }
- public static char getOp(){
- char op;
- do{
- System.out.print("Enter operation (+/-/x/^/:/%/#/&) -> ");
- op = in.next().charAt(0);
- }
- while (op != '+' && op != '-' && op != 'x' && op != ':' && op != '%'
- && op != '^' && op != '#' && op != '&');
- return op;
- }
- public static void main(String[] args) {
- int x = 0, y = 0;
- double result = 0, y1 = 0;
- char op;
- op = getOp();
- if (op == '+' || op == '-' || op == 'x' || op == '^'){
- System.out.print("Enter 1st number -> ");
- x = in.nextInt();
- y = getPositiveNum();
- switch (op){
- case '+': result = add(x,y); break;
- case '-': result = sub(x,y); break;
- case 'x': result = multi(x,y); break;
- case '^': result = pow(x,y); break;
- }
- }
- else if (op != '&') {
- System.out.print("Enter 1st number -> ");
- x = in.nextInt();
- y = (int) getNoneZeroNum();
- switch (op){
- case '#': result = div(x,y); break;
- case '%': result = mod(x,y); break;
- case ':': result = divide(x,y); break;
- }
- }
- else {
- x = getPositiveNum();
- y1 = getNoneZeroNum();
- result = sqrt(x,y1);
- }
- if (result % 1 == 0)
- System.out.println("\n" + x + " " + op + " " + y
- + " = " + (int)result);
- else if (op != '&')
- System.out.println("\n" + x + " " + op + " " + y
- + " = " + result);
- else
- System.out.println("\n" + x + " " + op + " " + y1
- + " = " + result);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement