Функция возврата назад - Показать только те слова, которые начинаются и заканчиваются буквой а - PullRequest
0 голосов
/ 29 февраля 2020

Я в настоящее время учусь в средней школе и начинаю программировать на C ++ и LUA. Я пытаюсь создать программу с использованием CodeBlocks, и я только что сделал этот код на C ++:

#include <cstring>

using namespace std;
int st[20],n,ok,x,p;
char v[8] = "abcdefg",voc[] = "aeiouAEIOU",lit[] = "a";
// (n - 1)! n=9

void afisare(int k){
    int i;
    for (i=1;i<=k;i++)
        cout<<v[st[i]]<<" ";
    cout<<endl;
}

void valid(int k,int&ok){
    int i;
    ok = 0;
    //cout<<v[st[k]];
    if (strchr(lit,v[st[1]]) != NULL && strchr(lit,v[st[k]]) != NULL)
        ok = 1;

    for (i = 1; i <= k-1; i++)
        if (st[k] == st[i])
            ok = 0;

}

void back(){
    int k;
    k = 1;
    x = 0;
    st[k] = -1;
    while(k > 0){
        ok = 0;
        while (ok==0 && st[k]<n - 1){
            st[k] = st[k] + 1;
            valid(k,ok);
        }
        if (ok == 1)
            if (k == n){ //
                afisare(k);
                x++;
                }
            else {
                k++;
                st[k] = -1;}
        else
            k--;
    }
}

int main()
{
    //cin>>p;
    n = strlen(v);
    //while (p > n)
        //cin>>p;
    back();
    cout<<endl<<"x! = "<<x;
    return 0;
}

Однако он показывает только:

x! = 0

Кто-нибудь знает решение для этой программы ? Кстати, я новичок в поиске ответов.

...