diff --git a/P1.java b/P1.java index 57c0cd7..d1235a3 100644 --- a/P1.java +++ b/P1.java @@ -1,8 +1,92 @@ -class P1 { - public static void main(String[] _args) { - int a = 44; - int b = 56; +class Stack { + private int[] array; + private int top; + + public Stack(int capacity) { + array = new int[capacity]; + top = -1; + } + + public void push(int item) { + if (top == array.length - 1) { + System.out.println("Stack Overflow"); + } else { + array[++top] = item; + System.out.println("Pushed " + item + " to the stack"); + } + } + + public int pop() { + if (top == -1) { + System.out.println("Stack Underflow"); + return -1; + } else { + int item = array[top--]; + System.out.println("Popped " + item + " from the stack"); + return item; + } + } + + public boolean isEmpty() { + return top == -1; + } +} - System.out.println(a + " + " + b + " = " + (a + b)); - } -} \ No newline at end of file +class Queue { + private int[] array; + private int front; + private int rear; + private int size; + + public Queue(int capacity) { + array = new int[capacity]; + front = 0; + rear = -1; + size = 0; + } + + public void enqueue(int item) { + if (size == array.length) { + System.out.println("Queue is full"); + } else { + rear = (rear + 1) % array.length; + array[rear] = item; + size++; + System.out.println("Enqueued " + item + " to the queue"); + } + } + + public int dequeue() { + if (size == 0) { + System.out.println("Queue is empty"); + return -1; + } else { + int item = array[front]; + front = (front + 1) % array.length; + size--; + System.out.println("Dequeued " + item + " from the queue"); + return item; + } + } + + public boolean isEmpty() { + return size == 0; + } +} + +public class P1 { + public static void main(String[] args) { + Stack stack = new Stack(5); + stack.push(1); + stack.push(2); + stack.pop(); + stack.pop(); + stack.pop(); + + Queue queue = new Queue(5); + queue.enqueue(1); + queue.enqueue(-4); + queue.dequeue(); + queue.dequeue(); + } +} diff --git a/P2.java b/P2.java index 9275384..8526821 100644 --- a/P2.java +++ b/P2.java @@ -1,11 +1,15 @@ -class P2 { - public static void main(String[] _args) { - int a = 5, b, f; - b = f = a; +import java.util.StringTokenizer; - while (b-- > 1) - f *= b; +public class P2 { + public static void main(String[] args) { + String input = "Hello, I am Batu Khan and I am about to blow."; + + StringTokenizer tokenizer = new StringTokenizer(input, " ,"); - System.out.println(a + "! = " + f); - } -} \ No newline at end of file + int i = 0; + while (tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken(); + System.out.println("Token " + ++i + ": " + token); + } + } +} diff --git a/P3.java b/P3.java index 5941fc3..e558c4b 100644 --- a/P3.java +++ b/P3.java @@ -1,14 +1,27 @@ -class P3 { - public static void main(String[] _args) { - int a = 5, b = -5, c = 55, mx; +interface Animal { + void makeSound(); +} - if (a > b && a > c) - mx = a; - else if ( b > a && b > c) - mx = b; - else - mx = c; +class Cat implements Animal { + @Override + public void makeSound() { + System.out.println("Meow!"); + } +} - System.out.println("max(" + a + ", " + b + ", " + c + ") = " + mx); - } -} \ No newline at end of file +class Cow implements Animal { + @Override + public void makeSound() { + System.out.println("Moo!"); + } +} + +public class P3 { + public static void main(String[] args) { + Animal cat = new Cat(); + Animal cow = new Cow(); + + cat.makeSound(); + cow.makeSound(); + } +} diff --git a/P4.java b/P4.java index b4e7746..23a75cf 100644 --- a/P4.java +++ b/P4.java @@ -1,15 +1,57 @@ -class P4 { - public static void main(String[] _args) { - int n = 10; - int a = 0, b = 1; - System.out.println("First " + n + " elements of the fibonacci series:"); - new P4().fibo(n, a, b); - } +class ProducerConsumer { + private int limit = 5; + private int tmp = 0; + private int n = 0; + private int m = 0; + - void fibo(int n, int a, int b) { - if (n == 0) - return; - System.out.println(a); - fibo(n - 1, b, a + b); + public void produce() throws InterruptedException { + int value = 0; + while (n++ < limit * 2) { + synchronized (this) { + while (tmp == limit) { + wait(); + } + System.out.println("Producer produced: " + tmp++); + notify(); + } + } } -} \ No newline at end of file + + public void consume() throws InterruptedException { + while (m++ < limit * 2) { + synchronized (this) { + while (tmp == 0) { + wait(); + } + System.out.println("Consumer consumed: " + --tmp); + notify(); + } + } + } +} + +public class P4 { + public static void main(String[] args) { + ProducerConsumer pc = new ProducerConsumer(); + + Thread producerThread = new Thread(() -> { + try { + pc.produce(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }); + + Thread consumerThread = new Thread(() -> { + try { + pc.consume(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }); + + producerThread.start(); + consumerThread.start(); + } +} diff --git a/P5.java b/P5.java index ebee742..5aaf39a 100644 --- a/P5.java +++ b/P5.java @@ -1,20 +1,27 @@ -import java.util.function.Consumer; - -class P5 { - public static void main(String[] _args) { - int sub[] = { 64, 91, 45 }; - P5 obj = new P5(); - int sum = 0; - - for (int i = 0; i < sub.length; i++) { - obj.grade(sub[i], i + 1); - sum += sub[i]; - } - - System.out.println("Overall Percentage: " + (float) sum / 3 + "%"); - } - - void grade(int n, int s) { - System.out.println( "Subject " + s + " grade: " + (char)( n >= 90 ? 'A' : n < 50 ? 'F' : 'A' + (9 - n / 10))); +class MyException extends Exception { + public MyException(String message) { + super(message); + } +} + +public class P5 { + public static void main(String[] args) { + try { + int result = divide(10, 0); + System.out.println("Result: " + result); + } catch (MyException e) { + System.out.println("My Exception: " + e.getMessage()); + } catch (ArithmeticException e) { + System.out.println("Arithmetic Exception: " + e.getMessage()); + } finally { + System.out.println("Finally block executed."); + } + } + + public static int divide(int num1, int num2) throws MyException { + if (num2 == 0) { + throw new MyException("Division by zero not allowed."); + } + return num1 / num2; } } diff --git a/file.org b/file.org deleted file mode 100644 index 1ed50e6..0000000 --- a/file.org +++ /dev/null @@ -1,155 +0,0 @@ -#+LATEX_CLASS_OPTIONS: [a4paper,12pt] -#+LATEX_HEADER: \usepackage[margin=0.5in]{geometry} -#+LATEX_HEADER: \usepackage{fontspec} -#+LATEX_HEADER: \setmainfont{LiberationSerif} -#+LATEX_HEADER: \date{} -#+OPTIONS: toc:nil - -|------------------------------------------------------------------------------------------------------------| -| Programs are followed by their respective inputs and outputs i.e, both stdin and stdout are shown together | -|------------------------------------------------------------------------------------------------------------| - -* Sum of two numbers -#+ATTR_LATEX: :options frame=single,breaklines=true -#+begin_src java :tangle P1.java :results output :exports both :wrap src text -class P1 { - public static void main(String[] _args) { - int a = 44; - int b = 56; - - System.out.println(a + " + " + b + " = " + (a + b)); - } -} -#+end_src - -Output: -#+RESULTS: -#+begin_src text -44 + 56 = 100 -#+end_src - -#+latex: \clearpage - -* Factorial of a number -#+ATTR_LATEX: :options frame=single,breaklines=true -#+begin_src java :tangle P2.java :results output :exports both :wrap src text -class P2 { - public static void main(String[] _args) { - int a = 5, b, f; - b = f = a; - - while (b-- > 1) - f *= b; - - System.out.println(a + "! = " + f); - } -} -#+end_src - -Output: -#+RESULTS: -#+begin_src text -5! = 120 -#+end_src - -#+latex: \clearpage - -* Greatest of 3 numbers -#+ATTR_LATEX: :options frame=single,breaklines=true -#+begin_src java :tangle P3.java :results output :exports both :wrap src text -class P3 { - public static void main(String[] _args) { - int a = 5, b = -5, c = 55, mx; - - if (a > b && a > c) - mx = a; - else if ( b > a && b > c) - mx = b; - else - mx = c; - - System.out.println("max(" + a + ", " + b + ", " + c + ") = " + mx); - } -} -#+end_src - -Output: -#+RESULTS: -#+begin_src text -max(5, -5, 55) = 55 -#+end_src - -#+latex: \clearpage - -* Fibbonaci series -#+ATTR_LATEX: :options frame=single,breaklines=true -#+begin_src java :tangle P4.java :results output :exports both :wrap src text -class P4 { - public static void main(String[] _args) { - int n = 10; - int a = 0, b = 1; - System.out.println("First " + n + " elements of the fibonacci series:"); - new P4().fibo(n, a, b); - } - - void fibo(int n, int a, int b) { - if (n == 0) - return; - System.out.println(a); - fibo(n - 1, b, a + b); - } -} -#+end_src - -max(5, -5, 55) = 55 -#+RESULTS: -#+begin_src text -First 10 elements of the fibonacci series: -0 -1 -1 -2 -3 -5 -8 -13 -21 -34 -#+end_src - -#+latex: \clearpage - -* Percentage marks and grades for 3 subjects -#+ATTR_LATEX: :options frame=single,breaklines=true -#+begin_src java :tangle P5.java :results output :exports both :wrap src text -import java.util.function.Consumer; - -class P5 { - public static void main(String[] _args) { - int sub[] = { 64, 91, 45 }; - P5 obj = new P5(); - int sum = 0; - - for (int i = 0; i < sub.length; i++) { - obj.grade(sub[i], i + 1); - sum += sub[i]; - } - - System.out.println("Overall Percentage: " + (float) sum / 3 + "%"); - } - - void grade(int n, int s) { - System.out.println( "Subject " + s + " grade: " + (char)( n >= 90 ? 'A' : n < 50 ? 'F' : 'A' + (9 - n / 10))); - } -} -#+end_src - -#+RESULTS: -#+begin_src text -Subject 1 grade: D -Subject 2 grade: A -Subject 3 grade: F -Overall Percentage: 66.666664% -#+end_src - -#+latex: \clearpage diff --git a/file.pdf b/file.pdf deleted file mode 100644 index eafc221..0000000 Binary files a/file.pdf and /dev/null differ