Mình có một chương trình chính, trong chương trình này sẽ có nhiều chương trình còn dạng menu như sau
cout<<"1.Tim X = {x thuoc S1 hoac x thuoc S2}"<<endl;
cout<<"2.Tim X = {x thuoc S1 va x thuoc S2}"<<endl;
cout<<"3.Tim X = {x thuoc S1 va x khong thuoc S2}"<<endl;
cout<<"4.Tim tap ky tu va so lan xuat hien moi ky tu trong ca S1, S2 (Không ke ky tu trong)"<<endl;
cout<<"5.Tim tap ky tu va so lan xuat hien moi ky tu thuoc ca S1, S2 (Không ke ky tu trong)"<<endl;
cout<<"6.Tim tap ky tu va so lan xuat hien moi ky tu thuoc S1 nhung khong thuoc S2 (Không ke ky tu trong)"<<endl;
cout<<"7.ma hoa x bang ky thuat chan le"<<endl;
cout<<"8.giai ma x bang ky thuat chan le"<<endl;
cout<<"9.tim tap tu va so lan xuat hien moi tu trong s1 hoac s2 "<<endl;
cout<<"10.tim tap tu va so lan xuat hien moi tu trong s1 va s2"<<endl;
cout<<"11.tim tap tu va so lan xuat hien moi tu trong s1 nhung khong xh trong s2"<<endl;
Tuy nhiên menu 2 có lỗi, ở bài 2 là tìm các kí tự thuộc cả 2 xâu. Hàm search của mình là kiểm tra xem kí tự s có thuộc xâu a hay không rồi return 0 hoặc 1.
Đây là toàn bộ code
#include <iostream>
#include <string>
#include <windows.h>
#include <stdio.h>
using namespace std;
typedef struct
{
char kitu;
int solan;
} word;
int search(char s,char *a)
{
for(int i=0; i<=strlen(a)-1; i++)
{
if(s==a[i]) return 1;
}
return 0;
}
int main()
{
int dung=1,bai;
do
{
system("cls");
cout<<"1.Tim X = {x thuoc S1 hoac x thuoc S2}"<<endl;
cout<<"2.Tim X = {x thuoc S1 va x thuoc S2}"<<endl;
cout<<"3.Tim X = {x thuoc S1 va x khong thuoc S2}"<<endl;
cout<<"4.Tim tap ky tu va so lan xuat hien moi ky tu trong ca S1, S2 (Không ke ky tu trong)"<<endl;
cout<<"5.Tim tap ky tu va so lan xuat hien moi ky tu thuoc ca S1, S2 (Không ke ky tu trong)"<<endl;
cout<<"6.Tim tap ky tu va so lan xuat hien moi ky tu thuoc S1 nhung khong thuoc S2 (Không ke ky tu trong)"<<endl;
cout<<"7.ma hoa x bang ky thuat chan le"<<endl;
cout<<"8.giai ma x bang ky thuat chan le"<<endl;
cout<<"9.tim tap tu va so lan xuat hien moi tu trong s1 hoac s2 "<<endl;
cout<<"10.tim tap tu va so lan xuat hien moi tu trong s1 va s2"<<endl;
cout<<"11.tim tap tu va so lan xuat hien moi tu trong s1 nhung khong xh trong s2"<<endl;
cout<<"nhap bai: ";
cin>>bai;
switch(bai)
{
case 1:
{
char a[20],b[20],c[20];
cout<<"nhap xau a: ";
fflush(stdin);
cin>>a;
cout<<"nhap xau b: ";
fflush(stdin);
cin>>b;
strcat(a,b);
int m=0;
for(int i=0; i<=strlen(a); i++)
{
if(search(a[i],c)==0)
{
c[m]=a[i];
m++;
}
}
for(int i=0; i<=m-1; i++) cout<<c[i];
break;
}
case 2:
{
char a[20],b[20],c[20];
cout<<"nhap xau a: ";
fflush(stdin);
cin>>a;
cout<<"nhap xau b: ";
fflush(stdin);
cin>>b;
int m=0;
for(int i=0; i<=strlen(a)-1; i++)
{
if(search(a[i],b) && search(a[i],c)==0)
{
c[m]=a[i];
m++;
}
}
for(int i=0; i<=m-1; i++) cout<<c[i];
break;
}
case 3:
{
char a[20],b[20],c[20];
cout<<"nhap xau a: ";
fflush(stdin);
cin>>a;
cout<<"nhap xau b: ";
fflush(stdin);
cin>>b;
int m=0;
for(int i=0; i<=strlen(a)-1; i++)
{
if(search(a[i],b)==0)
{
c[m]=a[i];
m++;
}
}
for(int i=0; i<=m-1; i++) cout<<c[i];
break;
}
case 4:
{
word x[20];
char a[20],b[20],c[20];
cout<<"nhap xau a: ";
fflush(stdin);
cin>>a;
cout<<"nhap xau b: ";
fflush(stdin);
cin>>b;
strcat(a,b);
int m=0;
for(int i=0; i<=strlen(a)-1; i++)
{
if(search(a[i],c)==0)
{
c[m]=a[i];
x[m].kitu=a[i];
x[m].solan=1;
m++;
}
else
{
for(int j=0; j<=m-1; j++)
{
if(x[j].kitu==a[i]) x[j].solan++;
}
}
}
for(int i=0; i<=m-1; i++) cout<<"ki tu "<<x[i].kitu<<" xuat hien "<<x[i].solan<<" lan"<<endl;
break;
}
}
cout<<endl;
cout<<"nhap 0 de dung lai,1 de tiep tuc";
cin>>dung;
}
while(dung==1);
}
Vấn đề là nếu để riêng cái case 2 sang 1 bài khác thì ra kết quả còn đưa vào bài thì lại không cho ra kết quả. Mọi người có thể cho mình biết lý do tại sao không?