Comp
Comp
1. Write a program to input a natural number less than 1000 and display it in words. 4
2. Write a program to print Kaprekar numbers between a given range. 15
3. Write a program to check if a number is Smith number or not. 18
4. Write a program to print the frequency of each element in an array. 25
5. Write a program to sort an array using insertion sort. 28
6. Write a program to print the frequency of each word in a string. 49
7. Write a program to arrange a sentence in ascending order of its word lengths. 53
8. Write a program to sort a sentence in alphabetical order. 57
9. Write a program to sort the border elements of a n x n matrix in ascending order. 63
10. Write a program to print the prime elements of a matrix along with their position. 67
PROGRAM 1
Write a program to input a natural number less than 1000 and display it in
words.Test your program on the sample data and some random data.
Example –
INPUT: 29
OUTPUT: TWENTY NINE
INPUT: 17001
OUTPUT: OUT OF RANGE
Algorithm
Step-1: INPUT n
Step-2: IF n>=1000 THEN exit
Step-3: Create three string arrays ones[], teens[] and tens[] and store ones, teens and
tens in words.
Step-4: IF n>=100 AND n<1000 THEN GOTO Step 5 ELSE GOTO Step 12
Step-5: set a = n/100
Step-6: store ones[a-1+ + “hundred” in result
Step-7: update n as n/100
Step-8: IF n mod 10 = 0 AND n<>0 THEN GOTO Step 9 ELSE GOTO Step 11
Step-9: set a=n/10
Step-10: IF result = NULL THEN set result= tens[n-1]
ELSE set result= result +” and “+tens*a-1]
Step-11: set n as n mod 10
Step-12: IF n>20 AND n<100 THEN GOTO Step 13 ELSE GOTO Step 16
Step-13: set a as n/10
Step-14: set b as n mod 10
Step-15: IF result = NULL THEN set result as tens[a-1++” “+tens*b-1]
ELSE set result as result+” and “+tens*a-1++” and “+tens*b-1]
Step-16: IF n>10 AND n<20 THEN GOTO Step 17 ELSE GOTO Step 19
Step-17: set a as n mod 10
Step-19: IF n<10 AND n<>0 THEN GOTO Step 20 ELSE GOTO Step 21
Step-20: END
Source Code
import java.util.*;
class Question1{
public static void main(String args[])
throws InputMismatchException{
int n;
if(n>=1000)
{
System.out.println("OUT OF RANGE");
}else{
String result,h="",t="",o="";
int a,b,c;
String ones[]={"one", "two","three","four","five",
"six","seven","eight","nine"};
String teens[]={"eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen"};
String tens[]={"ten","twenty","thirty","forty","fifty",
"sixty","seventy","eighty","ninety"};
else{
result=tens[a-1];
}
n=n%10;
}
if(n>20 && n<100){
a=n/10;
b=n%10;
if(result!=null){
result+=" and ";
result+=tens[a-1]+" "+ones[b-1];
}else{
result=tens[a-1]+" "+ones[b-1];
}
}
if(n>10 && n<20){
a=n%10;
if(result!=null){
result+=" and ";
result+=teens[a-1];
}else{
result=teens[a-1];
}
}
if(n<10 && n!=0){
if(result!=null)
{
result+=" and ";
result+=ones[n-1];
}else{
result=ones[n-1];
}
System.out.println("\n"+result.toUpperCase());
} //end of main
} //end of class
PROGRAM 2
Given the two positive integers p and q, where p < q. Write a program to determine
howmany kaprekar numbers are there in the range between 'p' and 'q'(both
inclusive) and output them.
SAMPLE DATA:
INPUT:
p=1
Q=1000
OUTPUT:
Algorithm
Source Code
import java.util.*;
class Question4{
public static void main(String args[])throws InputMismatchException{
int d,i,n,a,b,s,freq;
freq=0; // to find the frequency of kaprekar numbers
for(i=p;i<=q;i++)
{
n=i;
d=0; //to store the number of digits
//extract 'd' digits from the right of the square of the number
a=s%(int)Math.pow(10,d);
//extract 'd' or 'd-1' digits from the left of the square of the number
b=s/(int)Math.pow(10,d);
//Check if the two parts add up to the original number i.e. Condition for Kaprekar number
if(a+b==i){
System.out.print(i+" ");
freq++;
}
}
Example 1.
Write a program to input a number and check whether it is a smith number or not.
Sample data:
Input: 94 Output: SMITH Number
Input: 102 Output: NOT SMITH Number
Algorithm
Step-1: Input n
Step-5: If a factor is found, run a while loop to store its sum of digits
Step-7: Decrement the loop counter so that the same factor is checked again
Step-8: Outside the loop compare if the two sums are equal or not
Step-9: If they are equal display “Smith number” else display “Not Smith number”
Step-10: End
Source Code
import java.util.*;
class Question5{
public static void main(String sr[])throws InputMismatchException{
Scanner sc=new Scanner(System.in);
System.out.println("Enter a number: ");
int n=sc.nextInt();
int p,q,i,sod=0,sopf=0,t;
p=q=n;
//Find the sum of all the digits of the number
while(p>0){
sod+=p%10;
p/=10;
}
for(i=2;i<=q;i++){
if(q%i==0){ //check if ‘i’ is a factor
t=i;
while(t>0){ //find the sum of the digits of the factor
sopf+=t%10;
t/=10;
}
q=q/i;
i--; //decrement the factor so that next time the same factor is checked again and
again until it is not a factor. This is the prime factorization method.
}
}
if(sod==sopf) // if sum of digits and sum of prime factors are equal, it is smith number
System.out.println("Smith number");
else
System.out.println("Not Smith number");
} //end of main
} //end of class
PROGRAM 4
Write a program to create an array of n integers and display the frequency of each element of the array.
Example:
Input:
Enter the number of terms: 10 Enter 10 integers: 1 2 2 2 3 4 3 4 5 6
Output:
Frequency of 1: 1
Frequency of 2: 3
Frequency of 3: 2
Frequency of 4: 2
Frequency of 5: 1
Frequency of 6: 1
Algorithm
Step-1: Input the size of the array as n
Step-5: If the elements a[i] and a[j] are equal and a[j] is not zero, count and put zero in a[j]
Step-6: Outside the inner loop, print frequency of a[i] if it is not zero
Step-7: End
Source Code
import java.util.*;
class Question7{
int n=sc.nextInt();
int i;
System.out.println("Enter "+n+ " integers");
a[i]=sc.nextInt();
int j,f;
for(i=0;i<n;i++)
for(i=0;i<n;i++)
{
f=1;
for(j=i+1;j<n;j++)
{
if(a[i]==a[j] && a[j]!=0)
{
f++; a[j]=0;
}
}
if(a[i]!=0)
System.out.println("Frequency of "+a[i]+" : "+f);
}
} //end of main
} //end of class
PROGRAM 5
Write a program to create an array of n integers and sort the array in ascending order
usingInsertion sort technique.
Example –
INPUT:
Enter the size of the array: 5
Enter 5 elements: 5 9 7 3 -4
OUTPUT:
-4 3 5 7 9
Algorithm
Step-1: Input the size of the array n
Step-3: Now to apply insertion sort on this array, run a loop ‘i’ from 1 to n
Step-5: Run a reverse loop ‘j’ from i-1 till j>=0 and k<a[j]
Step-10:End
Source Code
import java.util.*;
class Question8 {
public static void main(String args[])throws InputMismatchException{
Scanner sc=new Scanner(System.in);
for(i=0;i<n;i++){
a[i]=sc.nextInt();
}
for(i=1;i<n;i++){
k=a[i];
for(j=i-1;j>=0 && k<a[j];j--){ //Shift the elements to the right until the condition is false
a[j+1]=a[j];
}
a[j+1]=k; //Store the element in the proper position of the array
}
for(i=0;i<n;i++){
System.out.print(a[i]+" ");
}
}
PROGRAM 6
Write a program to enter a string and print the frequency of each word in a string.
Example –
Input:
Enter a string: The need for enlightenment is the need of the hour.
Output:
Word Frequency
The 3
need 2
for 1
enlightenment 1
is 1
of 1
hour 1
Algorithm
Step-1: Enter a string
Step-2: Find the length of the string
Step-3: Create a string array
Step-4: Run a loop ‘i’ to access the string
Step-5: Extract word from the string and store it in the string array
Step-6: Continue the process until all the words are stored in the array
Step-7: Now run a loop to access the array
Step-8: Set f=1
Step-9: Run another loop to check equality of elements of the array
Step-10: If equal, increment f by 1 and shift all the elements to the left
by one place and decrease the size of the array
Step-11: Display the element along with its frequency f
Step-12: Repeat the process for all the elements of the array
Step-13: End
Source Code
import java.io.*;
class Question15
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a String");
String s=br.readLine();
s=s+" ";
int i,t=0,p=0,f=0,j,k;
int l=s.length();
String a[]=new String[l];
String b;
for(i=0;i<l;i++)
{
if(s.charAt(i)==' ')
{
b= s.substring(p,i);
a[t]=b;
t++;
p=i+1;
}
}
for(i=0;i<t;i++)
{
f=1;
for(j=i+1;j<t;j++)
{
if(a[i].equals(a[j]))
{
f++;
for(k=j;k<t-1;k++)
{
a[k]=a[k+1];
}
t--;
j--;
}
}
System.out.println("Frequency of " + a[i] + " : " + f);
}
} //end of main
} //end of class
PROGRAM 7
Write a program to enter a sentence and print it in ascending order of its word lengths.
A sentence may either terminate with a period (.), exclamation mark (!) or a question mark
(?).
Example –
INPUT:
OUTPUT:
Algorithm
Step-1: Enter a string
Step-2: Find the length of the string
Step-3: Create a string array
Step-4: Run a loop ‘i’ to access the string
Step-5: Extract word from the string and store it in the string array
Step-6: Continue the process until all the words are stored in the array
Step-7: Now run a loop to access the array
Step-8: Run two loops for sorting, say i and j
Step-9: If length of the ith element is greater than the length of the jth element swap them.
Step-10: Continue the process till the entire array is sorted
Step-11: Display the words in the array along with a blank space
Step-12: End
Source Code
import java.io.*;
class Question16
{
public static void main (String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader (System.in));
for(i=0;i<l;i++)
{
k=s.charAt(i);
if(k==' ' || k== '.' || k==’!’ || k==’?’)// Check for delimiters to extract words
{
String b = s.substring(p,i);
a[t]= b; //Store the words in an array
t++;
p=i+1;
}
}
//Using bubble sort to arrange the string array in ascending order of word length
for(i=0;i<t;i++)
{
for(j=0;j<t-i-1;j++)
{
if(a[j].length()>a[j+1].length()) //if the word on the left is smaller in length, swap it.
{
g=a[j];
a[j]=a[j+1];
a[j+1]=g;
}
}
}
for(i=0;i<t;i++)
{
System.out.print(a*i++” “); //print the words with a blank space
}
System.out.print("."); //display period to make it a sentence
} //end of main
} //end of class
PROGRAM 8
Write a program to enter a sentence and sort it in alphabetical order. You can convert the
sentence in either uppercase or lowercase before sorting.
Example –
INPUT:
Enter a sentence: Every cloud has a silver lining.
OUTPUT:
Algorithm
Step-7: Continue the process until all the words are stored in the array
Step-11: Continue the process till the entire array is sorted in ascending order
Step-12: Run a loop and display array elements with a blank space.
Step-13: End
Source Code
import java.io.*;
str=str.toLowerCase();
int l=str.length();
String a[]=new String[l];
int i,j,p=0,x=0;
for(i=0;i<l;i++){
char ch=str.charAt(i);
if(ch==' ' || ch=='.'){ //Extract the word when a space or period is found
String temp=str.substring(p,i);
a[x++]=temp; //store the word in a string array
p=i+1;
}
}
} //end of main
} //end of class
PROGRAM 9
Example –
INPUT:
Enter 9 elements:
4 9 3
1 7 6
5 8 2
OUTPUT:
1 2 3
9 5 4
8 7 6
Algorithm
Step-6: Continue the process till all the border elements are stored in b[]
Step-7: Now, sort the array b[] in ascending order using any sorting technique
Step-8: To store the sorted border elements in the matrix, run a loop for the
Step-10: Run a loop for last row and then first column to store the elements from b[] to matrix
Step-11: Finally, print the matrix that now has border elements sorted in ascending order.
Step-12: End
Source Code
import java.util.*;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
System.out.print(a[i][j]+" ") ;
}
System.out.println();
}
} //end of main
} //end of class
PROGRAM 10
Write a program to create a m x n matrix and print the prime elements in it along with the row
and column in which they are present.
Example –
INPUT:
Enter 12 elements:
4 5 1 6
8 25 30 2
16 9 45 3
OUTPUT:
5 0 1
2 1 3
3 2 3
Algorithm
Step-7: If the number of factors is 2 print the element, its row index and column index
Step-9: End
Source Code
import java.util.*;
public class Question20{
public static void main(String args[])throws InputMismatchException{
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number of rows and columns of a matrix: ");
int m=sc.nextInt();
int n=sc.nextInt();
int a[][]=new int[m][n];
int i,j,k,s=0;
int c=0;
for(k=1;k<=a[i][j];k++){
if(a[i][j]%k==0){
c++;
}
}
if(c==2){
System.out.println(a[i][j]+"\t\t"+i+"\t\t"+j);
}
}
}
} //end of main
} //end of class