1273 - Justificador

Um problema mais simples do que parece.

Descrição

Solução

Este problema se resume a imprimir cada palavra do texto gastando o mesmo espaço que a maior palavra. Linhas que tem menos letras que a maior palavra precisam apenas exibir espaços à esquerda.

Na linguagem C++, temos um jeito muito elegante de resolver esse problema usando a biblioteca iomanip, onde podemos definir o espaço de cada palavra e que elas podem ser alinhadas à direita. Para outras linguagens, podemos inserir os espaços manualmente.

#include <string.h>
#include <stdio.h>

int main(){
    char linhas[50][51];
    int N, n, maior, first;

    first = 1;
    while(scanf("%d\n", &N)){
        if(!N)  break;

        if(first)   first = 0;
        else        printf("\n");

        maior = 0;
        for(int i = 0; i < N; ++i){
            scanf("%s\n", &linhas[i]);
            maior = maior < strlen(linhas[i]) ? strlen(linhas[i]) : maior;
        }

        for(int i = 0; i < N; ++i){
            n = strlen(linhas[i]);
            for(int j = 0; j < maior - n; ++j)  printf(" ");
            printf("%s\n", linhas[i]);
        }
    }

    return 0;
}

Last updated