All pastes #561959 Raw Edit

Gorgeus

public java v1 · immutable
·published 2007-06-12 17:05 UTC
rendered paste body
//Maciej Smolak gr3, ps5import java.lang.*;import java.io.*;class Console{	static public String ReadLn()	{		try		{			BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));			return stdin.readLine();		}		catch (IOException e)		{			System.out.println(e);			return "";		}	}}class Element{	double Oblicz()	{		return 0;	}}class Liscie_drzewa extends Element{	Element l,r;}class Element_l{	boolean Oblicz()	{		return true;	}}class Liscie_drzewa_l extends Element_l{	Element_l l,r;}class Liczba extends Liscie_drzewa{	double nValue;	double Oblicz()	{		return nValue;	}	Liczba (double value)	{		nValue=value;	}}class Liczba_l extends Liscie_drzewa_l{	boolean nValue;	boolean Oblicz()	{		return nValue;	}	Liczba_l (boolean value)	{		nValue=value;	}}class Plus extends Liscie_drzewa{	double Oblicz()	{		return l.Oblicz()+r.Oblicz();	}}class Minus extends Liscie_drzewa{	double Oblicz()	{		return l.Oblicz()-r.Oblicz();	}}class Mnozenie extends Liscie_drzewa{	double Oblicz()	{		return l.Oblicz()*r.Oblicz();	}}class Dzielenie extends Liscie_drzewa{	double Oblicz()	{		return l.Oblicz()/r.Oblicz();	}}class And extends Liscie_drzewa_l{	boolean Oblicz()	{		return l.Oblicz() && r.Oblicz();	}}class Or extends Liscie_drzewa_l{	boolean Oblicz()	{		return l.Oblicz() || r.Oblicz();	}}class Drzewo{	Element wierzcholek=null;	double na_drzewo (double value, char op)		{			if (wierzcholek==null)				{					wierzcholek=new Liczba(value);				}			else				switch(op)				{					case '0':							{								Liscie_drzewa temp=(Liscie_drzewa) wierzcholek;								while (temp.r!=null)									temp=(Liscie_drzewa) temp.r;								temp.r=new Liczba(value);								break;							}					case '+':							{								Liscie_drzewa temp=new Plus();								temp.l=wierzcholek;								wierzcholek=temp;								break;							}										case '-':							{								Liscie_drzewa temp=new Minus();								temp.l=wierzcholek;								wierzcholek=temp;								break;							}					case '*':							{								Liscie_drzewa temp=new Mnozenie();								if (wierzcholek instanceof Minus || wierzcholek instanceof Plus)									{										temp.l=((Liscie_drzewa)wierzcholek).r;										((Liscie_drzewa)wierzcholek).r=temp;									}								else									{										temp.l=wierzcholek;										wierzcholek=temp;									}								break;							}					case '/':							{								Liscie_drzewa temp=new Dzielenie();								if (wierzcholek instanceof Minus || wierzcholek instanceof Plus)									{										temp.l=((Liscie_drzewa)wierzcholek).r;										((Liscie_drzewa)wierzcholek).r=temp;									}								else									{										temp.l=wierzcholek;										wierzcholek=temp;									}								break;							}				default:break;						}		return 0;		}	double nawias (int i, int j, String dzialanie)	{		int k, l;		double liczba_int, wynik, liczba1, liczba2;		String liczba="";		boolean Nawias=false;		Drzewo dn=new Drzewo();		k=i;		for (; k<j; ++k)		{			if (dzialanie.charAt(k)!='+' && dzialanie.charAt(k)!='-' && dzialanie.charAt(k)!='/' && dzialanie.charAt(k)!='*' && dzialanie.charAt(k)!='^' && dzialanie.charAt(k)!='a'&& dzialanie.charAt(k)!='s'&& dzialanie.charAt(k)!='c'&& dzialanie.charAt(k)!='t')			{				liczba+=dzialanie.charAt(k);			}			else			{				if (dzialanie.charAt(k)=='^')				{					wynik=1;					liczba1=(double)Integer.parseInt(liczba);					liczba="";					for (l=k+1; l<j; ++l)						liczba+=dzialanie.charAt(l);					liczba2=(double)Integer.parseInt(liczba);					for (l=0; l<liczba2; ++l)						wynik*=liczba1;					return wynik;				}				else					if (dzialanie.charAt(k)=='a')					{						if (dzialanie.charAt(k+1)=='c' && dzialanie.charAt(k+2)=='o')						{							for (l=k+4; l<j; ++l)								liczba+=dzialanie.charAt(l);							liczba1=(double)Integer.parseInt(liczba);							wynik=Math.acos(liczba1);							return wynik;						}						else							if (dzialanie.charAt(k+1)=='s' && dzialanie.charAt(k+2)=='i')							{								for (l=k+4; l<j; ++l)									liczba+=dzialanie.charAt(l);								liczba1=(double)Integer.parseInt(liczba);								wynik=Math.asin(liczba1);								return wynik;							}																else								if (dzialanie.charAt(k+1)=='t' && dzialanie.charAt(k+2)=='a')								{									for (l=k+4; l<j; ++l)										liczba+=dzialanie.charAt(l);									liczba1=(double)Integer.parseInt(liczba);									wynik=Math.atan(liczba1);									return wynik;								}								else									if (dzialanie.charAt(k+1)=='c' && dzialanie.charAt(k+2)=='t')									{										for (l=k+5; l<j; ++l)											liczba+=dzialanie.charAt(l);										liczba1=(double)Integer.parseInt(liczba);										wynik=((Math.PI)/2)-Math.atan(liczba1);										return wynik;									}					}					else						if (dzialanie.charAt(k)=='s')						{							if (dzialanie.charAt(k+1)=='i')							{								for (l=k+3; l<j; ++l)									liczba+=dzialanie.charAt(l);								liczba1=(double)Integer.parseInt(liczba);								wynik=Math.sin(liczba1);								return wynik;							}							else							{								for (l=k+4; l<j; ++l)									liczba+=dzialanie.charAt(l);								liczba1=(double)Integer.parseInt(liczba);								wynik=Math.sqrt(liczba1);								return wynik;							}							}						else							if (dzialanie.charAt(k)=='t')							{								for (l=k+3; l<j; ++l)									liczba+=dzialanie.charAt(l);								liczba1=(double)Integer.parseInt(liczba);								wynik=Math.tan(liczba1);								return wynik;								}							else								if (dzialanie.charAt(k)=='c')								{									if (dzialanie.charAt(k+1)=='o')									{										for (l=k+3; l<j; ++l)											liczba+=dzialanie.charAt(l);										liczba1=(double)Integer.parseInt(liczba);										wynik=Math.cos(liczba1);										return wynik;									}									else									{										for (l=k+4; l<j; ++l)											liczba+=dzialanie.charAt(l);										liczba1=(double)Integer.parseInt(liczba);										wynik=1/Math.tan(liczba1);										return wynik;									}								}								else								{									liczba_int=(double)Integer.parseInt(liczba);									dn.na_drzewo(liczba_int, '0');									dn.na_drzewo(0, dzialanie.charAt(k));									liczba="";								}			}		}		liczba_int=(double)Integer.parseInt(liczba);		dn.na_drzewo(liczba_int,'0');		wynik=dn.wierzcholek.Oblicz();		return wynik;	}}class Drzewo_l{	Element_l wierzcholek=null;	int na_drzewo (boolean value, char op)		{			if (wierzcholek==null)				{					wierzcholek=new Liczba_l(value);				}			else				switch(op)				{					case '0':							{								Liscie_drzewa_l temp=(Liscie_drzewa_l) wierzcholek;								while (temp.r!=null)									temp=(Liscie_drzewa_l) temp.r;								temp.r=new Liczba_l(value);								break;							}					case 'o':							{								Liscie_drzewa_l temp=new Or();								temp.l=wierzcholek;								wierzcholek=temp;								break;							}										case 'a':							{								Liscie_drzewa_l temp=new And();								if (wierzcholek instanceof Or)									{										temp.l=((Liscie_drzewa_l)wierzcholek).r;										((Liscie_drzewa_l)wierzcholek).r=temp;									}								else									{										temp.l=wierzcholek;										wierzcholek=temp;									}								break;							}				default:break;						}		return 0;		}}class z_pliku{	String dzialanie_;	z_pliku nast;}class Wczytaj_z_Pliku{	String dzialanie="";	z_pliku dp=new z_pliku();	z_pliku wczytajPlik (String sciezka)	{		try		{			BufferedReader file=new BufferedReader(new FileReader(sciezka));			if (file==null)			{				System.out.println("Brak pliku");			}			else			{				do				{						z_pliku tmp=new z_pliku();					dzialanie=file.readLine();					tmp.dzialanie_=dzialanie;					tmp.nast=dp;					dp=tmp;				}				while (file.readLine()!=null);			file.close();			}		}		catch (IOException e)		{			System.out.println("Brak pliku");			return null;		}	return dp;	}}class Sprawdz_rownanie{	boolean sprawdz (String dzialanie)	{		int i, j, k;		boolean znalazl=false;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='+' || dzialanie.charAt(i)=='-' || dzialanie.charAt(i)=='/' || dzialanie.charAt(i)=='*' || dzialanie.charAt(i)=='^')				if (dzialanie.charAt(i+1)=='+' || dzialanie.charAt(i+1)=='-' || dzialanie.charAt(i+1)=='/' || dzialanie.charAt(i+1)=='*' || dzialanie.charAt(i+1)=='^')					{						System.out.println("\nBrak liczby miedzy operatorami");						for (j=0; j<i+1; ++j)							System.out.print(dzialanie.charAt(j));						System.out.print(" !! ");						for (++i; i<dzialanie.length(); ++i)							System.out.print(dzialanie.charAt(i));						System.out.print("\n");						return false;					}			if (dzialanie.charAt(i)=='(')				{					for (k=i; k<dzialanie.length(); ++k)						if (dzialanie.charAt(k)==')')							znalazl=true;					if (znalazl==false)					{						System.out.println("Nie zamkniety nawias");						for (j=0; j<i+1; ++j)							System.out.print(dzialanie.charAt(j));						System.out.print(" !! ");						for (++i; i<dzialanie.length(); ++i)							System.out.print(dzialanie.charAt(i));						return false;					}				}			if (dzialanie.charAt(i)==')')				{					for (k=0; k<i; ++k)						if (dzialanie.charAt(k)=='(')							znalazl=true;					if (znalazl==false)					{						System.out.println("Nie zamkniety nawias");						for (j=0; j<i+1; ++j)							System.out.print(dzialanie.charAt(j));						System.out.print(" !! ");						for (++i; i<dzialanie.length(); ++i)							System.out.print(dzialanie.charAt(i));						return false;					}				}								}		/*if (sin_(dzialanie)==false)			return false;		if (asin_(dzialanie)==false)			return false;		if (cos_(dzialanie)==false)			return false;		if (acos_(dzialanie)==false)			return false;		if (tan_(dzialanie)==false)			return false;		if (atan_(dzialanie)==false)			return false;		if (ctan_(dzialanie)==false)			return false;		if (actan_(dzialanie)==false)			return false;*/			return true;	}		/*boolean sin_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='s')			{				if (dzialanie.charAt(i+1)=='i' && dzialanie.charAt(i+2)=='n')					return true;				else				{					System.out.println("Zle uzycie sinusa");					for (j=0; j<i; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;		}	boolean cos_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='c')			{				if (dzialanie.charAt(i+1)=='o' && dzialanie.charAt(i+2)=='s')					return true;				else				{					System.out.println("Zle uzycie cosinusa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;	}	boolean tan_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='t')			{				if (dzialanie.charAt(i+1)=='a' && dzialanie.charAt(i+2)=='n')					return true;				else				{					System.out.println("Zle uzycie tangensa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;	}	boolean ctan_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='c')			{				if (dzialanie.charAt(i+1)=='t' && dzialanie.charAt(i+2)=='a' && dzialanie.charAt(i+3)=='n')					return true;				else				{					System.out.println("Zle uzycie cotangensa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;			}	boolean asin_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='a')			{				if (dzialanie.charAt(i+1)=='s' && dzialanie.charAt(i+2)=='i' && dzialanie.charAt(i+3)=='n')					return true;				else				{					System.out.println("Zle uzycie arcus sinusa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;		}	boolean acos_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='a')			{				if (dzialanie.charAt(i+1)=='c' && dzialanie.charAt(i+2)=='o' && dzialanie.charAt(i+3)=='s')					return true;				else				{					System.out.println("Zle uzycie arcus cosinusa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;		}	boolean atan_ (String dzialanie)	{		int i, j;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='a')			{				if (dzialanie.charAt(i+1)=='t' && dzialanie.charAt(i+2)=='a' && dzialanie.charAt(i+3)=='n')					return true;				else				{					System.out.println("Zle uzycie arcus tangensa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}			}		return true;	}	boolean actan_ (String dzialanie)	{		int i, j;		for ( i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='a')			{				if (dzialanie.charAt(i+1)=='c' && dzialanie.charAt(i+2)=='t' && dzialanie.charAt(i+3)=='a' && dzialanie.charAt(i+4)=='n')					return true;				else				{					System.out.println("Zle uzycie arcus cotangensa");					for (j=0; j<i+1; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (++i; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;		}*/		boolean sprawdz_l (String dzialanie)	{		int i, j, k;		for (i=0; i<dzialanie.length(); ++i)		{			if (dzialanie.charAt(i)=='a')			{				if (dzialanie.charAt(i+1)=='n' && dzialanie.charAt(i+2)=='d')					;				else				{					System.out.println("Blad skladni and");					for (j=0; j<i; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}			if (dzialanie.charAt(i)=='o')			{				if (dzialanie.charAt(i+1)=='r' || dzialanie.charAt(i+1)=='t')					;				else				{					System.out.println("Blad skladni or");					for (j=0; j<i; ++j)						System.out.print(dzialanie.charAt(j));					System.out.print(" !! ");					for (; i<dzialanie.length(); ++i)						System.out.print(dzialanie.charAt(i));						return false;				}			}		}		return true;	}}class Nieprawidlowy_znak extends Exception{	void wyjatek_nz()	{		System.out.println("Wprowadzono nieprawidlowy znak...");	}}public class kalkulator{	public static void main (String args[])	{		Console czytaj=new Console();		Drzewo drzewo=new Drzewo();		Drzewo_l drzewo_l=new Drzewo_l();		Sprawdz_rownanie s=new Sprawdz_rownanie();		String dzialanie="";		String liczba=""; 		String l="";		String decyzja="";		String sciezka="";		Wczytaj_z_Pliku w=new Wczytaj_z_Pliku();		boolean zmiana=false, Nawias=false;		Element_l wierzcholek;		int i, j, l_int=0, l_int2=0, l_int3=0;		double liczba_int=0, liczba_n=0;		do		{				System.out.println("..::MENU::..");			System.out.println("1. Oblicz wyrazenie arytmetyczne");			System.out.println("2. Oblicz wyrazenie logiczne");			System.out.println("3. Wyjscie");			System.out.print(">");			try			{				l=czytaj.ReadLn();				for (i=0; i<l.length(); ++i)				{					if (l.charAt(i)<49 || l.charAt(i)>51)					throw new Nieprawidlowy_znak();				}			}			catch (Nieprawidlowy_znak wy)			{				wy.wyjatek_nz();				continue;			}			l_int=Integer.parseInt(l);			switch(l_int)			{				case 1:						do						{							System.out.println("\n1. Wczytaj wyrazenie arytmetyczne z klawiatury");							System.out.println("2. Wczytaj wyrazenie arytmetyczne z pliku");							System.out.println("3. Powrot");							System.out.print(">");							try							{								l=czytaj.ReadLn();								for (i=0; i<l.length(); ++i)								{									if (l.charAt(i)<49 || l.charAt(i)>51)									throw new Nieprawidlowy_znak();								}							}							catch (Nieprawidlowy_znak wy)							{								wy.wyjatek_nz();								continue;							}							l_int2=Integer.parseInt(l);							switch(l_int2)							{								case 1:										do										{											liczba="";											dzialanie="";											drzewo.wierzcholek=null;											System.out.println("Podaj dzialanie:");											dzialanie=czytaj.ReadLn();											if (s.sprawdz(dzialanie)==true)											{												for (i=0; i<dzialanie.length(); ++i)												{													if (dzialanie.charAt(i)=='(')														{															++i;															j=i;															while (dzialanie.charAt(j)!=')')																++j;															liczba_n=drzewo.nawias(i, j, dzialanie);															Nawias=true;															i=j;														}													if (dzialanie.charAt(i)!='+' && dzialanie.charAt(i)!='-' && dzialanie.charAt(i)!='/' && dzialanie.charAt(i)!='*')													{														if (dzialanie.charAt(i)!=')')															liczba+=dzialanie.charAt(i);													}													else													{														if (Nawias==true)														{															drzewo.na_drzewo(liczba_n, '0');																												Nawias=false;														}														else														{															liczba_int=(double)Integer.parseInt(liczba);															drzewo.na_drzewo(liczba_int, '0');														}														drzewo.na_drzewo(0, dzialanie.charAt(i));														liczba="";													}												}												if (Nawias==true)												{													drzewo.na_drzewo(liczba_n, '0');																										Nawias=false;												}												else												{													liczba_int=(double)Integer.parseInt(liczba);													drzewo.na_drzewo(liczba_int, '0');												}												System.out.println("\nWynik:");												System.out.println(dzialanie+"="+drzewo.wierzcholek.Oblicz()+"\n");												System.out.println("Wrocic do menu?(t|n)");												decyzja=czytaj.ReadLn();												if (decyzja.charAt(0)=='n')												{													liczba="";													dzialanie="";													drzewo.wierzcholek=null;												}											}											else												break;										}										while (decyzja.charAt(0)!='t');										break;								case 2:										do										{											z_pliku d=new z_pliku();											System.out.print("Podaj sciezke do pliku: ");											sciezka=czytaj.ReadLn();											d=w.wczytajPlik(sciezka);											while (d!=null && d.dzialanie_!=null)											{												if (s.sprawdz(d.dzialanie_)==true)												{													drzewo.wierzcholek=null;													for (i=0; i<d.dzialanie_.length(); ++i)													{														if (d.dzialanie_.charAt(i)=='(')															{																++i;																j=i;																while (d.dzialanie_.charAt(j)!=')')																	++j;																liczba_n=drzewo.nawias(i, j, d.dzialanie_);																Nawias=true;																i=j;															}														if (d.dzialanie_.charAt(i)!='+' && d.dzialanie_.charAt(i)!='-' && d.dzialanie_.charAt(i)!='/' && d.dzialanie_.charAt(i)!='*')														{															if (d.dzialanie_.charAt(i)!=')')																liczba+=d.dzialanie_.charAt(i);														}														else														{															if (Nawias==true)															{																drzewo.na_drzewo(liczba_n, '0');																													Nawias=false;															}															else															{																liczba_int=(double)Integer.parseInt(liczba);																drzewo.na_drzewo(liczba_int, '0');															}															drzewo.na_drzewo(0, d.dzialanie_.charAt(i));															liczba="";														}													}													if (Nawias==true)													{														drzewo.na_drzewo(liczba_n, '0');																											Nawias=false;													}													else													{														liczba_int=(double)Integer.parseInt(liczba);														drzewo.na_drzewo(liczba_int, '0');													}													System.out.println("Wynik:");													System.out.println(d.dzialanie_+"="+drzewo.wierzcholek.Oblicz()+"\n");													d=d.nast;													liczba="";													drzewo_l.wierzcholek=null;												}											}											System.out.println("Wrocic do menu?(t|n)");											decyzja=czytaj.ReadLn();											if (decyzja.charAt(0)=='n')											{													sciezka="";												liczba="";												drzewo.wierzcholek=null;												d=null;																						}											else												break;																				}										while (decyzja.charAt(0)!='t');										break;							}						}						while (l_int2!=3);						break;				case 2:						do						{							System.out.println("\n1. Wczytaj wyrazenie logiczne z klawiatury");							System.out.println("2. Wczytaj wyrazenie logiczne z pliku");							System.out.println("3. Powrot");							System.out.print(">");							try							{								l=czytaj.ReadLn();								for (i=0; i<l.length(); ++i)								{									if (l.charAt(i)<49 || l.charAt(i)>51)									throw new Nieprawidlowy_znak();								}							}							catch (Nieprawidlowy_znak wy)							{								wy.wyjatek_nz();								continue;							}							l_int3=Integer.parseInt(l);							switch(l_int3)							{								case 1:										do										{											System.out.println("Podaj dzialanie:");											dzialanie=czytaj.ReadLn();											if (s.sprawdz_l(dzialanie)==true)											{												for (i=0; i<dzialanie.length(); ++i)												{													if (dzialanie.charAt(i)!='a' && dzialanie.charAt(i)!='o' && dzialanie.charAt(i)!='n')													{														liczba+=dzialanie.charAt(i);													}													else													{														if (dzialanie.charAt(i)=='n')														{															zmiana=true;															i+=2;															continue;														}														liczba_int=Integer.parseInt(liczba);														if (liczba_int==1)														{															if (zmiana==true)															{																drzewo_l.na_drzewo(false, '0');																drzewo_l.na_drzewo(false, dzialanie.charAt(i));																zmiana=false;															}															else																drzewo_l.na_drzewo(true, '0');															drzewo_l.na_drzewo(false, dzialanie.charAt(i));														}														else															if (liczba_int==0)															{																if (zmiana==true)																{																	drzewo_l.na_drzewo(true, '0');																	drzewo_l.na_drzewo(false, dzialanie.charAt(i));																	zmiana=false;																}																else																	drzewo_l.na_drzewo(false, '0');																drzewo_l.na_drzewo(false, dzialanie.charAt(i));															}														liczba="";														if (dzialanie.charAt(i)=='a')															i+=2;														else															if (dzialanie.charAt(i)=='o')																++i;													}												}												liczba_int=Integer.parseInt(liczba);												if (liczba_int==1)												{													if (zmiana==true)													{														drzewo_l.na_drzewo(false, '0');														zmiana=false;													}													else														drzewo_l.na_drzewo(true, '0');												}												else													if (liczba_int==0)													{														if (zmiana==true)														{															drzewo_l.na_drzewo(true, '0');															zmiana=false;														}														else															drzewo_l.na_drzewo(false, '0');													}												System.out.println("\nWynik:");												System.out.println(dzialanie+"="+drzewo_l.wierzcholek.Oblicz()+"\n");												System.out.println("Wrocic do menu?(t|n)");												decyzja=czytaj.ReadLn();												if (decyzja.charAt(0)=='n')												{													liczba="";													dzialanie="";													drzewo_l.wierzcholek=null;												}											}											else												break;										}										while (decyzja.charAt(0)!='t');										break;								case 2:										do										{											z_pliku dl=new z_pliku();											z_pliku tmpl=new z_pliku();											System.out.print("Podaj sciezke do pliku: ");											sciezka=czytaj.ReadLn();											try											{												BufferedReader file=new BufferedReader(new FileReader(sciezka));												do												{														z_pliku tmp=new z_pliku();													dzialanie=file.readLine();													tmp.dzialanie_=dzialanie;													tmp.nast=dl;													dl=tmp;												}												while (file.readLine()!=null);												file.close();											}											catch (IOException e)											{												System.out.println("Brak pliku");												dl=null;												break;											}											if (s.sprawdz_l(dzialanie)==true)											{												while (dl!=null && dl.dzialanie_!=null)												{																							for (i=0; i<dl.dzialanie_.length(); ++i)													{														if (dl.dzialanie_.charAt(i)!='a' && dl.dzialanie_.charAt(i)!='o' && dl.dzialanie_.charAt(i)!='n')														{															liczba+=dl.dzialanie_.charAt(i);														}														else														{															if (dl.dzialanie_.charAt(i)=='n')																		{																			zmiana=true;																			i+=2;																			continue;																		}															liczba_int=Integer.parseInt(liczba);															if (liczba_int==1)															{																if (zmiana==true)																{																	drzewo_l.na_drzewo(false, '0');																	drzewo_l.na_drzewo(false, dl.dzialanie_.charAt(i));																	zmiana=false;																}																else																	drzewo_l.na_drzewo(true, '0');																drzewo_l.na_drzewo(false, dl.dzialanie_.charAt(i));															}															else																if (liczba_int==0)																{																	if (zmiana==true)																	{																		drzewo_l.na_drzewo(true, '0');																		drzewo_l.na_drzewo(false, dl.dzialanie_.charAt(i));																		zmiana=false;																	}																	else																		drzewo_l.na_drzewo(false, '0');																	drzewo_l.na_drzewo(false, dl.dzialanie_.charAt(i));																}															liczba="";															if (dl.dzialanie_.charAt(i)=='a')																i+=2;															else																if (dl.dzialanie_.charAt(i)=='o')																	++i;														}													}													liczba_int=Integer.parseInt(liczba);													if (liczba_int==1)													{														if (zmiana==true)														{															drzewo_l.na_drzewo(false, '0');															zmiana=false;														}														else															drzewo_l.na_drzewo(true, '0');													}													else														if (liczba_int==0)														{															if (zmiana==true)															{																drzewo_l.na_drzewo(true, '0');																zmiana=false;															}															else																drzewo_l.na_drzewo(false, '0');														}													System.out.println("Wynik:");													System.out.println(dl.dzialanie_+"="+drzewo_l.wierzcholek.Oblicz()+"\n");													dl=dl.nast;													liczba="";													drzewo_l.wierzcholek=null;												}											}											else												break;											System.out.println("Wrocic do menu?(t|n)");											decyzja=czytaj.ReadLn();											if (decyzja.charAt(0)=='n')											{												liczba="";												drzewo_l.wierzcholek=null;												dl=null;											}										}										while (decyzja.charAt(0)!='t');										break;						}					}					while (l_int3!=3);			}		}		while (l_int!=3);	}}