Processamento de textos. O tratamento detalhado da manipulação de strings nesse texto é, em grande parte, atribuída ao crescimento incrível do processamento de textos nos últimos anos. Uma função importante nos sistemas de processamento de textos é a justificação de texto — o alinhamento das palavras nas margens esquerda e direita de uma página. Isso gera um documento de aparência profissional, que parece ser composto por tipos em vez de preparado em uma máquina de escrever. A justificação de texto pode ser realizada em sistemas de computador que inserem um ou mais caracteres em branco entre cada uma das palavras em uma linha, de modo que a palavra mais à direita se alinhe com a margem direita. Escreva um programa que leia várias linhas de texto e o imprima em formato justificado. Considere que o texto deve ser impresso em um papel de 21,59 cm e que margens de 2,54 cm devem ser permitidas nos lados esquerdo e direito da página impressa. Considere que o computador imprima 10 caracteres por polegada horizontal. Portanto, seu programa deverá imprimir 16,51 cm de texto ou 65 caracteres por linha.
Passo 1
Vamos escrever um programa que faça o seguinte:
Solicita que o usuário insira várias linhas de texto.
Imprime o texto em formato justificado, imprimindo a margem esquerda de 10 caracteres para cada linha e imprimindo cada linha em um tamanho de 65 caracteres.
Para escrever este programa, primeiro declararemos os seguintes arquivos de cabeçalho.
#include
#include
Em seguida, criaremos um método auxiliar chamado countWords que aceita um array de caracteres (string) no parâmetro e retorna o número total de palavras nessa string. Isso usa a função strtok para iterar dentro das palavras para determinar a contagem total.


Passo 2
Agora, declare as seguintes variáveis.

Em seguida, solicitaremos ao usuário que insira o texto, obtenha cada linha de texto e crie uma cópia da matriz de texto. Observe que a cópia da matriz será usada para determinar as palavras em cada linha do texto. Isso é necessário para evitar a modificação dos ponteiros ao percorrer o texto para justificar cada linha.

Por fim, justificaremos o texto. Para isso, faremos o seguinte

Passo 3
O código completo é o seguinte:
#include
#include
int countWords(char *str){
char *words;
int count =0;
words = strtok(str, " \n");
while(words != NULL){
count++;
words = strtok(NULL, " \n");
}
return count;
}
int main(){
char text[5][100];
char temp[5][100];
char *wordPtr;
int totalWords;
int spaces;
int len;
int rem;
printf("Enter the text:\n");
for(int i = 0; i
fgets(text[i], 100, stdin);
}
memcpy(&temp, &text, sizeof temp);
printf("\nJustified Text: \n\n");
for(int i = 0; i
len = strlen(temp[I]);
totalWords = countWords(temp[I]);
spaces = (65 - len) / (totalWords - 1);
rem = 65 - ((totalWords - 1) * spaces + len);
printf("%10s"," ");
wordPtr = strtok(text[i], " \n");
while ( wordPtr != NULL ) {
if(totalWords == 1){
printf(" %*s", strlen(wordPtr) + rem, wordPtr);
}
else{
printf("%s%*s ", wordPtr, spaces," ");
}
totalWords--;
wordPtr = strtok(NULL, " \n");
}
printf("\n");
}
return 0;
}
Resposta
Ver o desenvolvimento!