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>intmain(){char linhas[50][51];int N, n, maior, first; first =1;while(scanf("%d\n",&N)){if(!N) break;if(first) first =0;elseprintf("\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]); } }return0;}
#include<iostream>#include<iomanip>usingnamespace std;intmain(){bool first;int N, maior; string linhas[51]; first =true;while(cin >> N){if(!N) break;if(first) first =false;else cout << endl; maior =0;for(int i =0; i < N; ++i){ cin >>linhas[i]; maior = maior <linhas[i].length() ?linhas[i].length() : maior; }for(int i =0; i < N; ++i){ cout <<setw(maior) <<setfill(' ') << right <<linhas[i] << endl; } }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');let first =true;while(lines.length){letN=parseInt(lines.shift());if(!N) break;if(first) first =false;elseconsole.log('');let frases = [];for(let i =0; i <N; ++i){frases.push(lines.shift().trim()); }let maior =frases.reduce((acc, cur) => acc <cur.length?cur.length: acc,0);for(let i =0; i <N; ++i){let retorno ='';for(let j =0; j < maior - frases[i].length; ++j) retorno +=' '; retorno += frases[i];console.log(retorno); }}
first =TruewhileTrue:try: N =int(input())if(N ==0):breakif(first): first =Falseelse:print('') maior =0 linhas = []for _ inrange(N): frase =input() maior =len(frase)if maior <len(frase)else maior linhas.append(frase)for frase in linhas:print(f"{(maior -len(frase)) *' '}{frase}")exceptEOFError:break