Nie 'komplikator' a kompilator, nie 'rodzaje zmiennych' a typy zmiennych.
W c++ stringi są przechowywane jako tablica char'ów, nie da się porównywać w c++ stringa z char'em.
W Twoim if'ie właśnie to robisz:
if(tablica[0] == tekst[0])
to tak naprawdę :
if(string == char)
więc rozwiązać Twój problem można na 2 sposoby:
porównać 2 char'y w taki sposób :
if(tablica[0][0] == tekst[0])
lub zmienić typ zmiennej 'tablica' na char
string tablica[17];
tablica[0] = 'a';