Lab
11 Solutions, ESC101, 2004-2005 Semester-II
1.
import java.io.*;
import java.util.*;
class LineCnt
{
public static void main(String args[])
{
BufferedReader br = null;
int lc = 0;
try {
br = new
BufferedReader(new FileReader(args[0]));
while(br.readLine() != null)
lc++;
br.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("Number of
Lines: "+lc);
}
}
2.
import java.io.*;
import java.util.*;
class Find {
public static void main(String args[]){
BufferedReader br = null;
String pattern, s;
int numInputFiles, ctr;
numInputFiles = args.length - 1;
pattern = new String ();
s = new String ();
pattern =
args[0];
for (ctr = 0; ctr <
numInputFiles; ctr++){
try {
br = new BufferedReader (new FileReader
(args[ctr+1]));
s = br.readLine ();
}catch
(Exception e) {
System.out.println (e);
}
while
(s!=null) {
if( s.indexOf (pattern) >= 0) {
System.out.print(args[ctr+1] + ":
");
System.out.println (s);
}
try {
s = br.readLine ();
} catch (Exception e) {
System.out.println (e);
}
}
}
try{
br.close();
} catch(Exception e){
System.out.println(e);
}
}
}
3.
import java.io.*;
import java.util.*;
class PlayFairCipher
{
public static void main(String args[])
{
char[][] arr = new char[5][5];
BufferedReader br1 = null;
BufferedWriter br2 = null;
String keyword,key;
int i, j, len;
boolean found=false;
int c1, c2;
char[] alpha = {'A', 'B', 'C',
'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
if(args.length != 3){
System.out.println("Usage: java PlayFairCipher <file1>
<Keyword> <file2> ");
return;
}
keyword = args[1];
arr[0][0] = keyword.charAt(0);
len = 1;
for(i=1; i<keyword.length();
i++){
for(j=0;
j<len; j++){
if(arr[j/5][j%5] == keyword.charAt(i)){
found = true;
break;
}
}
if(!found){
arr[len/5][len%5] = keyword.charAt(i);
len++;
}
found = false;
}
for(i=0; i<len; i++){
if(arr[i/5][i%5] == 'J')
arr[i/5][i%5] = 'I';
}
found = false;
for(i=0; i<25; i++){
for(j=0;
j<len; j++){
if(arr[j/5][j%5] == alpha[i]){
found = true;
break;
}
}
if(!found){
arr[len/5][len%5] = alpha[i];
len++;
}
found = false;
}
for(i=0; i<25; i++){
System.out.print(arr[i/5][i%5] + " ");
if( (i+1)%5 ==
0)
System.out.println();
}
System.out.println();
try {
br1 = new
BufferedReader(new FileReader(args[0]));
br2 = new
BufferedWriter(new FileWriter(args[2]));
l1: do{
while(true){
c1 = br1.read();
if(c1 == -1)
break l1;
if(Character.isLetter((char)c1))
break;
br2.write(c1);
}
while(true){
c2 = br1.read();
if(c2 == -1){
br2.write(c1);
break l1;
}
if(Character.isLetter((char)c2))
break;
br2.write(c1);
br2.write(c2);
continue l1;
}
if(c1 == 'J')
c1 = 'I';
if(c2 == 'J')
c2 = 'I';
//
finding 'c1' and 'c2' positions in arr[][]
int pos1=0,
pos2=0;
boolean
p1=false, p2=false;
boolean
isUpper_c1=false, isUpper_c2=false;
if(Character.isUpperCase((char)c1))
isUpper_c1 = true;
if(Character.isUpperCase((char)c2))
isUpper_c2 = true;
for(i=0;
i<25; i++){
if(arr[i/5][i%5] == Character.toUpperCase((char)c1)){
pos1 = i;
break;
}
}
for(i=0;
i<25; i++){
if(arr[i/5][i%5] == Character.toUpperCase((char)c2)){
pos2 = i;
break;
}
}
//
Checking whether 'c1' and 'c2' are in the same row or column
if( (pos1/5 ==
pos2/5) || ((pos1%5) == (pos2%5)) ){
//
System.out.println("c1:"+(char)c1+" c2:"+(char)c2);
//
System.out.println("pos1:"+pos1+" pos2:"+pos2);
br2.write(c2);
br2.write(c1);
continue l1;
}
//
Finding the opposite rectangle side characters
if(!isUpper_c1)
br2.write(Character.toLowerCase(arr[pos1/5][pos2%5]));
else
br2.write(arr[pos1/5][pos2%5]);
if(!isUpper_c2)
br2.write(Character.toLowerCase(arr[pos2/5][pos1%5]));
else
br2.write(arr[pos2/5][pos1%5]);
}while(true);
br1.close();
br2.close();
}catch(IOException e){
System.out.println(e);
}
}
}