Không in ra được tiếng thứ N trong câu

Đề bài:

Viết một hàm đệ quy in ra tiếng thứ N trong câu. Nếu N lớn hơn số tiếng hay N nhỏ hơn 1 thì in ra -1

Vd như: Viet Nam vo dich , N=3 -> cout ra la “vo”
Mình code thế này, nhưng mà chữ cuối thì nó không in ra được, mọi người giúp mình với …

#include <iostream>
using namespace std;
void Nword(char* initialString, int position){
    int length=0, thutu=1;
    while(initialString[length]!='\0') 
    {
        if(initialString[length]==' ') thutu++;
        length++;
    }

    
    if(position>thutu || position<1) cout << -1;
    if(position == 1) 
    {
        int j=0;
        while(initialString[j]!=' ' && initialString[j]!='\0') cout << initialString[j++];
        return;
    }
    
    {
        char *s2= new char[length];
        int j=0,k=0;
    
        for(int i=0; i<length; i++)
        {
            if(initialString[i]==' ') 
            {
                k=i+1;
                break;
            }
        }
        for(int i=k; i<length; i++) 
        {
            s2[j++]=initialString[i];
        }
        s2[j]='\0';
        initialString=s2;
        Nword(initialString,position-1);
    }
    
}

int main() {
	char s[] = "Viet Nam vo dich haha";
    Nword(s,4);
   
   
	return 0;
}

System vẫn chấm mình làm sai rồi … mặc dù mình đã in được chữ cuối rồi

System vẫn chấm mình làm sai rồi … mặc dù mình đã in được chữ cuối rồi

Thế các “biến thể” khác thì xử lý thế nào?

" Viet Nam vo dich " // dấu cách đầu và cuối
"Viet  Nam   vo     dich" // nhiều hơn 1 dấu cách
4 Likes

Thì ra là vậy, em cảm ơn đã chỉ ra chỗ sai của em ạ…

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