Tuesday, June 11, 2019

Số thuận nghịch trong java

Xin chào các bạn đang tìm hiểu về những bài tập lập trình java cơ bản, hôm nay tienanhvn sẽ trình bày cho các bạn một bài toán khá hay, khá logic, mình sẽ nói rõ bài toán như sau : 
Bạn hãy viết một chương trình kiểm tra số thuận nghịch.

VD :
Bạn nhập vào một số 1234 số này không phải là số thuận nghịch

Số thuận nghịch là gì ?

Là một số khi bạn đảo ngược lại cũng là chính nó, số thuận nghịch được gặp nhiều trong những bài toán sử dụng tính logic, những ứng dụng thực tế thì hiếm gặp.
VD:
12345 => 54321 số này không phải là số thuận nghịch.
558855 = >558855 số này là số thuận nghịch.

Thực hiện chương trình để tìm số thuận nghịch.


Cách 1: Thực hiện phép đảo ngược số
Viết hàm xử lý đảo ngược số như sau
 int sodaonguoc(int n){
   int temp =0, res = 0;
   while(n>0){
   temp = n%10;
   res = res*10 +temp;
   n = n/10;
   }
   return res;
   }
 Trong đó:
 temp = n%10 là thực hiện lấy số dư.
 res = res*10 +temp thực hiện phép nhân với cộng để
 n/=n10 thực hiện lấy phần nguyên.
 Thực hiện trong hàm main.
 kiểm tra sodaonguoc(n)== n?
 Cách 2. Thưc hiện thuật toán cộng với vòng lặp để thực hiện

 Viết hàm kiểm tra số thuận nghịch
 boolean check(int n){
int dem = 0, i= 0;
int a[] = new int[10];
while(n>0){
a[dem] = n%10;
n/=10;
dem +=1;
}
for(i =0;i<=dem/2;i++){
if(a[i] == a[dem-i-1]){
return true;
}
else{
return false;
}
}
return true;
}
Giải thích:
Ta khai báo một mảng một chiều có n phần tử, sau đó thực hiện vòng lặp white để gắn giá trị dư cho từng phần tử của mảng.
VD :
1234 = n
a[dem = 0] = n%10 = 1234%10 = 4;
a[dem = 1] = n%10 = 123%10 = 3;
....
Sau đó dùng vòng lặp for thực hiện đến dem/2, kiểm tra a[i] với a[dem-i-1];
Toàn bộ chương trình số thuận nghịch.
package baitap3;
public class Thuannghich {
boolean check(int n){
int dem = 0, i= 0;
int a[] = new int[10];
while(n>0){
a[dem] = n%10;
n/=10;
dem +=1;
}
for(i =0;i<=dem/2;i++){
if(a[i] == a[dem-i-1]){
return true;
}
else{
return false;
}
}
return true;
}
   int sodaonguoc(int n){
   int temp =0, res = 0;
   while(n>0){
   temp = n%10;
   res = res*10 +temp;
   n = n/10;
   }
   return res;
   }
public static void main(String args[]){
int n =558855;
Thuannghich tn = new Thuannghich();
if(tn.sodaonguoc(n) == n){
System.out.println("So thuan nghich"); }else{
System.out.println("So khong phai thuan nghich");
}
System.out.println("So dao nguoc : "+ tn.sodaonguoc(n));
if(tn.check(n)){
System.out.println("So thuan nghich");
}else{
System.out.println("So khong phai thuan nghich");
}
}
}

No comments:

Post a Comment