a='b\'c#d' #e
i="j\"k'l#m" #n
def preskoc_komentare(line):
# vytiskne obsah souboru 'f' s vynechanymi komentari
stav=0 # počáteční stav automatu
for c in line: # přečti jeden znak
if stav==0: # počáteční stav
if c=="#": # začátek komentáře
stav=1
continue
elif c=='\"':
stav=2 # začátek řetězce
elif stav==1: # 1="komentar"
continue
elif stav==2:
if c=='\"':
stav=0
print(c,end="") # vytiskni znak
i=input()
preskoc_komentare(i) # nacti radku a preskakuj
Napište program students.py, který načtěte databázi adres z textového souboru, jehož jméno je první argument programu, podle níže uvedeného formátu:
zaznam ::= cele_jmeno ";" studium
cele_jmeno ::= jmeno "(" jmena ")" "{" rodne_prijmeni "}" prijmeni |
jmeno "(" jmena ")" prijmeni |
jmeno "{" rodne_prijmeni "}" prijmeni |
jmeno prijmeni
jmeno, rodne_prijmeni, prijmeni ::= pismeno { pismeno }
jmena ::= jmeno { ","jmeno }
pismeno ::= "a"..."z"|"A"..."Z"
studium ::= typ "," rocnik "," obor
typ ::= ( "Bc." | "Ing." | "Ph.D." )
rocnik ::= cislo { cislo }
cislo ::="0"..."9"
obor ::= pismeno { pismeno }
Jeden záznam je vždy na jednom řádku, pokud záznam neodpovídá formátu data celý řádek se zahodí.
Mezi jednotlivými položkami záznamu může být i několik mezer.
Pokud záznam odpovídá formátu, vytiskne se na výstup informace o záznamu ve tvaru:
pokud má jen jedno křestní jméno:
pokud má více křestních jmen (v tomto případě David a Václav, vytisknou se jen iniciály a tečka):
Program odevzdejte do HW09.
Novak, Jaroslav, oi, Bc.
Novak, J. D., kybernetika, Ph.D.
Novy, J. M. Z., robotika, Ing.
Nova, Jarmila, robotika, Ing.
Novak, Jara, kybernetika, Ph.D.
Novotny, J. D. I., robotika, Ing.
Nowotnny, Y. D. Y., robotika, Ing.
#define MIN_VALUE -1.0f
#define _normalize(_x) ff((_x) - MIN_VALUE)
#define ff cos
float last_value = get_value();
#ifdef output
// Print if defined
std::cout << "Normalized: " << _normalize(last_value);
#endif
auto y = 2.0f * _normalize(atan2(last_value,-last_value)+0.5f);
#define MIN_VALUE -10.0f
#undef ff
auto y2 = 2.0f * _normalize(last_value);
float last_value = get_value();
auto y = 2.0f * cos((atan2(last_value,-last_value)+0.5f) - -1.0f);
auto y2 = 2.0f * ff((last_value) - -10.0f);
direktivy #define, #ifdef, #endif, #undef se netisknou, příkaz std::cout je v neaktivním bloku, v ostatních řádcích jsou pak nahrazená makra.