Operacje na słowach

Operacje na słowach

Program: odczytujący dane (frazy) z pliku „input.txt” a następnie dokonujący na nich poszczególnych przekształceń po czym zapisuje do odpowiednich plików.

Do plików na przykład:

  • „hasla_a.txt” – odwrócone,
  • „słowa_a.txt” – wybierający najkrótszą jak i najdłuższą frazę,
  • „hasla_b.txt” – lustrzane odbicia.

Wykorzystane dane wejściowe:

22
32
12
23
56
sadsad
dsa
fdsa
fdsa
g
dsag
sfdh
sah
fdsfd
j

Dane wyjściowe (słowa_a.txt):

sadsad 6
g 1

Dane wyjściowe (hasla_b.txt):

22
2332
2112
3223
6556
dasdassadsad
asddsa
asdffdsa
asdffdsa
g
gasddsag
hdfssfdh
hassah
dfsdffdsfd
j

Dane wyjściowe (hasla_a.txt):

22
23
21
32
65
dasdas
asd
asdf
asdf
g
gasd
hdfs
has
dfsdf
j

Kompilator: Eclipse

Kod programu:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class glowna {
	//Program wykonujący operacje na słowach.
	public static void main(String[] args) throws IOException {
		FileReader odczyt=new FileReader("slowa.txt");
		BufferedReader bufor=new BufferedReader(odczyt);
		FileWriter zapis=new FileWriter("hasla_a.txt");	//Odwrócone
		BufferedWriter buforWy=new BufferedWriter(zapis);
		FileWriter zapis2=new FileWriter("slowa_a.txt");	//Najkrótsze i najdłuższe
		BufferedWriter buforWy2=new BufferedWriter(zapis2);
		FileWriter zapis3=new FileWriter("hasla_b.txt");	//Lustrzane odbicie
		BufferedWriter buforWy3=new BufferedWriter(zapis3);
		String linia;
		int suma=0,sumamin=29;
		int ilosc=0;
		String linka = null,linkamin = null;
		while((linia=bufor.readLine())!=null)
		{	
			String reverse = new StringBuffer(linia).reverse().toString();
			buforWy.write(reverse);
			buforWy.newLine();
			int ile=linia.length();
			if(suma<ile)
			{
				suma=ile;
				linka=linia;
			}
			if(sumamin>ile)
			{
				sumamin=ile;
				linkamin=linia;
			}
			boolean y=false;
			for(int i=0,j=linia.length()-1;i<linia.length();i++,j--)			
			{
				if(linia.charAt(i)!=linia.charAt(j))
				{
						y=false;
						break;	
				}
				else	{		
						y=true;
						ilosc++;
				}
			}
				if(y==true)
				{
				buforWy3.write(linia);
				buforWy3.newLine();
				}	
				else if(ilosc!=0)
				{
					buforWy3.write("!!");
				}
				else
				{
				buforWy3.write(reverse+linia);
				buforWy3.newLine();
				}
				ilosc=0;
		}
		buforWy2.write(linka+" "+suma);
		buforWy2.newLine();
		buforWy2.write(linkamin+" "+sumamin);
		buforWy.close();
		buforWy2.close();
		buforWy3.close();
		bufor.close();
	}
}