hàm xác định 2 mảng chuỗi có giao nhau hay không lỗi lạ

code của e như sau ạ.

#include <cstring>
#include <iostream>
using namespace std;

class boMa{
	public:
		boMa();
		~boMa();
		void setCount(int n);
		int getCount();
		void setTuMa(string str);
		string getTuMa(int i);
		bool giao(boMa S);
	private:
		string* tuMa;
		int n;
};

boMa::boMa(){
	tuMa=new string[100];
	n=0;
}
boMa::~boMa(){
	delete[] tuMa;
	n=0;
}
void boMa::setCount(int n){
	this->n=n;
}
int boMa::getCount(){
	return n;
}
void boMa::setTuMa(string str){
	bool c=true;
	for(int i=0;i<n;i++)
		if(tuMa[i]==str){
			c=false;
			break;
		}
	if(c==true){
		tuMa[n]=str;
		n++;
	}
}
string boMa::getTuMa(int i){
	return tuMa[i];
}
bool boMa::giao(boMa S){
	for(int i=0;i<n;i++)
		for(int j=0;i<S.getCount();j++)
			if(tuMa[i]==S.getTuMa(j)) return true;
	return false;
}
int main(){
	boMa W,S;
	int n=0;
	cout<<"Nhap so tu ma cua bo ma W: ";
	cin>>n;
	cout<<"Nhap cac tu ma cua bo ma W: (an phim Enter sau moi tu ma nhap vao)"<<endl;
	for(int i=0;i<n;i++){
		fflush(stdin);
		string str;
		cin>>str;
		W.setTuMa(str);
	}
	cout<<"Bo ma ban vua nhap: \n{";
	for(int i=0;i<W.getCount()-1;i++) cout<<W.getTuMa(i)<<","; cout<<W.getTuMa(n-1)<<"}\n";
	cout<<"Nhap so tu ma cua bo ma S: ";
	cin>>n;
	cout<<"Nhap cac tu ma cua bo ma S: (an phim Enter sau moi tu ma nhap vao)"<<endl;
	for(int i=0;i<n;i++){
		fflush(stdin);
		string str;
		cin>>str;
		S.setTuMa(str);
	}
	cout<<"Bo ma ban vua nhap: \n{";
	for(int i=0;i<S.getCount()-1;i++) cout<<S.getTuMa(i)<<","; cout<<S.getTuMa(n-1)<<"}\n";
	if(S.giao(W)) cout<<"Giao\n";
	else cout<<"Khong giao\n";
	system("pause");
	return 0;
}

mấy a test thì cho 2 trường hợp có giao và không giao luôn nha. e không biết làm sao để fixed nữa. TT.TT

là sao :v, bác post 1 đống code lên, chả cho ví dụ gì cả :v: , cũng chả nói đề bài là gì luôn @@

2 Likes

Đồng ý, lúc sáng trả lời một đống câu hỏi mà tới câu hỏi của Sáng còi là không hiểu gì luôn :expressionless:

1 Like

đọc tít không hiểu. đọc code cũng bó tay :v

2 Likes

sorry mấy a, tối qua hơi rét, bị cóng tay nên gõ phím hơi khó khăn nên e hơi sơ suất. :cry:
ví dụ là input có 2 bộ mã:

W={100,111,101,110}
S={010,101,1010,1011}

cần xác định xen W với S có phần tử nào chung (giao) không ấy ạ.

lấy từng thằng trong mảng A so sánh với tất cả các thằng trong mảng B, nếu = 1 thằng nào đó trong B thì đẩy thằng a đang xét qua mảng C, … :v

1 Like

chỉ cần xét có giao hay không thôi nên không cần mảng C đâu ạ.
code e trên kia làm ý tưởng thế rồi, nhưng chạy nó báo lỗi gì ấy, không có trong code nên e không biết sửa. :frowning:

I moved 2 posts to an existing topic: Off-topics will be moved here

sao không làm 2 vòng for lồng nhau r so sánh nhỉ :"> đống code ở #1 thấy dài quá cũng chưa thèm đọc nữa :">

2 Likes

đây ạ:

bool boMa::giao(boMa S){
	for(int i=0;i<n;i++)
		for(int j=0;i<S.getCount();j++)
			if(tuMa[i]==S.getTuMa(j)) return true;
	return false;
}

cái trên là class e đang làm, cái phần giao này là 1 phần nhỏ nên e chỉ tách cái giao này ra lên đây ạ.
a chạy thử xem nó bị gì gì ấy ạ, chứ nó ko hiện error trong code. e không hiểu.

@ltd a chạy thử code trên với cái ví dụ đó là a thấy liền. chắc a cũng hay gặp loại lỗi như thế. TT.TT

1 Like
bool check= false;
for() //duyệt mảng 1
{
for // duyệt mảng 2
{
if()// 2 phần tử của 2 mảng bằng nhau
{
check = true;
}
}
}
return check;

mã giả nhé, còn dùng thế nào thì tùy phong cách của bác nữa

1 Like
int j=0;i<S.getCount();j++

chưa xem code của bác vì đang bận, nhưng cái này nó có vẻ hơi vô lý đoạn i với j nhỉ :smile:

1 Like

I moved 2 posts to a new topic: Mã giả có dùng dấu { } không nhỉ?

a, thank a nhé. :kissing_closed_eyes:

Có vẻ như câu hỏi của Sáng Còi phức tạp nhỉ :smile: anh thấy code nhiều quá nên bỏ chạy thôi :runner: Chờ các cao nhân khác. Sorry @htwap ở topic này nhé :smile:

1 Like

sau khi chạy chương trình nó bị như này e ko biết sửa a ơi. :frowning:
kết quả chương trình thì đúng, ấn enter để đóng cửa sổ thì ra như này. TT.TT

1 Like

à, ra rồi ạ, do cái hàm hủy e delete bừa bãi ạ.

2 Likes

Good, cho code minh họa luôn đi Sáng béo (Béo nhanh thế)

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?