30/09/2018, 17:20

Chương trình đảo ngược thứ tự các từ có trong chuỗi trong C++

Viết chương trình đảo ngược thứ tự các từ có trong chuỗi
Ví dụ: Nhập:lap trinh bang ngon ngu c
Xuất ra màn hình là: c ngu ngon bang trinh lap

viết 19:32 ngày 30/09/2018

bạn dùng 2 con trỏ chạy ngược từ cuối xâu, cứ mỗi con trỏ khi gặp khoảng trắng thì đánh dấu

Minh Hoàng viết 19:21 ngày 30/09/2018

dùng strtok và viết 1 hàm đệ quy cho chạy là ổn.

Hồng Huệ viết 19:20 ngày 30/09/2018

có cách nào khong dùng đệ qui không bạn ?tại mình chưa học đệ qui

Hồng Huệ viết 19:33 ngày 30/09/2018

cụ thể hơn được ko bạn?cảm ơn

viết 19:34 ngày 30/09/2018

Mình viết hơi dài, bạn cải tiến thêm nha

#include <iostream>
using namespace std;

int main()
{
	string myStr;
	getline(cin, myStr);
	int n = myStr.size();
	int i, j = n-1;
	
	for(i = n-1; i >= 0; i--) {
		if(myStr[i] == ' ') { 
			for(int pos = i+1; pos <= j; pos++) cout << myStr[pos];
			j = i-1;
			cout << " ";
		}
		if(i == 0) {
			for(int pos = i; pos <= j; pos++) cout << myStr[pos];
		}
	}
}
Nhật Cao Khánh viết 19:33 ngày 30/09/2018

int count_space(string s){
int count = 0;
for (int i = 0; i < s.size(); i++){
if (s.at(i) == ’ ')
count++;
}
return count;
}
string *split(string s){

int space = count_space(s);
string *arr = new string[space + 1];
stringstream ss;
ss << s;
string buf;
int i = 0;
while (i <= space)
{
	ss >> buf;
	arr[i++] = buf;
}
return arr;

}

string dao(string s){
int space = count_space(s);
string *a = split(s);
string swap = “”;
for (int i = space; i >= 0 ; i–){
swap += a[i];
if (i != 0)
swap += " ";
}
return swap;
}

Hồng Huệ viết 19:33 ngày 30/09/2018

cảm ơn bạn nhiều,mình mới học nên ko biết gì

Truongmta viết 19:25 ngày 30/09/2018

Bạn có thể dùng Hàm strrev :
• Công dụng: đảo ngược chuỗi kí tự
• Cấu trúc:
char *strrev(char *s);

Sáng Béo viết 19:32 ngày 30/09/2018

Bạn có thể dùng Hàm strrev :
• Công dụng: đảo ngược chuỗi kí tự
• Cấu trúc: char *strrev(char *s);

strrev nó đảo tất cả kí tự, còn yêu cầu là đảo ngược các từ (ngăn cách bởi dấu cách) có trong câu bạn ạ.

Truongmta viết 19:32 ngày 30/09/2018

Ukm. M xin lỗi , m nhầm mất câu hỏi.

Bài liên quan
0