01/10/2018, 09:10

Hỏi về tìm kiếm và thay thế trong chuỗi

int timkiemthaythe(char chuoi[MAX])
{
	int i;
	int b[MAX];
	int a[26] = { 0,1,2,3,4,5,6,7, 8 , 9 ,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 };
	char h[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
	for (i = 0; i <= sizeof(h); i++)
	{
		for (int j = 0; j < strlen(chuoi); j++)
		{
			if (h[i] == chuoi[j])
				b[MAX] = a[i];
			break;
		}
	}
	return b[MAX];
}

Mọi người cho em hỏi đoạn code này sai chổ nào ạ. Em cảm ơn.

Khoa NTA viết 11:16 ngày 01/10/2018

Mình vẫn chưa hiểu mục đích của hàm này là gì: tìm kiếm gì và thay thế bằng gì?

Sơ sơ thì mình thấy được bạn có 2 vòng lặp lồng vào nhau, có 1 lệnh if, nhưng sau if là break; tức là nó chỉ chạy duy nhất 1 lần với i=0 và j=0.

Tại sao bạn khai báo mảng b[MAX] (MAX = ?) nhưng chỉ dùng phần tử cuối cùng?

Kazugaya viết 11:10 ngày 01/10/2018

Mình có 1 chuỗi nhập vào từ bàn phím, 1 chuỗi ký tự h từ a đến z, 1 chuỗi số a từ 0 đến 25.
tìm kiếm ký tự trong chuỗi nhập vào nếu giống với chuỗi h thì thay bằng số tương ứng bên chuỗi a.
VD: nhập vào chuỗi abc thì in thay thế là 123, nhập vào 123a thì thay thế là 1230.

Khoa NTA viết 11:20 ngày 01/10/2018

Sơ sơ thì mình đã hiểu ý bạn. Mình muốn thắc mắc là bạn chỉ sử dụng mỗi b[MAX], vậy các phần tử còn lại để làm gì và return chỉ có 1 kiểu int thì nó là như thế nào?
Về phần thay thế, nếu chuỗi là: ‘123z’ thì nó thành '123 25 ’ ?

Kazugaya viết 11:26 ngày 01/10/2018

đúng rồi. tại mình nghĩ là cần một mảng b để lưu giá trị số đó. bạn có cách làm nào không có thể hướng dẫn mình được không? cảm ơn

Trần Hoàn viết 11:15 ngày 01/10/2018

Mình thêm " - " cho bạn dễ nhìn:

Kazugaya viết 11:19 ngày 01/10/2018

cảm ơn bạn

Trần Hoàn viết 11:13 ngày 01/10/2018

Vừa sửa lại code đó, nhưng mà chắc bạn hiểu được thuật toán :))

Kazugaya viết 11:14 ngày 01/10/2018

Mình hiểu rồi, cảm ơn

Bài liên quan
0