dodání ihned! nové
Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
BF
Avatar
Lukáš Stejskal:21.10.2020 10:50

ahoj,

chtěl jsem se zeptat jak v jazyku c vypsat písmena, čísla vypsat umím, ale písmena ne.

Pomohl by mi někdo prosím

děkuji za každou odpvěď

Pomohl by mi někdo prosím

Děkuji za odpověď

Zkusil jsem: Jde to udělat pomocí úpravy tohoto příkazu?
popřípadě úplně jiný?

#include <stdio.h>

int main () {

int a;

/* for loop execution*/
for( a = 1023; a <= 1755; a = a + 2 ){
printf("value of a: %d\n", a);
}

return 0;
}

Chci docílit: Vypsaní velkých a malých písmen

 
Odpovědět
21.10.2020 10:50
Avatar
Odpovídá na Lukáš Stejskal
Matúš Olejník:22.10.2020 18:29

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;
}
Nahoru Odpovědět
22.10.2020 18:29
/* I am not sure why this works but it fixes the problem */
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Lukáš Stejskal
Luboš Horký:29.10.2020 11:45

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 :)

Nahoru Odpovědět
29.10.2020 11:45
Poslední co umírá je naděje.
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Luboš Horký
DarkCoder:29.10.2020 12:52

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.

Nahoru Odpovědět
29.10.2020 12:52
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.