30/09/2018, 16:26

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: 
{";
	for(int i=0;i<W.getCount()-1;i++) cout<<W.getTuMa(i)<<","; cout<<W.getTuMa(n-1)<<"}
";
	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: 
{";
	for(int i=0;i<S.getCount()-1;i++) cout<<S.getTuMa(i)<<","; cout<<S.getTuMa(n-1)<<"}
";
	if(S.giao(W)) cout<<"Giao
";
	else cout<<"Khong giao
";
	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

Nguyễn Minh Dũng viết 18:38 ngày 30/09/2018

Đồ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

X viết 18:41 ngày 30/09/2018

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

Sáng Béo viết 18:28 ngày 30/09/2018

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

Đồ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

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

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.
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 ạ.

X viết 18:38 ngày 30/09/2018

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

Sáng Béo viết 18:38 ngày 30/09/2018

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.

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

Nguyễn Minh Dũng viết 18:36 ngày 30/09/2018

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

TTmagic viết 18:34 ngày 30/09/2018

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

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.

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 :">

Sáng Béo viết 18:39 ngày 30/09/2018

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 :">

đâ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.

Sáng Béo viết 18:36 ngày 30/09/2018

@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

Sáng Béo viết 18:37 ngày 30/09/2018

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

đâ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.
Nguyễn Minh Dũng viết 18:36 ngày 30/09/2018

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

Sáng Béo viết 18:42 ngày 30/09/2018

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ỉ

a, thank a nhé.

Nguyễn Minh Dũng viết 18:41 ngày 30/09/2018

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

Sáng Béo viết 18:38 ngày 30/09/2018

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

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

Sáng Béo viết 18:33 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:29 ngày 30/09/2018

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

Sáng Béo viết 18:38 ngày 30/09/2018

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

minh họa gì nữa a ơi?
e ăn thuốc tăng trọng nên mau béo.

Nguyễn Minh Dũng viết 18:35 ngày 30/09/2018

À, ý anh hỏi đoạn code em đã sửa cho cái này

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

Sáng Béo viết 18:40 ngày 30/09/2018

À, ý anh hỏi đoạn code em đã sửa cho cái này

à, cái này e khai báo là

private:
	string* tuMa;
	int n;

mà cái hàm hủy e lại

boMa::~boMa(){
	delete[] tuMa;
	n=0;
}

tại trước đó e dùng char* tuMa=new char[100]; nên e để delete, sửa thành string e quên không xóa.
nên sau khi chạy xong chương trình, enter để thoát thì hàm Hủy tự chạy và nó xóa linh tinh mà chả có gì để xóa nên nó báo lỗi gì đó e ko biết. hì

Nguyễn Minh Dũng viết 18:29 ngày 30/09/2018

Sao em lại dùng con trỏ string nhỉ? Anh nghĩ string nên dùng ở dạng object bình thường cũng tốt mà. Vì nó tự quản lý vùng nhớ được.

Bài liên quan
0