Header Ads

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);
	}
}

Không có nhận xét nào

Được tạo bởi Blogger.