Bài Tập Java Số 15: Mô Phỏng Các Phép Toán Luận Lý
Đề bài
Viết chương trình mô phỏng các phép toán luận lý AND, OR, XOR trên hai chuỗi ký tự. Cho biết 2 chuỗi ký tự a và b (có thể có chiều dài khác nhau, chiều dài tối đa là 100), chỉ chứa các ký tự '0' hoặc '1'.Input: a,b.
Output: kết quả các phép toán a AND b, a OR b, và a XOR b cách nhau bởi dấu phẩy.
Giải thuật
Đầu tiên ta xét xem chuỗi nào có chiều dài thấp hơn thì ta sẽ tăng chiều dài của chuỗi đó lên để 2 chuỗi có chiều dài bằng nhau. Sau đó xét xem các ký tự có cùng chỉ mục của 2 chuỗi.Với phép toán AND, nếu cả hai ký tự cùng chỉ mục đều là '1' thì ký tự có cùng chỉ mục tương ứng của chuỗi kết quả sẽ là '1'. Các trường hợp khác đều là '0'.
Với phép toán OR, nếu cả hai ký tự cùng chỉ mục đều là '0' thì ký tự có cùng chỉ mục tương ứng của chuỗi kết quả sẽ là '0'. Các trường hợp khác đều là '1'.
Với phép toán XOR, nếu cả hai ký tự cùng chỉ mục đều là '1' hoặc đều là '0' thì ký tự có cùng chỉ mục tương ứng của chuỗi kết quả sẽ là '0'. Các trường hợp khác đều là '1'.
Code mẫu
package baitap15;
import java.util.Scanner;
public class baitap15 {
public static boolean ktchuoinhap(String a){
boolean kt = true;
for(int i=0;i<a.length();i++)
{
if(a.charAt(i)!='0' && a.charAt(i)!='1' )
{
kt = false;
break;
}
}
return kt;
}
public static void AND(String a, String b)
{
String AND = new String("");
for(int i=0;i<a.length();i++)
{
if(a.charAt(i)=='1'&&b.charAt(i)=='1')
AND+="1";
else
AND+="0";
}
System.out.print(AND);
}
public static void OR(String a, String b)
{
String OR = new String("");
for(int i=0;i<a.length();i++)
{
if(a.charAt(i)=='0'&&b.charAt(i)=='0')
OR+="0";
else
OR+="1";
}
System.out.print(OR);
}
public static void XOR(String a, String b)
{
String XOR = new String("");
for(int i=0;i<a.length();i++)
{
if((a.charAt(i)=='1'&&b.charAt(i)=='1')||a.charAt(i)=='0'&&b.charAt(i)=='0')
XOR+="0";
else
XOR+="1";
}
System.out.print(XOR);
}
public static void main(String[] args) {
String a = new String();
String b = new String();
Scanner nhap = new Scanner(System.in);
System.out.println("Nhap chuoi nhi phan thu nhat");
a = nhap.nextLine();
while(ktchuoinhap(a)==false)
{
System.out.println("Chuoi nhi phan chi chua ky tu 0 hoac 1. Vui long nhap lai");
a = nhap.nextLine();
}
System.out.println("Nhap chuoi nhi phan thu hai");
b = nhap.nextLine();
while(ktchuoinhap(b)==false)
{
System.out.println("Chuoi nhi phan chi chua ky tu 0 hoac 1. Vui long nhap lai");
a = nhap.nextLine();
}
if(a.length()<b.length())
{
for(int i=0;i<b.length()-a.length();i++)
{
a="0"+a;
}
}
if(a.length()>b.length())
{
for(int i=0;i<a.length()-b.length();i++)
{
b="0"+b;
}
}
AND(a,b);
System.out.print(", ");
OR(a,b);
System.out.print(", ");
XOR(a,b);
}
}
Post a Comment