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
Was this helpful?