0% found this document useful (0 votes)
40 views82 pages

Project File Questions

Uploaded by

shasumith12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views82 pages

Project File Questions

Uploaded by

shasumith12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 82

Number Programs:

Question 1

A Prime-Adam integer is a positive integer (without leading zeros) which is a prime as well as an
Adam number.

Prime number: A number which has only two factors, i.e. 1 and the number itself.

Example: 2, 3, 5, 7 ... etc.

Adam number: The square of a number and the square of its reverse are reverse to each other.

Example: If n = 13 and reverse of 'n' = 31, then,

(13)2 = 169

(31)2 = 961 which is reverse of 169

thus 13, is an Adam number.

Accept two positive integers m and n, where m is less than n as user input. Display all Prime-Adam
integers that are in the range between m and n (both inclusive) and output them along with the
frequency, in the format given below:

Test your program with the following data and some random data:

Example 1

INPUT:
m=5
n = 100

OUTPUT:
THE PRIME-ADAM INTEGERS ARE:
11 13 31
FREQUENCY OF PRIME-ADAM INTEGERS IS: 3

Example 2

INPUT:
m = 100
n = 200

OUTPUT:
THE PRIME-ADAM INTEGERS ARE:
101 103 113
FREQUENCY OF PRIME-ADAM INTEGERS IS: 3

Example 3

INPUT:
m = 50
n = 70
OUTPUT:
THE PRIME-ADAM INTEGERS ARE:
NIL
FREQUENCY OF PRIME-ADAM INTEGERS IS: 0

Example 4

INPUT:
m = 700
n = 450

OUTPUT:
INVALID INPUT

Solution

import java.util.Scanner;

public class PrimeAdam

public static int reverse(int num) {

int rev = 0;

while (num != 0) {

int d = num % 10;

rev = rev * 10 + d;

num /= 10;

return rev;

public static boolean isAdam(int num) {

int sqNum = num * num;

int revNum = reverse(num);

int sqRevNum = revNum * revNum;

int rev = reverse(sqNum);


return rev == sqRevNum;

public static boolean isPrime(int num) {

int c = 0;

for (int i = 1; i <= num; i++) {

if (num % i == 0) {

c++;

return c == 2;

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("Enter the value of m: ");

int m = in.nextInt();

System.out.print("Enter the value of n: ");

int n = in.nextInt();

int count = 0;

if (m >= n) {

System.out.println("INVALID INPUT");

return;

System.out.println("THE PRIME-ADAM INTEGERS ARE:");

for (int i = m; i <= n; i++) {

boolean adam = isAdam(i);


if (adam) {

boolean prime = isPrime(i);

if (prime) {

System.out.print(i + " ");

count++;

if (count == 0) {

System.out.print("NIL");

System.out.println();

System.out.println("FREQUENCY OF PRIME-ADAM INTEGERS IS: " + count);

Output
Q. 2

A company manufactures packing cartons in four sizes, i.e. cartons to accommodate 6 boxes, 12
boxes, 24 boxes and 48 boxes. Design a program to accept the number of boxes to be packed (N) by
the user (maximum up to 1000 boxes) and display the break-up of the cartons used in descending
order of capacity (i.e. preference should be given to the highest capacity available, and if boxes left
are less than 6, an extra carton of capacity 6 should be used.)

Test your program with the following data and some random data:

Example 1

INPUT:
N = 726

OUTPUT:
48 * 15 = 720
6*1=6
Remaining boxes = 0
Total number of boxes = 726
Total number of cartons = 16

Example 2

INPUT:
N = 140

OUTPUT:
48 * 2 = 96
24 * 1 = 24
12 * 1 = 12
6*1=6
Remaining boxes = 2 * 1 = 2
Total number of boxes = 140
Total number of cartons = 6

Example 3

INPUT:
N = 4296

OUTPUT:
INVALID INPUT

Solution

import java.util.Scanner;

public class CartonBoxes

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("Enter number of boxes (N): ");


int n = in.nextInt();

if (n < 1 || n > 1000) {

System.out.println("INVALID INPUT");

return;

int cartonSizes[] = {48, 24, 12, 6};

int total = 0;

int t = n;

for (int i = 0; i < cartonSizes.length; i++) {

int cartonCount = t / cartonSizes[i];

t = t % cartonSizes[i];

total += cartonCount;

if (cartonCount != 0) {

System.out.println(cartonSizes[i] + " * " + cartonCount +

" = " + (cartonSizes[i] * cartonCount));

/*

* This if check is for the case when

* boxes left are less than 6. We need

* one more carton of capacity 6 in this

* case so total is incremented by 1.

*/

if (t != 0) {

System.out.println("Remaining boxes = " + t

+ " * 1 = " + t);

total++;
}

else {

System.out.println("Remaining boxes = 0");

System.out.println("Total number of boxes = " + n);

System.out.println("Total number of cartons = " + total);

Output
Question 3

A Circular Prime is a prime number that remains prime under cyclic shifts of its digits. When the
leftmost digit is removed and replaced at the end of the remaining string of digits, the generated
number is still prime. The process is repeated until the original number is reached again.
A number is said to be prime if it has only two factors 1 and itself.

Example:
131
311
113
Hence, 131 is a circular prime.

Accept a positive number N and check whether it is a circular prime or not. The new numbers
formed after the shifting of the digits should also be displayed.

Test your program with the following data and some random data:

Example 1

INPUT:
N = 197

OUTPUT:
197
971
719
197 IS A CIRCULAR PRIME.

Example 2

INPUT:
N = 1193

OUTPUT:
1193
1931
9311
3119
1193 IS A CIRCULAR PRIME.

Example 3

INPUT:
N = 29

OUTPUT:
29
92
29 IS NOT A CIRCULAR PRIME.

Solution

import java.util.Scanner;

public class CircularPrime

{
public static boolean isPrime(int num) {

int c = 0;

for (int i = 1; i <= num; i++) {

if (num % i == 0) {

c++;

return c == 2;

public static int getDigitCount(int num) {

int c = 0;

while (num != 0) {

c++;

num /= 10;

return c;

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("ENTER INTEGER TO CHECK (N): ");

int n = in.nextInt();

if (n <= 0) {

System.out.println("INVALID INPUT");

return;
}

boolean isCircularPrime = true;

if (isPrime(n)) {

System.out.println(n);

int digitCount = getDigitCount(n);

int divisor = (int)(Math.pow(10, digitCount - 1));

int n2 = n;

for (int i = 1; i < digitCount; i++) {

int t1 = n2 / divisor;

int t2 = n2 % divisor;

n2 = t2 * 10 + t1;

System.out.println(n2);

if (!isPrime(n2)) {

isCircularPrime = false;

break;

else {

isCircularPrime = false;

if (isCircularPrime) {

System.out.println(n + " IS A CIRCULAR PRIME.");

else {

System.out.println(n + " IS NOT A CIRCULAR PRIME.");

}
}

Output
Question 4

A Goldbach number is a positive even integer that can be expressed as the sum of two odd primes.

Note: All even integer numbers greater than 4 are Goldbach numbers.

Example:

6=3+3
10 = 3 + 7
10 = 5 + 5

Hence, 6 has one odd prime pair 3 and 3. Similarly, 10 has two odd prime pairs, i.e. 3 and 7, 5 and 5.

Write a program to accept an even integer 'N' where N > 9 and N < 50. Find all the odd prime pairs
whose sum is equal to the number 'N'.

Test your program with the following data and some random data:

Example 1

INPUT:
N = 14

OUTPUT:
PRIME PAIRS ARE:
3, 11
7, 7

Example 2

INPUT:
N = 30
OUTPUT:
PRIME PAIRS ARE:
7, 23
11, 19
13, 17

Example 3

INPUT:
N = 17

OUTPUT:
INVALID INPUT. NUMBER IS ODD.

Example 4

INPUT:
N = 126

OUTPUT:
INVALID INPUT. NUMBER OUT OF RANGE.

Solution

import java.util.Scanner;

public class GoldbachNumber

public static boolean isPrime(int num) {

int c = 0;

for (int i = 1; i <= num; i++) {

if (num % i == 0) {

c++;

return c == 2;

public static void main(String args[]) {

Scanner in = new Scanner(System.in);


System.out.print("ENTER THE VALUE OF N: ");

int n = in.nextInt();

if (n <= 9 || n >= 50) {

System.out.println("INVALID INPUT. NUMBER OUT OF RANGE.");

return;

if (n % 2 != 0) {

System.out.println("INVALID INPUT. NUMBER IS ODD.");

return;

System.out.println("PRIME PAIRS ARE:");

int a = 3;

int b = 0;

while (a <= n / 2) {

b = n - a;

if (isPrime(a) && isPrime(b)) {

System.out.println(a + ", " + b);

a += 2;

Output
Question 5

Design a program to accept a day number (between 1 and 366), year (in 4 digits) from the user to
generate and display the corresponding date. Also, accept 'N' (1 <= N <= 100) from the user to
compute and display the future date corresponding to 'N' days after the generated date. Display an
error message if the value of the day number, year and N are not within the limit or not according to
the condition specified.

Test your program with the following data and some random data:

Example 1
INPUT:
DAY NUMBER: 255
YEAR: 2018
DATE AFTER (N DAYS): 22

OUTPUT:
DATE: 12TH SEPTEMBER, 2018
DATE AFTER 22 DAYS: 4TH OCTOBER, 2018

Example 2

INPUT:
DAY NUMBER: 360
YEAR: 2018
DATE AFTER (N DAYS): 45

OUTPUT:
DATE: 26TH DECEMBER, 2018
DATE AFTER 45 DAYS: 9TH FEBRUARY, 2019

Example 3

INPUT:
DAY NUMBER: 500
YEAR: 2018
DATE AFTER (N DAYS): 33

OUTPUT:
DAY NUMBER OUT OF RANGE

Example 4

INPUT:
DAY NUMBER: 150
YEAR: 2018
DATE AFTER (N DAYS): 330

OUTPUT:
DATE AFTER (N DAYS) OUT OF RANGE

Solution

import java.util.Scanner;

public class DateCalculator

public static boolean isLeapYear(int y) {

boolean ret = false;


if (y % 400 == 0) {

ret = true;

else if (y % 100 == 0) {

ret = false;

else if (y % 4 == 0) {

ret = true;

else {

ret = false;

return ret;

public static String computeDate(int day, int year) {

int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

String monthNames[] = {"JANUARY", "FEBRUARY", "MARCH",

"APRIL", "MAY", "JUNE",

"JULY", "AUGUST", "SEPTEMBER",

"OCTOBER", "NOVEMBER", "DECEMBER"};

boolean leap = isLeapYear(year);

if (leap) {

monthDays[1] = 29;

int i = 0;

int daySum = 0;
for (i = 0; i < monthDays.length; i++) {

daySum += monthDays[i];

if (daySum >= day) {

break;

int date = day + monthDays[i] - daySum;

StringBuffer sb = new StringBuffer();

sb.append(date);

sb.append("TH ");

sb.append(monthNames[i]);

sb.append(", ");

sb.append(year);

return sb.toString();

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("DAY NUMBER: ");

int dayNum = in.nextInt();

System.out.print("YEAR: ");

int year = in.nextInt();

System.out.print("DATE AFTER (N DAYS): ");

int n = in.nextInt();

if (dayNum < 1 || dayNum > 366) {

System.out.println("DAY NUMBER OUT OF RANGE");

return;
}

if (n < 1 || n > 100) {

System.out.println("DATE AFTER (N DAYS) OUT OF RANGE");

return;

String dateStr = computeDate(dayNum, year);

int nDays = dayNum + n;

int nYear = year;

boolean leap = isLeapYear(year);

if (leap && nDays > 366) {

nYear = nYear + 1;

nDays = nDays - 366;

else if (nDays > 365) {

nYear = nYear + 1;

nDays = nDays - 365;

String nDateStr = computeDate(nDays, nYear);

System.out.println();

System.out.println("DATE: " + dateStr);

System.out.println("DATE AFTER " + n

+ " DAYS: " + nDateStr);

Output
Array Programs:

Questions:
Question 1.
A class Mixarray contains an array of integer elements along with its capacity
(More than or equal to 3). Using the following description, form a new array of
integers which will contain only the first 3 elements of the two different arrays
one after another.
Example: Array1: { 78, 90, 100, 45, 67 }
Array2: {10, 67, 200, 90 }
Resultant Array: { 78, 90, 100, 10, 67, 200}
The details of the members of the class are given below:
Class name : Mixarray

Data members/instance variables:


arr[] : integer array
cap : integer to store the capacity of the array.

Member functions/methods:
Mixarray (int mm ) : to initialize the capacity of the array cap=mm
void input( ) : to accept the elements of the array
Mixarray mix(Mixarray P, Mixarray Q) : returns the resultant array having the
first 3
elements of the array of objects P and Q
void display( ) : to display the array with an appropriate message.

Specify the class Mixarray giving details of the constructor(int),


void input( ), Mixarray mix(Mixarray,Mixarray) and void display( ). Define
a main( ) function to create objects and call all the functions accordingly to enable
the task.
Question 1

Write a program to declare a matrix A[][] of order (M x N) where 'M' is the number of rows and 'N' is
the number of columns such that the value of 'M' must be greater than 0 and less than 10 and the
value of 'N' must be greater than 2 and less than 6. Allow the user to input digits (0 - 7) only at each
location, such that each row represents an octal number.

Example:

2 3 1 (decimal equivalent of 1st row = 153 i.e. 2x82 + 3x81 + 1x80)

4 0 5 (decimal equivalent of 2nd row = 261 i.e. 4x82 + 0x81 + 5x80)

1 5 6 (decimal equivalent of 3rd row = 110 i.e. 1x82 + 5x81 + 6x80)

Perform the following tasks on the matrix:

1. Display the original matrix.

2. Calculate the decimal equivalent for each row and display as per the format given below.

Test your program for the following data and some random data:

Example 1:

INPUT:
M=1
N=3
ENTER ELEMENTS FOR ROW 1: 1 4 4

OUTPUT:

FILLED MATRIX DECIMAL EQUIVALENT

1 4 4 100

Example 2:

INPUT:
M=3
N=4
ENTER ELEMENTS FOR ROW 1: 1 1 3 7
ENTER ELEMENTS FOR ROW 2: 2 1 0 6
ENTER ELEMENTS FOR ROW 3: 0 2 4 5

OUTPUT:

FILLED MATRIX DECIMAL EQUIVALENT


1 1 3 7 607

2 1 0 6 1094

0 2 4 5 165

Example 3:

INPUT:
M=3
N=3
ENTER ELEMENTS FOR ROW 1: 2 4 8

OUTPUT:
INVALID INPUT

Example 4:

INPUT:
M=4
N=6

OUTPUT:
OUT OF RANGE

Solution

import java.util.Scanner;

public class OctalMatrix

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("Enter the number of rows (M): ");

int m = in.nextInt();

System.out.print("Enter the number of columns (N): ");

int n = in.nextInt();

if (m <= 0 || m >= 10 || n <= 2 || n >= 6) {

System.out.println("OUT OF RANGE");
return;

int a[][] = new int[m][n];

for (int i = 0; i < m; i++) {

System.out.println("ENTER ELEMENTS FOR ROW " + (i + 1) + ": ");

for (int j = 0; j < n; j++) {

a[i][j] = in.nextInt();

if (a[i][j] < 0 || a[i][j] > 7) {

System.out.println("INVALID INPUT");

return;

System.out.println("FILLED MATRIX\tDECIMAL EQUIVALENT");

for (int i = 0; i < m; i++) {

int decNum = 0;

for (int j = 0; j < n; j++) {

decNum += a[i][j] * Math.pow(8, n - j - 1 );

System.out.print(a[i][j] + " ");

System.out.print("\t\t" + decNum);

System.out.println();

Output
Question 2

Write a program to declare a single-dimensional array a[] and a square matrix b[][] of size N, where N
> 2 and N < 10. Allow the user to input positive integers into the single dimensional array.

Perform the following tasks on the matrix:


1. Sort the elements of the single-dimensional array in ascending order using any standard
sorting technique and display the sorted elements.

2. Fill the square matrix b[][] in the following format:


If the array a[] = {5, 2, 8, 1} then, after sorting a[] = {1, 2, 5, 8}
Then, the matrix b[][] would fill as below:

12581251121211251111222155128125

3. Display the filled matrix in the above format.

Test your program for the following data and some random data:

Example 1

INPUT:
N=3
ENTER ELEMENTS OF SINGLE DIMENSIONAL ARRAY: 3 1 7

OUTPUT:
SORTED ARRAY: 1 3 7
FILLED MATRIX

137131113111331713

Example 2

INPUT:
N = 13

OUTPUT:
MATRIX SIZE OUT OF RANGE

Example 3

INPUT:
N=5
ENTER ELEMENTS OF SINGLE DIMENSIONAL ARRAY: 10 2 5 23 6

OUTPUT:
SORTED ARRAY: 2 5 6 10 23
FILLED MATRIX

2561023256102256252525622561022222555526662510102562325610

Solution

import java.util.Scanner;

public class Array

public static void sortArray(int arr[]) {

int n = arr.length;
for (int i = 0; i < n - 1; i++) {

for (int j = 0; j < n - i - 1; j++) {

if (arr[j] > arr[j + 1]) {

int t = arr[j];

arr[j] = arr[j+1];

arr[j+1] = t;

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("ENTER VALUE OF N: ");

int n = in.nextInt();

if (n <= 2 || n >= 10) {

System.out.println("MATRIX SIZE OUT OF RANGE");

return;

int a[] = new int[n];

int b[][] = new int[n][n];

System.out.println("ENTER ELEMENTS OF SINGLE DIMENSIONAL ARRAY:");

for (int i = 0; i < n; i++) {

a[i] = in.nextInt();

sortArray(a);

System.out.println("SORTED ARRAY:");
for (int i = 0; i < n; i++) {

System.out.print(a[i] + " ");

for (int i = n - 1, r = 0; i >= 0; i--, r++) {

for (int j = 0; j <= i; j++) {

b[r][j] = a[j];

for (int k = n - 1; k > i; k--) {

b[r][k] = a[k - i - 1];

System.out.println();

System.out.println("FILLED MATRIX:");

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

System.out.print(b[i][j] + " ");

System.out.println();

Output
Question 3

The result of a quiz competition is to be prepared as follows:

The quiz has five questions with four multiple choices (A, B, C, D), with each question carrying 1 mark
for the correct answer. Design a program to accept the number of participants N such that N must be
greater than 3 and less than 11. Create a double-dimensional array of size (Nx5) to store the answers
of each participant row-wise. Calculate the marks for each participant by matching the correct
answer stored in a single-dimensional array of size 5. Display the scores for each participant and also
the participant(s) having the highest score.

Example: If the value of N = 4, then the array would be:


Q1 Q2 Q3 Q4 Q5

Participant 1 A B B C A

Participant 2 D A D C B

Participant 3 A A B A C

Participant 4 D C C A B

Key to the question: D C C B A

Note: Array entries are line fed (i.e. one entry per line)

Test your program for the following data and some random data.

Example 1

INPUT:
N=5
Participant 1 D A B C C
Participant 2 A A D C B
Participant 3 B A C D B
Participant 4 D A D C B
Participant 5 B C A D D
Key: B C D A A

OUTPUT:
Scores:
Participant 1 = 0
Participant 2 = 1
Participant 3 = 1
Participant 4 = 1
Participant 5 = 2
Highest Score:
Participant 5

Example 2

INPUT:
N=4
Participant 1 A C C B D
Participant 2 B C A A C
Participant 3 B C B A A
Participant 4 C C D D B
Key: A C D B B

OUTPUT:
Scores:
Participant 1 = 3
Participant 2 = 1
Participant 3 = 1
Participant 4 = 3
Highest Score:
Participant 1
Participant 4

Example 3

INPUT:
N = 12

OUTPUT:
INPUT SIZE OUT OF RANGE.

Solution

import java.util.Scanner;

public class QuizCompetition

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("Enter the Number of Participants (N): ");

int n = in.nextInt();

if (n <= 3 || n >= 11) {

System.out.println("INPUT SIZE OUT OF RANGE.");

return;

char answers[][] = new char[n][5];

char key[] = new char[5];

System.out.println("Enter answers of participants");

for (int i = 0; i < n; i++) {

System.out.println("Participant " + (i+1));

for (int j = 0; j < 5; j++) {


answers[i][j] = in.next().charAt(0);

System.out.println("Enter Answer Key:");

for (int i = 0; i < 5; i++) {

key[i] = in.next().charAt(0);

int hScore = 0;

int score[] = new int[n];

System.out.println("Scores:");

for (int i = 0; i < n; i++) {

for (int j = 0; j < 5; j++) {

if (answers[i][j] == key[j]) {

score[i]++;

if (score[i] > hScore) {

hScore = score[i];

System.out.println("Participant " + (i+1) + " = " + score[i]);

System.out.println("Highest Score:");

for (int i = 0; i < n; i++) {

if (score[i] == hScore) {

System.out.println("Participant " + (i+1));


}

Output
Question 4

Write a program to declare a square matrix A[][] of order (M × M) where 'M' must be greater than 3
and less than 10. Allow the user to input positive integers into this matrix. Perform the following
tasks on the matrix:

1. Sort the non-boundary elements in ascending order using any standard sorting technique
and rearrange them in the matrix.

2. Calculate the sum of both the diagonals.

3. Display the original matrix, rearranged matrix and only the diagonal elements of the
rearranged matrix with their sum.

Test your program for the following data and some random data:

Example 1

INPUT:
M=4
9 2 1 5
8 13 8 4
15 6 3 11
7 12 23 8

OUTPUT:
ORIGINAL MATRIX
9 2 1 5
8 13 8 4
15 6 3 11
7 12 23 8
REARRANGED MATRIX
9 2 1 5
8 3 6 4
15 8 13 11
7 12 23 8
DIAGONAL ELEMENTS
9 5
3 6
8 13
7 8
SUM OF THE DIAGONAL ELEMENTS = 59

Example 2

INPUT:
M=5
7 4 1 9 5
8 2 6 10 19
13 1 3 5 1
10 0 5 12 16
1 8 17 6 8

OUTPUT:
ORIGINAL MATRIX
7 4 1 9 5
8 2 6 10 19
13 1 3 5 1
10 0 5 12 16
1 8 17 6 8
REARRANGED MATRIX
7 4 1 9 5
8 0 1 2 19
13 3 5 5 1
10 6 10 12 16
1 8 17 6 8
DIAGONAL ELEMENTS
7 5
0 2
5
6 12
1 8
SUM OF THE DIAGONAL ELEMENTS = 46

Example 3

INPUT:
M=3

OUTPUT:
THE MATRIX SIZE IS OUT OF RANGE.
Solution

import java.util.Scanner;

public class MatrixSort

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("ENTER MATRIX SIZE (M): ");

int m = in.nextInt();

if (m <= 3 || m >= 10) {

System.out.println("THE MATRIX SIZE IS OUT OF RANGE.");

return;

int a[][] = new int[m][m];

System.out.println("ENTER ELEMENTS OF MATRIX");

for (int i = 0; i < m; i++) {

System.out.println("ENTER ROW " + (i+1) + ":");

for (int j = 0; j < m; j++) {

a[i][j] = in.nextInt();

/*

* Only positive integers

* should be enetered

*/

if (a[i][j] < 0) {

System.out.println("INVALID INPUT");

return;

}
}

System.out.println("ORIGINAL MATRIX");

printMatrix(a, m);

sortNonBoundaryMatrix(a, m);

System.out.println("REARRANGED MATRIX");

printMatrix(a, m);

computePrintDiagonalSum(a, m);

public static void sortNonBoundaryMatrix(int a[][], int m) {

/*

* To sort non-boundary elements of Matrix

* copy the non-boundary elements in a

* single dimensional array. Sort the

* single dimensional array and assign the

* sorted elements back in the 2D array at

* their respective positions

*/

int b[] = new int[(m - 2) * (m - 2)];

int k = 0;

for (int i = 1; i < m - 1; i++) {

for (int j = 1; j < m - 1; j++) {

b[k++] = a[i][j];

for (int i = 0; i < k - 1; i++) {

for (int j = 0; j < k - i - 1; j++) {


if (b[j] > b[j + 1]) {

int t = b[j];

b[j] = b[j+1];

b[j+1] = t;

k = 0;

for (int i = 1; i < m - 1; i++) {

for (int j = 1; j < m - 1; j++) {

a[i][j] = b[k++];

public static void computePrintDiagonalSum(int a[][], int m) {

int sum = 0;

System.out.println("DIAGONAL ELEMENTS");

for (int i = 0; i < m; i++) {

for (int j = 0; j < m; j++) {

if (i == j || i + j == m - 1) {

sum += a[i][j];

System.out.print(a[i][j] + "\t");

else {

System.out.print("\t");

System.out.println();

}
System.out.println("SUM OF THE DIAGONAL ELEMENTS = " + sum);

public static void printMatrix(int a[][], int m) {

for (int i = 0; i < m; i++) {

for (int j = 0; j < m; j++) {

System.out.print(a[i][j] + "\t");

System.out.println();

Output
Question 5

Write a program to declare a matrix a[][] of order (m × n) where 'm' is the number of rows and 'n' is
the number of columns such that the values of both 'm' and 'n' must be greater than 2 and less than
10. Allow the user to input integers into this matrix. Perform the following tasks on the matrix:

1. Display the original matrix.

2. Sort each row of the matrix in ascending order using any standard sorting technique.

3. Display the changed matrix after sorting each row.

Test your program for the following data and some random data:

Example 1

INPUT:
M=4
N=3

ENTER ELEMENTS OF MATRIX:

11−23516790431811593−216013748

OUTPUT:
ORIGINAL MATRIX

11−23516790431811593−216013748

MATRIX AFTER SORTING ROWS

−23115716049138−25013743111698

Example 2
INPUT:
M=3
N=3

ENTER ELEMENTS OF MATRIX

2251973612913622795361319126

OUTPUT:
ORIGINAL MATRIX

2251973612913622795361319126

MATRIX AFTER SORTING ROWS

5192271236691357619129223613

Example 3

INPUT:
M = 11
N=5

OUTPUT:
MATRIX SIZE OUT OF RANGE.

Solution

import java.util.Scanner;

public class ArraySort

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.print("ENTER THE VALUE OF M: ");

int m = in.nextInt();

System.out.print("ENTER THE VALUE OF N: ");

int n = in.nextInt();

if (m <= 2

|| m >= 10

|| n <= 2

|| n >= 10) {

System.out.println("MATRIX SIZE OUT OF RANGE.");


return;

int a[][] = new int[m][n];

System.out.println("ENTER ELEMENTS OF MATRIX:");

for (int i = 0; i < m; i++) {

System.out.println("ENTER ELEMENTS OF ROW " + (i+1) + ":");

for (int j = 0; j < n; j++) {

a[i][j] = in.nextInt();

System.out.println("ORIGINAL MATRIX");

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

System.out.print(a[i][j] + " ");

System.out.println();

for (int i = 0; i < m; i++) {

for (int j = 0; j < n - 1; j++) {

for (int k = 0; k < n - j - 1; k++) {

if (a[i][k] > a[i][k + 1]) {

int t = a[i][k];

a[i][k] = a[i][k+1];

a[i][k+1] = t;

}
System.out.println("MATRIX AFTER SORTING ROWS");

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

System.out.print(a[i][j] + " ");

System.out.println();

Output
String Program:
Question 1

Write a program to accept a sentence which may be terminated by either '.', '?' or '!' only. The words
are to be separated by a single blank space and are in UPPER CASE.

Perform the following tasks:

1. Check for the validity of the accepted sentence only for the terminating character.

2. Arrange the words in ascending order of their length. If two or more words have the same
length, then sort them alphabetically.

3. Display the original sentence along with the converted sentence.

Test your program for the following data and some random data:

Example 1:

INPUT:
AS YOU SOW SO SHALL YOU REAP.

OUTPUT:
AS YOU SOW SO SHALL YOU REAP.
AS SO SOW YOU YOU REAP SHALL

Example 2:

INPUT:
SELF HELP IS THE BEST HELP.

OUTPUT:
SELF HELP IS THE BEST HELP.
IS THE BEST HELP HELP SELF
Example 3:

INPUT:
BE KIND TO OTHERS.

OUTPUT:
BE KIND TO OTHERS.
BE TO KIND OTHERS

Example 4:

INPUT:
NOTHING IS IMPOSSIBLE#

OUTPUT:
INVALID INPUT

Solution

import java.util.*;

public class StringCheck

public static String sortString(String ipStr) {

StringTokenizer st = new StringTokenizer(ipStr);

int wordCount = st.countTokens();

String strArr[] = new String[wordCount];

for (int i = 0; i < wordCount; i++) {

strArr[i] = st.nextToken();

for (int i = 0; i < wordCount - 1; i++) {

for (int j = 0; j < wordCount - i - 1; j++) {

if (strArr[j].length() > strArr[j + 1].length()) {

String t = strArr[j];

strArr[j] = strArr[j+1];

strArr[j+1] = t;

}
if (strArr[j].length() == strArr[j + 1].length()

&&(strArr[j].compareTo(strArr[j+1]) > 0))

String t = strArr[j];

strArr[j] = strArr[j+1];

strArr[j+1] = t;

StringBuffer sb = new StringBuffer();

for (int i = 0; i < wordCount; i++) {

sb.append(strArr[i]);

sb.append(" ");

/*

* trim will remove the extra space added

* to the end of the string in the loop above

*/

return sb.toString().trim();

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.println("Enter a sentence:");

String str = in.nextLine();

int len = str.length();

System.out.println();

if (str.charAt(len - 1) != '.'
&& str.charAt(len - 1) != '?'

&& str.charAt(len - 1) != '!') {

System.out.println("INVALID INPUT");

return;

/*

* str.substring(0, len - 1) removes the

* '.', '?', '!' at the end of the string

*/

String sortedStr = sortString(str.substring(0, len - 1));

System.out.println(str);

System.out.println(sortedStr);

Output
Question 2

Caesar Cipher is an encryption technique which is implemented as ROT13 ('rotate by 13 places'). It is


a simple letter substitution cipher that replaces a letter with the letter 13 places after it in the
alphabets, with the other characters remaining unchanged.

ROT13

A/a B/b C/c D/d E/e F/f G/g H/h I/i J/j K/k L/l M/m

↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕

N/n O/o P/p Q/q R/r S/s T/t U/u V/v W/w X/x Y/y Z/z

Write a program to accept a plain text of length L, where L must be greater than 3 and less than 100.

Encrypt the text if valid as per the Caesar Cipher.

Test your program with the sample data and some random data.
Example 1

INPUT:
Hello! How are you?

OUTPUT:
The cipher text is:
Uryyb! Ubj ner lbh?

Example 2

INPUT:
Encryption helps to secure data.

OUTPUT:
The cipher text is:
Rapelcgvba urycf gb frpher qngn.

Example 3

INPUT:
You

OUTPUT:
INVALID LENGTH

Solution

import java.util.Scanner;

public class CaesarCipher

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.println("Enter plain text:");

String str = in.nextLine();

int len = str.length();

if (len <= 3 || len >= 100) {

System.out.println("INVALID LENGTH");

return;

StringBuffer sb = new StringBuffer();


for (int i = 0; i < len; i++) {

char ch = str.charAt(i);

if ((ch >= 'A' && ch <= 'M') || (ch >= 'a' && ch <= 'm')) {

sb.append((char)(ch + 13));

else if ((ch >= 'N' && ch <= 'Z') || (ch >= 'n' && ch <= 'z')) {

sb.append((char)(ch - 13));

else {

sb.append(ch);

String cipher = sb.toString();

System.out.println("The cipher text is:");

System.out.println(cipher);

Output
Q3. Write a program to accept a sentence which may be terminated by either '.', '?' or '!' only. The
words may be separated by more than one blank space and are in UPPER CASE.

Perform the following tasks:

1. Find the number of words beginning and ending with a vowel.


2. Place the words which begin and end with a vowel at the beginning, followed by the
remaining words as they occur in the sentence.

Test your program with the sample data and some random data:

Example 1

INPUT:
ANAMIKA AND SUSAN ARE NEVER GOING TO QUARREL ANYMORE.

OUTPUT:
NUMBER OF WORDS BEGINNING AND ENDING WITH A VOWEL = 3
ANAMIKA ARE ANYMORE AND SUSAN NEVER GOING TO QUARREL

Example 2

INPUT:
YOU MUST AIM TO BE A BETTER PERSON TOMORROW THAN YOU ARE TODAY.

OUTPUT:
NUMBER OF WORDS BEGINNING AND ENDING WITH A VOWEL = 2
A ARE YOU MUST AIM TO BE BETTER PERSON TOMORROW THAN YOU TODAY

Example 3

INPUT:
LOOK BEFORE YOU LEAP.

OUTPUT:
NUMBER OF WORDS BEGINNING AND ENDING WITH A VOWEL = 0
LOOK BEFORE YOU LEAP

Example 4

INPUT:
HOW ARE YOU@

OUTPUT:
INVALID INPUT

Solution

import java.util.*;

public class VowelWord

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.println("ENTER THE SENTENCE:");

String ipStr = in.nextLine().trim().toUpperCase();


int len = ipStr.length();

char lastChar = ipStr.charAt(len - 1);

if (lastChar != '.'

&& lastChar != '?'

&& lastChar != '!') {

System.out.println("INVALID INPUT");

return;

String str = ipStr.substring(0, len - 1);

StringTokenizer st = new StringTokenizer(str);

StringBuffer sbVowel = new StringBuffer();

StringBuffer sb = new StringBuffer();

int c = 0;

while (st.hasMoreTokens()) {

String word = st.nextToken();

int wordLen = word.length();

if (isVowel(word.charAt(0))

&& isVowel(word.charAt(wordLen - 1))) {

c++;

sbVowel.append(word);

sbVowel.append(" ");

else {

sb.append(word);

sb.append(" ");

}
String newStr = sbVowel.toString() + sb.toString();

System.out.println("NUMBER OF WORDS BEGINNING AND ENDING WITH A VOWEL = " + c);

System.out.println(newStr);

public static boolean isVowel(char ch) {

ch = Character.toUpperCase(ch);

boolean ret = false;

if (ch == 'A'

|| ch == 'E'

|| ch == 'I'

|| ch == 'O'

|| ch == 'U')

ret = true;

return ret;

Output
Question 4

The names of the teams participating in a competition should be displayed on a banner vertically, to
accommodate as many teams as possible in a single banner. Design a program to accept the names
of N teams, where 2 < N < 9 and display them in vertical order, side by side with a horizontal tab (i.e.
eight spaces).

Test your program for the following data and some random data:

Example 1
INPUT:
N=3
Team 1: Emus
Team 2: Road Rols
Team 3: Coyote

OUTPUT:
E R C
m o o
u a y
s d o
t
R e
o
l
s

Example 2

INPUT:
N=4
Team 1: Royal
Team 2: Mars
Team 3: De Rose
Team 4: Kings

OUTPUT:
R M D K
o a e i
y r n
a s R g
l o s
s
e

Example 3

INPUT:
N = 10

OUTPUT:
INVALID INPUT

Solution

import java.util.Scanner;

public class Banner

public static void main(String args[]) {


Scanner in = new Scanner(System.in);

System.out.print("ENTER THE VALUE OF N: ");

int n = in.nextInt();

in.nextLine();

if (n <= 2 || n >= 9) {

System.out.println("INVALID INPUT");

return;

String teams[] = new String[n];

int highLen = 0;

for (int i = 0; i < n; i++) {

System.out.print("Team " + (i+1) + ": ");

teams[i] = in.nextLine();

if (teams[i].length() > highLen) {

highLen = teams[i].length();

for (int i = 0; i < highLen; i++) {

for (int j = 0; j < n; j++) {

int len = teams[j].length();

if (i >= len) {

System.out.print(" \t");

else {

System.out.print(teams[j].charAt(i) + "\t");

}
System.out.println();

Output
Question 5

Write a program to accept a sentence which may be terminated by either ‘.’, ‘?’ or ‘!’ only. The words
are to be separated by a single blank space and are in uppercase.

Perform the following tasks:

(a) Check for the validity of the accepted sentence.

(b) Convert the non-palindrome words of the sentence into palindrome words by concatenating the
word by its reverse (excluding the last character).

Example:

The reverse of the word HELP would be LEH (omitting the last alphabet) and by concatenating both,
the new palindrome word is HELPLEH. Thus, the word HELP becomes HELPLEH.

Note: The words which end with repeated alphabets, for example ABB would become ABBA and not
ABBBA and XAZZZ becomes XAZZZAX.

[Palindrome word: Spells same from either side. Example: DAD, MADAM etc.]

(c) Display the original sentence along with the converted sentence.

Test your program for the following data and some random data:

Example 1

INPUT:
THE BIRD IS FLYING.

OUTPUT:
THE BIRD IS FLYING.
THEHT BIRDRIB ISI FLYINGNIYLF
Example 2

INPUT:
IS THE WATER LEVEL RISING?

OUTPUT:
IS THE WATER LEVEL RISING?
ISI THEHT WATERETAW LEVEL RISINGNISIR

Example 3

INPUT:
THIS MOBILE APP LOOKS FINE.

OUTPUT:
THIS MOBILE APP LOOKS FINE.
THISIHT MOBILELIBOM APPA LOOKSKOOL FINENIF

Example 3

INPUT:
YOU MUST BE CRAZY#

OUTPUT:
INVALID INPUT

Solution

import java.util.*;

public class Palindrome

public static boolean isPalindrome(String word) {

boolean palin = true;

int len = word.length();

for (int i = 0; i <= len / 2; i++) {

if (word.charAt(i) != word.charAt(len - 1 - i)) {

palin = false;

break;

}
return palin;

public static String makePalindrome(String word) {

int len = word.length();

char lastChar = word.charAt(len - 1);

int i = len - 1;

while (word.charAt(i) == lastChar) {

i--;

StringBuffer sb = new StringBuffer(word);

for (int j = i; j >= 0; j--) {

sb.append(word.charAt(j));

return sb.toString();

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

System.out.println("ENTER THE SENTENCE:");

String ipStr = in.nextLine().trim().toUpperCase();

int len = ipStr.length();

char lastChar = ipStr.charAt(len - 1);

if (lastChar != '.'

&& lastChar != '?'

&& lastChar != '!') {

System.out.println("INVALID INPUT");

return;
}

String str = ipStr.substring(0, len - 1);

StringTokenizer st = new StringTokenizer(str);

StringBuffer sb = new StringBuffer();

while (st.hasMoreTokens()) {

String word = st.nextToken();

boolean isPalinWord = isPalindrome(word);

if (isPalinWord) {

sb.append(word);

else {

String palinWord = makePalindrome(word);

sb.append(palinWord);

sb.append(" ");

String convertedStr = sb.toString().trim();

System.out.println();

System.out.println(ipStr);

System.out.println(convertedStr);

Output
Questions:

Write a program to accept a sentence which may be terminated by either ‘.’ or ‘?’
only. The words are to be separated by a single blank space. Print an error message
if the input does not terminate with ‘.’ or ‘?’. You can assume that no word in the
sentence exceeds 15 characters, so that you get a proper formatted output.
Perform the following tasks:
(1) Convert the first letter of each word to uppercase.
(ii) Find the number of vowels and consonants in each word and display them
with proper headings along with the words.

Test your program with the following inputs


Example 1
INPUT: Intelligence plus character is education.
OUTPUT:
Intelligence Plus Character Is Education

Word Vowels Consonants


Intelligence 5 7
Plus 1 3
Character 3 6
Is 1 1
Education 5 4

Example 2
INPUT : God is great.
OUTPUT:
God Is Great
Word Vowels Consonants
God 1 2
Is 1 1
Great 2 3
Example 3
INPUT: All the best!
OUTPUT:
Invalid Input.

You might also like