package jbPack; import javax.swing.*; import java.util.*; import java.io.*; public class Program { public static void main(String[] args) { new Program(args); } public Program(String[] args) { LinkedList l1 = new LinkedList(); LinkedList l2 = new LinkedList(); System.out.println("Podaj operacje jaka chcesz wykonac: "); char o = podajoperacje(); System.out.println("Podaj pierwsza liczbe: "); l1 = podajliczbe(); System.out.println("Podaj druga liczbe: "); l2 = podajliczbe(); int wyn_por = Dzialania.porownaj(l1, l2); if(wyn_por > 0) System.out.println("Pierwsza liczba jest wieksza od drugiej."); else if(wyn_por < 0) System.out.println("Druga liczba jest wieksza od pierwszej."); else System.out.println("Obie liczby sa rowne."); if(o == '+') Dzialania.wypisz(Dzialania.dodaj(l1, l2)); else if(o == '-') Dzialania.wypisz(Dzialania.odejmij(l1, l2)); } public char podajoperacje() { char znak = ' '; int kodZnaku = -1; do { try { kodZnaku = System.in.read(); if(kodZnaku != 10 && kodZnaku != 13) znak = (char)kodZnaku; } catch(Exception ex) { System.out.println("Blad"); } } while (kodZnaku!=10); return znak; } public LinkedList podajliczbe() { LinkedList list = new LinkedList(); String elem = ""; int kodZnaku = -1; do { try { kodZnaku = System.in.read(); if(kodZnaku != 10 && kodZnaku != 13){ elem = "" + (char)kodZnaku; list.add(elem); } } catch(Exception ex) { System.out.println("Blad"); } } while (kodZnaku!=10); return list; } } class Dzialania { public static int porownaj(LinkedList l1, LinkedList l2){ if(l1.size() > l2.size()) return 1; else if(l1.size() < l2.size()) return -1; else for(int i = 0; i < l1.size(); i++){ if(Integer.parseInt((String)l1.get(i)) - Integer.parseInt((String)l2.get(i)) != 0) return Integer.parseInt((String)l1.get(i)) - Integer.parseInt((String)l2.get(i)); } return 0; } public static LinkedList dodaj(LinkedList l1, LinkedList l2){ LinkedList l3 = new LinkedList(); int w1 = 0; int w2 = 0; int przen = 0; int s1 = l1.size(); int s2 = l2.size(); int a = Math.max(s1, s2); for(int i = 1; i <= a; i++){ if(s1 - i >= 0) w1 = Integer.parseInt((String)l1.get(s1 - i)); else w1 = 0; if(s2 - i >= 0) w2 = Integer.parseInt((String)l2.get(s2 - i)); else w2 = 0; przen = w1 + w2 + przen; l3.add(0, ("" + (przen%10))); przen = przen / 10; } if(przen > 0) l3.add(0, ("" + przen)); return l3; } public static LinkedList odejmij(LinkedList l1, LinkedList l2){ LinkedList l3 = new LinkedList(); if(porownaj(l1, l2) >= 0) l3 = minus(l1, l2); else { l3 = minus(l2, l1); l3.add(0, "-"); } return l3; } public static LinkedList minus(LinkedList lw, LinkedList ln){ LinkedList l4 = new LinkedList(); int w1 = 0; int w2 = 0; int w = 0; int przen = 0; int z = 0; int s1 = lw.size(); int s2 = ln.size(); for(int i = 1; i <= lw.size(); i++){ if(s1 - i >= 0) w1 = Integer.parseInt((String)lw.get(s1 - i)); else w1 = 0; if(s2 - i >= 0) w2 = Integer.parseInt((String)ln.get(s2 - i)); else w2 = 0; if((w1-przen) < w2) { w1 += 10; z = (w1-przen) - w2; przen = 1; } else { z = (w1-przen) - w2; przen = 0; } l4.add(0,("" + z)); } while((l4.size() > 1) && (Integer.parseInt((String)l4.getFirst()) == 0)) l4.remove(0); return l4; } public static void wypisz(LinkedList l){ for(int i = 0; i < l.size(); i++) System.out.print((String)l.get(i)); System.out.println(); } }