Chuẩn hoá một chuỗi c++

Chuẩn hoá cho các từ chỉ cách nhau một dấu cách, thì không biết e làm vòng for như này có ổn ko mng? Chương trình chạy bị treo ko ra kết quả, có vẻ như do vòng for này ạ.

for (i=0; i<s1.size(); i++){
        if(s1[i]==' ' && s1[i-1]==' '){
            size-=1;
            for (j=i; j=size; j++){
                s1[j]=s1[j+1];
            }    
            i--;    
        }
}

full code, ai xem hộ e phát với, ko biết hỏi ở đâu =))

#include <iostream>
#include <bits/stdc++.h>
#include <string>
using namespace std;

string correct(string s1){
    int i=0,j;
    unsigned size=s1.size();
    if (s1[i] >= 'a' && s1[i] <= 'z')
        s1[i] -=  'a' - 'A';
    for (i=0; i<s1.size(); i++){
        if(s1[i]==' ' && s1[i-1]==' '){
            size-=1;
            for (j=i; j=size; j++){
                s1[j]=s1[j+1];
            }    
            i--;    
        }
    }
    return (s1);
}

int main(){
    string s1 = "abC   Xyz    12a";
    cout << correct(s1) << endl;
    return 0;
}
for (j=i; j=size; j++)

điều kiện dừng của vòng lặp này là gì nhỉ?

2 Likes

Sorry mình reply hơi trễ, đk dừng của vòng for này là j tăng tới khi nào giá trị nó = với size. Mình có j==size thì cũng bị stuck luôn

Nếu j==size thì vòng for này không làm gì cả. Sau đó i--, trong vòng for thì i++, rồi bạn đoán xem cái vòng for (i = 0; i < s1.size(); i++) nó có chạy hết được ko?

Nếu đổi thành j <= size thì sao nhỉ?

1 Like

oh cảm ơn bạn nhiều nha, sai lỗi ngớ ngẩn quá =)))

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