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.00Delší 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:
JogurtJak psát:
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.00Pod 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.40Začněte programovat zdarma
9/10