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.

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

Lỗi của mình khác =))

Thành Nguyễn viết 03:14 ngày 01/10/2018

Lỗi này bị ở Từ cuối cùng trong chuỗi nhập vào, nhưng chả hiểu vì sao

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

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 đó

Thành Nguyễn viết 03:18 ngày 01/10/2018

cám ơn bạn, có thể cho mình xin thuật toán đó luôn được không bạn?

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

Thử trình bày 1 thuật toán khác đi đã thì mình mới bày

Thành Nguyễn viết 03:13 ngày 01/10/2018

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?

Trần Hoàn viết 03:19 ngày 01/10/2018

Uk, mình nghĩ làm thế đơn giản hơn mà?

Thành Nguyễn viết 03:11 ngày 01/10/2018

Thanks bạn gợi ý, mình sẽ làm thử luôn cách tách chuỗi luôn

Bài liên quan
0