Advertisement
lashrone1

oop6

May 21st, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. public interface Container {
  2.  
  3. void put(double val);
  4. double get();
  5. int getSize();
  6. void clear();
  7.  
  8. }
  9.  
  10.  
  11. import java.util.Scanner;
  12. public class Main{
  13. static Scanner sc = new Scanner(System.in);
  14.  
  15.  
  16. static void dialog(Container C) {
  17.  
  18. System.out.println("Input value : ");
  19. double i = sc.nextDouble();
  20. C.put(i);
  21. double a = sc.nextDouble();
  22. C.put(a);
  23. System.out.println(C.getSize());
  24. System.out.println(C.get());
  25. System.out.println(C.get());
  26. System.out.println(C.getSize());
  27. C.clear();
  28. System.out.println("Done");
  29. System.out.println("Invalid value");
  30.  
  31.  
  32. }
  33.  
  34.  
  35. public static void main(String[] args){
  36. System.out.println("1 Stack");
  37. System.out.println("2 Queue");
  38.  
  39. int read = sc.nextInt();
  40.  
  41. Container c;
  42.  
  43. while(true){
  44.  
  45. switch(read){
  46. case 1:
  47. c = new Stack();
  48. dialog(c);
  49. break;
  50.  
  51. case 2:
  52. c = new Queue();
  53. dialog(c);
  54. break;
  55.  
  56. case 3:
  57. return;
  58.  
  59. default:
  60. System.out.println("Invalid value");
  61. break;
  62. }
  63. }
  64. }
  65. }
  66.  
  67.  
  68.  
  69. public class Queue implements Container{
  70.  
  71. private Vector queue;
  72.  
  73. public Queue(){
  74. queue=new Vector();
  75. }
  76.  
  77. public void put(double val){
  78. int q=queue.getsize();
  79. queue.insert(val,q);
  80. };
  81.  
  82. public double get(){
  83. queue.erase(0);
  84. return queue.get(0);
  85. };
  86.  
  87. public int getSize(){
  88. return queue.getsize();
  89. };
  90.  
  91. public void clear(){
  92. queue.clear();
  93. };
  94.  
  95.  
  96.  
  97. }
  98. public class Stack implements Container{
  99.  
  100. private Vector stack;
  101.  
  102. public Stack(){
  103. stack=new Vector();
  104. }
  105.  
  106. public void put(double val){
  107. stack.insert(val,0);
  108. };
  109.  
  110. public double get(){
  111. double get = stack.get(0);
  112. stack.erase(0);
  113. return get;
  114. };
  115.  
  116. public int getSize(){
  117. return stack.getsize();
  118. };
  119.  
  120. public void clear(){
  121. stack.clear();
  122. };
  123.  
  124.  
  125. }
  126.  
  127.  
  128. public class Vector {
  129. protected double[] arr;
  130. protected int size=0;
  131.  
  132. public Vector(){ //конструктор по умолчанию
  133. arr=new double[10];
  134. }
  135.  
  136. public Vector(int capacity){ //конструктор с размером
  137. if(capacity>0)
  138. arr=new double[capacity];
  139. else
  140. System.out.println("Ошибка создания объекта! Размер массива должен быть больше нуля!");
  141. }
  142.  
  143. public Vector(double[] arr){ //конструктор через массив
  144. size=arr.length;
  145. this.arr=new double[size+10];
  146. for(int i=0; i<size; i++)
  147. this.arr[i]=arr[i];
  148. }
  149.  
  150. private void increase(){ //приватный вспомогательный метод для увеличения массива
  151. double[] tmp=new double[arr.length+10];
  152. for(int i=0; i<arr.length; i++)
  153. tmp[i]=arr[i];
  154. arr=tmp;
  155. }
  156.  
  157. public int getsize(){ //получить текущий размер
  158. return size;
  159. }
  160. public double get(int pos) { //получить значение из ячейки
  161. if((pos<size)&&(pos>=0))
  162. return arr[pos];
  163. else return 0;
  164. }
  165. public void set(double val, int pos){ //замещение элемента
  166. if((pos<size)&&(pos>=0)) { //позиция должна быть строго меньше размера но не меньше нуля
  167. arr[pos]=val;
  168. }
  169. else System.out.println("Ошибка ввода! Неверные данные или элементы отсутствуют!");
  170. }
  171. public void insert(double val, int pos){ //добавление элемента
  172. if((pos<=size)&&(pos>=0)){ //позиция должна быть не больше размера и не меньше нуля
  173. for(int i=arr.length-1; i>pos; i--) //сдвиг элементов
  174. arr[i]=arr[i-1];
  175. arr[pos]=val;
  176. size++;
  177. //System.out.println("Значение добавлено!");
  178. if(size==arr.length) //увеличение размера по надобности
  179. increase();
  180. }
  181. else System.out.println("Ошибка ввода! Неверные данные!");
  182.  
  183. }
  184. public void erase(int pos) { //удаление элемента со сдвигом
  185. if((pos<size)&&(pos>=0)){
  186. for(int i=pos; i<size-1; i++) //перезапись элементов
  187. arr[i]=arr[i+1];
  188. size--;
  189.  
  190. }
  191. else System.out.println("Ошибка ввода! Неверные данные!");
  192.  
  193. }
  194. public void clear() { //очистка. Просто делаем размер нулевым, и данные буду перезаписывается незаметно для пользоавтеля
  195. size=0;
  196. }
  197. public Vector Clone() { //создает клон объекта
  198. Vector tmp=new Vector();
  199. for(int i=0; i<size; i++)
  200. tmp.insert(arr[i], i);
  201. return tmp;
  202. }
  203. public void print(){ //метод печати
  204. if(size==0)
  205. System.out.println("Массив пуст!");
  206. else {
  207. for(int i=0; i<size/*arr.length*/; i++)
  208. System.out.print(arr[i]+" ");
  209. System.out.println();
  210. }
  211. }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement