Code đảo ngược các kí tự của mỗi từ trong chuỗi cho kết quả của em thiếu mất một từ

void daoNguocTu(char a[], char b[],char c[])
{
	int j = 0;
	int k = 0;
	int length = strlen(a);
	for (int i = 0; i <= length; i++)
	{
		if (a[i] != ' ')
		{
			b[j] = a[i];
			j++;
		}
		else
		{
			b[j] = '\0';
			_strrev(b);
			strcat(c, b);
			strcat(c, " ");
			j = 0;
			remove;
		}
	}
	puts(c);
}

1 Like

bạn làm phức tạp thế, sao không chạy như thế này:
for(i=0;i<len(a);i++) b[i] = a[len(a)-i-1];

1 Like

Mỗi từ trong chuỗi mà bạn?

Up cả code lên đây xem nào. Chắc chắn lúc nạp vào hàm này bạn thiếu mất 1 từ.

Nạp không thiếu, nhưng cái điều kiện của mình dựa vào dấu cách nên từ cuối cùng nó không thực hiện được, mình không biết sửa điều kiện như thế nào cho đúng

Thêm dấu cách vào cuối a trước khi gán length, và chạy vòng for đến < length thôi.

Giả sử người dùng không nhập dấu cách ở cuối chuỗi a =))

Đừng giả sử. Kiểm tra xem người dùng có nhập dấu cách ở cuối hay không đã.

Nhưng mà làm gì có ai nhập thêm dấu cách cuối cùng làm gì đâu :((

Thế tóm lại là chỉ cần thêm dấu cách vào cuối để xử lí thôi chứ có gì đâu phải lăn tăn.

Người nhập luôn luôn đúng mà =))

Sai bét. Mình nhập vào thế này:

"  ai  bao la  nguoi             nhap      luon    luon      dung           "

Bạn có chắc là tất cả mọi người dùng đều nghiêm túc không?

3 Likes

Mình chỉ muốn sửa code đúng cho trường hợp, không muốn sửa theo cách nhập của bạn :slight_smile:

Thớt dựa vào hàm hơi nhiều. Còn chèn vào chuỗi mà gặp const là tiêu.

Nhìn theo trạng thái thì bài này có hai trạng thái là whiteSpace và Word. Để vào & giữ trạng thái S thì phải có whitespace. Định nghĩa như vậy là vì chỉ có whitespace với non-whitespace.

2 Likes

Vậy có thể hướng cho mình cách làm dễ hiểu hơn được không ạ

Sửa điều kiện là khác space hoặc khác NULL

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?