C отладочный генератор вариаций - PullRequest
2 голосов
/ 05 декабря 2010

Я хотел бы попросить помощи в отладке этого простого фрагмента кода C:

void generator (int place, char *array, int n, int lol){
int i;
char c[6]={'1','0','+','-','*','/'};

if(n==0){
printf("%s\n",array);
return;
}
for(i=0; i<6; i++){
    if (lol==0){
        if (i>1) break;
        array[place]=c[i];
        lol=1;
        generator(place+1, array, n-1, lol);
    }
    if(lol==1){
        array[place]=c[i];
        if(i>1){
            lol=0;
            generator(n+1, array, n, lol);
        }
        else{ lol=1;
    generator(place+1, array, n-1, lol);}
    }
}}

Функция должна генерировать строки, содержащие n 1 и 0, разделенные от 0 до n-1 операторов. Например, если n == 3, то результат должен быть:

111
1+11
11+1
1+1+1
1*11
11*1
1*1*1
....
0/00
00/0
0/0/0
000

Я начинающий программист, поэтому буду признателен за любые советы.

Ответы [ 2 ]

1 голос
/ 05 декабря 2010

Каждый вызов функции использует один и тот же массив, и вы «вставляете» символы, перезаписывая существующий элемент массива. Ни то, ни другое вы не хотите.

Кроме того, как вы вызываете функцию? Что изначально содержится в массиве?

0 голосов
/ 05 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...