jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
Macros | Functions
cislice-dane-soustavy.c File Reference
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Macros

#define je_cislice(radix, znak)   ((znak)>='0'&&(znak)<='9' ? (znak)-'0'<(radix) : ((znak)>='A'&&(znak)<='Z') ? (znak)-'A'<(radix) : 0)
 
#define je_cislice2(radix, znak)   ((znak)>='0'&&(znak)<='9' ? (znak)-'0'<(radix) : (((znak)|0x20)>='a'&&((znak)|0x20)<='z') ? ((znak)|0x20)-'a'<(radix) : 0)
 
#define test(radix, znak)   printf("radix=%2d znak='%c' %s\n",(radix), (znak), je_cislice((radix), (znak))?"Ano":"Ne")
 
#define test2(radix, znak)   printf("radix=%2d znak='%c' %s\n",(radix), (znak), je_cislice2((radix), (znak))?"Ano":"Ne")
 

Functions

int main (void)
 

Detailed Description

Téma: Práce s preprocesorem

Procvičované učivo: makra s parametry, podmínkový operátor, logické operátory, operátory porovnání

Napište makro je_cislice(zaklad, znak) pro testování, zda je daný znak (určen argumentem znak) číslicí soustavy s daným zakladem (argument zaklad). Makro je_cislice by mělo korektně fungovat pro základy soustav od 2 do 36 a libovolné znaky. Pro číslice s hodnotou větší než 9 používejte pro jednoduchost pouze velká písmena anglické abecedy. Příklad použití: if (je_cislice(8,'8')!=0) printf("Ano\n"); else printf ("Ne\n"); if (je_cislice(10+6,'0'+4)!=0) printf("Ano\n"); else printf ("Ne\n"); if (je_cislice(30,'@')!=0) printf("Ano\n"); else printf ("Ne\n"); Příklad výstupu: Ne Ano Ne

Definition in file cislice-dane-soustavy.c.

Macro Definition Documentation

#define je_cislice (   radix,
  znak 
)    ((znak)>='0'&&(znak)<='9' ? (znak)-'0'<(radix) : ((znak)>='A'&&(znak)<='Z') ? (znak)-'A'<(radix) : 0)

zda je daný znak

Parameters
znakčíslicí soustavy s daným zakladem
radix.tj. znaky '0'..'9' a 'A'-'Z'
Note
if else ... se v makrech hojně využívá ?: (a také do{...}while(0);
dusledně zavorkovat argumenty!!!
mala písmena z 'A'-'Z' se vyrobí jednoduše: znak|0x20 (jsou posunutá o 32 pozici)
raději se seznamte se string.h, funkce strtol() !!!

Definition at line 38 of file cislice-dane-soustavy.c.

#define je_cislice2 (   radix,
  znak 
)    ((znak)>='0'&&(znak)<='9' ? (znak)-'0'<(radix) : (((znak)|0x20)>='a'&&((znak)|0x20)<='z') ? ((znak)|0x20)-'a'<(radix) : 0)

dtto, akorat umi velka/mala:

Definition at line 42 of file cislice-dane-soustavy.c.