không hiểu vì cái phần mềm hay code mà lúc được lúc không a à. cái bài tìm kí tự (lần này là xâu có dấu cách) và số lần xuất hiện em sửa bài lúc nãy thành thế này
#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){
int t = strlen(a) - 1;
for (int i = 0; i <= t; i++){
if (s == a[i]) return 1;
}
return 0;
}
int menu(){
int bai;
system("cls");
cout << "o.dung lai"<<endl;
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;
return bai;
}
void tim_x_1()
{
char a[20], b[20], c[20];
cout << "nhap xau a: ";
cin >> a;
cout << "nhap xau b: ";
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];
cout<<endl;
system("pause");
}
void tim_x_2()
{
char a[20], b[20], c[20];
cout << "nhap xau a: ";
cin >> a;
cout << "nhap xau b: ";
cin >> b;
int m = 0;
for (int i = 0; i <= strlen(a) - 1; i++){
if (search(a[i], b) == 1 && search(a[i], c) == 0){
c[m] = a[i];
m++;
}
}
for (int i = 0; i <= m - 1; i++) cout << c[i];
cout<<endl;
system("pause");
}
void tim_x_3()
{
char a[20], b[20], c[20];
cout << "nhap xau a: ";
cin >> a;
cout << "nhap xau b: ";
cin >> b;
int m = 0;
for (int i = 0; i <= strlen(a) - 1; i++){
if (search(a[i], b) == 0 && search(a[i],c)==0){
c[m] = a[i];
m++;
}
}
for (int i = 0; i <= m - 1; i++) cout << c[i];
cout<<endl;
system("pause");
}
void tim_tap_ky_tu_4()
{
word x[20];
char d,a[20]="", b[20]="", c[20]="";
cout << "nhap xau a: ";
int i=0;
fflush(stdin);
do{
d=getchar();
a[i]=d;
i++;
}while(d != '\n');
i=0;
cout<<"nhap b ";
fflush(stdin);
do{
d=getchar();
b[i]=d;
i++;
}while(d != '\n');
strcat(a,b);
cout<<a;
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++){
if(x[i].kitu!=' ') cout << "ki tu " << x[i].kitu << " xuat hien " << x[i].solan << " lan" << endl;
}
cout<<endl;
system("pause");
}
int main()
{
int tieptuc=1;
do
{
switch(menu())
{
case 0:
tieptuc = 0;
break;
case 1:
tim_x_1();
break;
case 2:
tim_x_2();
break;
case 3:
tim_x_3();
break;
case 4:
tim_tap_ky_tu_4();
break;
default:
cout << "nhap loi\n";
break;
}
}
while(tieptuc);
}
ở cái bài 4 khi in ra thì em đã dùng
if(x[i].kitu!=' ')
thì mới in ra kí tự thế mà nó vẫn in ra cái dấu cách a à.
Cái này là do bạn đấy không chịu viết hàm. 1600 dòng bỏ vào vài hàm là ổn. Ai bảo bạn đấy bỏ vào trong cái case làm gì.
để 1 dòng
Tiết kiệm được bao nhiêu lắm đâu?
Em phải làm cái nào cho hiệu quả chứ, không nên viết dài, nhưng cũng không nên viết 1 dòng. Hãy chia code thành những nhiệm vụ nhỏ, tạo hàm để thực hiện nhiệm vụ đó. Như anh đã hướng dẫn trong bài trước.
được rồi a ạa giải thích cho e tại sao
if(x[i].kitu!=’ ')
thế này lại sai được ko
Không ai chịu coi video của anh hết trơn , em coi video C 54, 55, 56 để hiểu nhé.
Em cho ví dụ cụ thể được không? anh nghĩ strcat làm tốt mà?
không hiểu vì cái phần mềm hay code mà lúc được lúc không a à. cái bài tìm kí tự (lần này là xâu có dấu cách) và số lần xuất hiện em sửa bài lúc nãy thành thế này
ở cái bài 4 khi in ra thì em đã dùng
thì mới in ra kí tự thế mà nó vẫn in ra cái dấu cách a à.
Anh chưa có thời gian coi qua, nhưng khi em nói lúc được lúc không thì anh nghĩ là đoạn này em cần để ý
câu lệnh này sẽ nối a vào b. Luôn phải đảm bảo chiều dài của mảng b đủ chứa cả b và a.
Mình không hiểu yêu cầu của đề bài lắm:
int solan[256];
fill(solan,solan+256,0);
for(i=0->len(s)){
solan[s[i]]++;
}
for(i=0->256){
chung[i]=min(solan1[i],solan2[i]);
}
trong for 0<=i< cận trên
chắc là do chiều dài của xâu không đủ a à. a xem hộ e cái lệnh in ra kí tự với. cái câu 4 em dùng lệnh
mà nó vẫn in ra kí tự dấu cách
đổi thành
Xem được không?
Mà đừng viết code trên 1 dòng, không chạy nhanh hơn. Ngắn hơn mà khó sửa lỗi hơn cũng thế à.
tại vì trên lớp thầy bất làm case study mà có bạn làm đến 1600 dòng thầy bảo làm gì mà dài thế nên toàn để 1 dòng
được rồi a ạ
a giải thích cho e tại sao
thế này lại sai được ko
Cái này là do bạn đấy không chịu viết hàm. 1600 dòng bỏ vào vài hàm là ổn. Ai bảo bạn đấy bỏ vào trong cái case làm gì.
Tiết kiệm được bao nhiêu lắm đâu?
Em phải làm cái nào cho hiệu quả chứ, không nên viết dài, nhưng cũng không nên viết 1 dòng. Hãy chia code thành những nhiệm vụ nhỏ, tạo hàm để thực hiện nhiệm vụ đó. Như anh đã hướng dẫn trong bài trước.
Không ai chịu coi video của anh hết trơn , em coi video C 54, 55, 56 để hiểu nhé.
em mới chỉ xem được mấy cái video của c++ chưa xem sang c
I moved a post to a new topic: Video mã hóa xâu ký tự dùng kỹ thuật chẵn lẻ?
có cái lỗi này nè a
em thử với s là: a a a
còn s1 là: b b b
thì kết quả s là:
Trước hết em có thể thay đoạn code này bằng
Bài này anh làm để hướng dẫn cho mọi người hiểu bản chất của việc nhập chuỗi.
Em sửa lại toàn bộ như sau
nhưng mà trước cấu gets(s) phải có fflush(stdin) nếu không thì nó sẽ không nhập chuỗi s mà chỉ nhập chuỗi s1 thoi a à
À quên, nhớ thêm
fflush(stdin)
để tránh bị lỗi kiểu đấyĐã sửa