[Solved] 2.1.3
Dobrý deň! Je to asi len nepodstatná drobnosť, no v časti "Tip" sa píše, že príkaz
cislo = znak < 10 ? znak + ‘0’ : znak + 55;
by mal v "C" splniť úlohu zo zadania. Nemalo by tam ale byť 65 miesto 55? Lebo znak 'A' má v ASCII hodnotu 65...
Nie, je to dobre - v prvej casti podmienky (ak je menej ako 10) priratavas hodnotu 0, co je 48, cize priratavas k nule, dajme tomu ze pre 3 je to 48+3=51, co je ak si pozries v ASCII znak pre 3. V druhej casti je to o nieco ine, lebo nepracujes s hodnotou A (hodnota A je 65), cize ak by si chcel priratavat od 65 zacinal by si na K, nie na A. Cize musis odratat 10, kedze najmensia hodnota aka tam moze byt je 10. Skuska s napriklad cislom 11 - 11+55=66, co je B.
TLDR; musis davat pozor, ze pri jednom pracujes od 0 a pri druhom od 10.
Je to spravne, ale prave som si uvedomil, ze premenne znak a cislo su prehodene, aj ked princip zostava rovnaky (zmenim to aj v zadani). Malo by to byt:
#include <stdio.h>
int main(int argc, char* argv[])
{
char znak;
int cislo = 13;
znak = cislo < 10 ? cislo + '0' : cislo + 55;
printf("%c\n", znak);
return 0;
}
- 21 Forums
- 220 Topics
- 808 Posts
- 0 Online
- 7,045 Members