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
Bài liên quan
Đồ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ã:
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
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.
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 :">
đây ạ:
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
I moved 2 posts to a new topic: Mã giả có dùng dấu { } không nhỉ?
a, thank a nhé.
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
à, ra rồi ạ, do cái hàm hủy e delete bừa bãi ạ.
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.
À, ý anh hỏi đoạn code em đã sửa cho cái này
à, cái này e khai báo là
mà cái hàm hủy e lại
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ì
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.