Výpis do sloupců

Když vypisujete tabulku, třeba účtenku nebo výsledky soutěže, chcete, aby byly sloupce pěkně pod sebou. Normálně je ale každý řádek jen tak dlouhý jako jeho text a čísla jsou každé jinde:

printf("%s %.2f\n", "Chleba", 35.9);
printf("%s %.2f\n", "Brambory", 42.0);

Program vypíše:

Chleba 35.90
Brambory 42.00

Číslo mezi % a písmenem formátovací značky určuje šířku: kolik znaků hodnota zabere nejméně. Kratší hodnota se doplní mezerami. %10s přidá mezery zleva, takže text zarovná doprava. S mínusem, %-10s, jdou mezery doprava a text se zarovná doleva, což u jmen a názvů obvykle chcete. Šířku můžete zadat i u čísel. Hranaté závorky v tomto příkladu ukazují, kde každá hodnota začíná a končí:

printf("[%5d]\n", 42);
printf("[%-5d]\n", 42);
printf("[%10s]\n", "Anna");
printf("[%-10s]\n", "Anna");
printf("[%6.2f]\n", 3.14159);

Program vypíše:

[   42]
[42   ]
[      Anna]
[Anna      ]
[  3.14]

U %6.2f je 6 celková šířka i s desetinnou tečkou a 2 je počet desetinných míst. Účtenka se šířkami vypadá takto:

printf("%-10s %6.2f\n", "Chleba", 35.9);
printf("%-10s %6.2f\n", "Brambory", 42.0);

Program vypíše:

Chleba      35.90
Brambory    42.00

Delší hodnota se neořízne: %3s vypíše "Alexandr" celé a jen se rozbije zarovnání. Šířku proto volte podle nejdelší hodnoty ve sloupci. A pozor na diakritiku: šířka se počítá ve znacích typu char, takže řádek s "Mléko" by se o jedno místo posunul. Proto jsou názvy v tomto cvičení bez diakritiky.

Názvy zboží jsou ve cvičení uložené v poli řetězců. Je to dvourozměrné pole znaků, které znáte z lekce o polích: char zbozi[4][12] má 4 řádky a každý řádek je jeden řetězec s místem na 11 znaků a '\0'. zbozi[1] je celý druhý řetězec, takže ho vypíšete pomocí %s:

char zbozi[4][12] = {"Chleba", "Jogurt", "Brambory", "Med"};
printf("%s\n", zbozi[1]);

Program vypíše:

Jogurt

Pokyny

Změňte formátovací řetězec v cyklu: názvy zarovnejte doleva do sloupce širokého 10 znaků, %-10s, a ceny doprava do sloupce širokého 6 znaků se 2 desetinnými místy, %6.2f. Mezi sloupci nechte jednu mezeru. Výpis bude vypadat takto:

Chleba      35.90
Jogurt      18.50
Brambory    42.00
Med        129.00

Pod cyklus vypište řádek s celkovou cenou: text Celkem ve sloupci stejně širokém jako názvy a součet cen ve sloupci stejně širokém jako ceny. Ceny sečtěte v cyklu. Řádek bude vypadat takto:

Celkem     225.40

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

9/10