Может я с утра еще не проснулся и туплю, но:
do {rand()} // 1 - выполнение random пока не попадем в интервал 1-25
while (a>25);
а потом пишите
if (a==0){
do {rand()} // если сгенерился 0, он не нужен, то заново random
while (a==0);
}
После второго цикла число все равно же может быть больше 25 ?
и вообще зачем два цикла, если можно совместить условия ?
while(a>25 && a==0)
{rand()}
if (t==ind) { ra() } // если число уже есть в массиве, запуск random
Ну а работа функции то продолжится, может следует ее прерывать ?
return;