Quan disposem de dades tabulades, és a dir en forma de taula (una matriu amb caselles de tipus string
), el més còmode per visualitzarles és alinear les columnes verticalment a algun dels dos costats (esquerre si es tracta de text o dret si són dades numèriques) i posar dos espais de separació entre columnes de tal manera que l’esforç de lectura sigui el menor possible.
Per exemple, les següents dades:
sanches 2 45 kim 13 1000 yang 1234 22 schmitz 420 3345 papanopoulos 9 51231
Són molt més fàcils de llegir si les formatem així:
sanches 2 45 kim 13 1000 yang 1234 22 schmitz 420 3345 papanopoulos 9 51231
La primera columna està alineada a l’esquerra perquè les caselles contenen text (només que una contingui text, ja es considera que tota la columna és de text). La segona i tercera columnes estan alineades a la dreta perquè totes les caselles contenen només dígits. Entre el caràcter de més a la dreta de la primera columna (la 's'
de papanopoulos
) i el primer caràcter de la segona columna (l’'1'
del "1234"
) hi ha dos espais exactament.
L’alineament es fa simplement imprimint espais entre el contingut de les caselles i posant-lo al davant o al darrere per produir l’alineació a la dreta o l’esquerra.
Fes un programa que llegeix dades tabulars i les mostra alineades tal com en l’exemple.
Entrada
L’entrada consisteix en un seguit de taules, sense sentinella, a on cada taula comença amb el nombre de files i columnes (dos enters f i c), seguit de f × c strings (sense espais) que són les caselles, amb les c columnes de cada fila consecutives i les files per ordre.
Sortida
La sortida han de ser les taules de l’entrada totes alineades tal com s’ha explicat, amb una línia buida després de cada taula (inclosa la última).
Input
3 2 a 01 b 02 c 03 2 2 a bb aa b 2 3 a bb ccc xxx yy z 3 3 p 123 7 qq 12 28 rrr 1 895 1 1 x
Output
a 01 b 02 c 03 a bb aa b a bb ccc xxx yy z p 123 7 qq 12 28 rrr 1 895 x