Diskuze: vypsaní velkých a malých písmen
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, odkiaľ si prišiel zrovna na číslo 1023 a 1755? a skáčeš po dvoch? Ak si pozrieš ASCII tabuľku napr. https://sk.wikipedia.org/wiki/ASCII tak vidíš že každý znak má aj svoju decimálnu hodnotu v stĺpci dec. No a keď túto hodnotu pretypuješ na char tak z nej dostaneš daný znak.
#include <stdio.h>
int main(){
int i;
for(i = 'a'; i <= 'z'; i++){ //alebo i = 97; i <= 122; i++
printf("%c ", i);
}
putchar('\n');
for(i = 'A'; i <= 'Z'; i++){ //alebo i = 65; i <= 90; i++
printf("%c ", i);
}
putchar('\n');
for(i = 'A'; i <= 'Z'; i++){
printf("%c%c ", i, i + 'a' - 'A'); //alebo tolower
}
putchar('\n');
return 0;
}
Před tím než jsem začal vytvářet kód jsem si nevšiml, že už byla
otázka zodpovězena, ale i přes to přidám jednoduchou formu jak vypsat
velká písmena pomocí cyklu a to stejné malá.
Použit je cyklus v rozmezí čísel, které se zjistí z ASCII tabulky
for(int i=65;i<=90;i++){ //velka pismena pomoci ASCII
printf("value of a: %c\n", (char)i);
}
for (int i = 97; i <= 122; i++) { //mala pismena pomoci ASCII
printf("value of a: %c\n", (char)i);
}
Důležité je u funkce printf použít %c aby jsi vypsal typ char a ne int
jak je tomui u %d
I když úryvek kódu vypíše očekávaný výstup, žádný profi programátor by to takto nenapsal. ASCII hodnoty velkých a malých písmen jsou správně a odpovídají tomu danému znaku, ale použití ASCII hodnot namísto znaku popř. definice makra činí kód méně přehledným.
Hlavička for cyklu pro výpis velkých písmen by mohla vypadat takto:
for(int i = 'A'; i <= 'Z'; i++){
// nebo
#define A 65
#define Z 90
for(int i = A; i <= Z; i++){
Pro formátovaný výpis (s výpisem nového řádku, dalších hodnot naráz, doplňkového textu, apod.) se používá specifikace formátu %c. Pro samostatný (neformátovaný) výpis se používá funkce putchar(). Důvodem je že funkce putchar() potřebuje méně strojových instrukcí nežli funkce printf() a je tedy efektivnější a tedy i vhodnější.
A nakonec pro výpis znaku z celočíselné proměnné není třeba explicitního přetypování. Překladač jazyka C snadno převádí mezi znaky a malými čísly. Jednoduše si z celočíselné hodnoty vytahuje pouze spodní byte. I když se hodnota znaku vejde do typu char, často se ukládají znakové proměnné do typu int z důvodu, že mnoho funkcí při práci se znaky při chybě vrací hodnotu EOF, což obvykle bývá (ale nemusí) být hodnota -1, která je mimo rozsah typu unsigned char.
Zobrazeno 4 zpráv z 4.