Дана строка символов. Распечатать слова отличные от последнего оставив в каждом слове только первые вхождения каждой буквы — C++(Си)

Например: дана строка:»Vesna nastala ptici prileteli», на экран должен вывести: «Vesna nastl ptic»

#include    
#include    
#include    
#include   // 1е именение
 
void print_word(char* w)   
{  
    int i,j;  
    bool p;  
    for(i = 0; i < strlen(w); i++)  
    {  
        p = true;  
        for(j = i - 1;j >= 0;j--)  
         if(w[i] == w[j]) {p = false; break;}  
        if(p) printf("%c",w[i]);   
    }   
    printf(" ");   
}   
 
void get_last_w(const char* st, char* w)   
{  
    int i;  
    while(1)  
    {  
        for(i = 0;st[i] && !strstr(" .,!?:;"/*разделители*/,st+i);i++);  
        strncpy(w, st, i); w[i] = 0;  
        if(!st[i]) break;  
        st += (i + 1);  
    }  
}   
 
 
int main()   
{  
    char string[512], lw[64], w[64];  
    char *st;  
    int i = 0;  
    printf("Enter string:");  
    scanf("%500s", string);  
    get_last_w(string, &lw[0]);  
    printf("\n");  
 
    st = &string[0];  
    while(1)  
    {  
        for(i = 0;st[i] && !strstr(" .,!?:;"/*разделители*/,st+i);i++);  
        strncpy(w, st, i);  w[i] = 0;  
        if(strcmp(w,lw)) print_word(w);  
        if(!st[i]) break;  
        st+=(i+1);  
    }  
    printf("\n");   
 
    getch();// 2е именение
    return 0;   
}

Leave a Comment