Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 13: truncW

Voltar

Defina uma função void truncW (char t[], int n) que dado um texto t com várias palavras (as palavras estão separadas em t por um ou mais espaços) e um inteiro n, trunca todas as palavras de forma a terem no máximo n caracteres.

Exemplo

> char txt[] = "liberdade, igualdade e fraternidade";
> truncW(txt, 4);
> txt
(char *) "libe igua e frat"

Resolução

void tail(char* s, int N) {
    int i;
    for(i = N; s[i]; i++)
        s[i] = s[i+1];
}

int isSpace(char c) {
    return (c == ' ' || c == '\n' || c == '\t');
}

void truncW (char t[], int n) {
    int wordLen = 0, N = 0;
    while(t[N]) {
        if(isSpace(t[N])) {
            wordLen = 0;
            N++;
        }
        else {
            wordLen++;
            if(wordLen > n) tail(t, N);
            else N++;
        }
    } 
}