Binárny strom
Morseova abeceda
Program EXE
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
typedef struct vrchol {
char znak;
struct vrchol *bodka, *ciarka;
} TVrchol;
/* globálna premenná */
FILE *fr;
-----------------------------------------------------------------------------------------
TVrchol *vytvor(char z, TVrchol *b, TVrchol *c)
{
TVrchol *novy = (TVrchol*)malloc(sizeof(TVrchol));
novy->znak = z;
novy->bodka = b;
novy->ciarka = c;
return(novy);
}
-----------------------------------------------------------------------------------------
void dekoduj(TVrchol *strom)
{
TVrchol *p;
char c;
p = strom;
while ((c = getc(fr)) != EOF) {
if (c == '.') p = p->bodka;
else if (c == '-') p = p->ciarka;
else {
putchar(p->znak);
p = strom;
}
}
}
-----------------------------------------------------------------------------------------
void vypis(TVrchol *v) /* LKP - výpis prvkov stromu */
{
if (v != NULL) {
vypis(v->bodka);
printf("%c ", v->znak);
vypis(v->ciarka);
}
}
-----------------------------------------------------------------------------------------
void main() /* hlavný program */
{
TVrchol *strom = NULL;
/* vytvorenie dekódovacieho stromu */
strom = vytvor(' ',
vytvor('e',
vytvor('i',
vytvor('s', vytvor('h', NULL, NULL), vytvor('v', NULL, NULL)),
vytvor('u', vytvor('f', NULL, NULL), NULL)),
vytvor('a',
vytvor('r', vytvor('l', NULL, NULL), NULL),
vytvor('w', vytvor('p', NULL, NULL), vytvor('j', NULL, NULL)))),
vytvor('t',
vytvor('n',
vytvor('d', vytvor('b', NULL, NULL), vytvor('x', NULL, NULL)),
vytvor('k', vytvor('c', NULL, NULL), vytvor('y', NULL, NULL))),
vytvor('m',
vytvor('g', vytvor('z', NULL, NULL), vytvor('q', NULL, NULL)),
vytvor('o', NULL, NULL))));
clrscr();
fr = fopen("sprava.txt", "rt");
printf("Sprava: ");
dekoduj(strom);
fclose(fr);
}
|