01/10/2018, 01:08
Viết chương trình đảo ngược từng từ của một chuỗi nhập vào?
Hôm nay em học C++ thì được đề bài như sau:
Viết chươgn trình đảo ngược từng từ của một chuỗi nhập vào.
Ví dụ: nhập I LOVE YOU => in ra: I EVOL UOY.
Em đã viết đoạn code như sau:
#include <iostream>
#include <string>
using namespace std;
int main(){
string chuoi_nhap, chuoi_xuat;
int sokitu,a(0);
cout<< "Nhap vao chuoi bat ky: ";
getline(cin,chuoi_nhap);
sokitu=chuoi_nhap.length();
cout << " So ky tu nhap vao la: " << sokitu << endl;
cout << " ******" << endl;
for(int i=0;i <sokitu;i++){
for(int j = i; chuoi_nhap[j]!= ' ' ;j++){
a++;
}
for(int k = a+i; k>=i;k--){
cout << chuoi_nhap[k];
}
i = i+a;
a = 0;
}
cout << endl;
return 0;
}
thì khi em nhập vào I LOVE YOU ra kết quả như sau:
Cho em hỏi vì sao bị lỗi dãy số đó và làm sao khắc phục ạ?
Em xin cám ơn.
Bài liên quan
Lỗi của mình khác =))
Lỗi này bị ở Từ cuối cùng trong chuỗi nhập vào, nhưng chả hiểu vì sao
Mình đoán là do đằng sau ký tự cuối cùng không có dấu cách nên nó báo string subscript out of range. Bạn thêm
chuoi_nhap = chuoi_nhap + ' ';
sau khi getline thì sẽ không bị lỗi nữa.Và mình cũng nghĩ được 1 thuật toán đơn giản hơn cho bạn đó
cám ơn bạn, có thể cho mình xin thuật toán đó luôn được không bạn?
Thử trình bày 1 thuật toán khác đi đã thì mình mới bày
Có phải là tách chuỗi thành từng chuỗi nhỏ rồi in ngược chuỗi đó ko bạn?
Uk, mình nghĩ làm thế đơn giản hơn mà?
Thanks bạn gợi ý, mình sẽ làm thử luôn cách tách chuỗi luôn