помогите исправить код на си
была такая задачка:
В написанном выражении ((((1?2)?3)?4)?5)?6 вместо каждого знака? вставить знак одной из 4 арифметических операций +,-*,/ так, чтобы результат вычислений равнялся 35 (при делении дробная часть в частном отбрасывается) . Найти все решения.
что-то с кодом я через чур намудрил, то ли я цикл закинул, чтобы цифры менялись, то ли что. . .
у меня уже голова кругом идет, вообще перестал соображать
#include "stdafx.h"
#include
#include
#include
#include
#include
#define N 6
void print_arr(int *arr, int n)
{
int i;
for(i = 0; i < n; i++)
printf("%3d", arr[i]);
putchar('\n');
putchar('\n');
}
int main(void)
{
enum op {plus, minus, umn, del}; // 0, 1, 2, 3
int operators[N] = {0};// the elements array can be the digit from 0(ADD) to 3(DIV)
int i, rez, j=1, k, R = 35;
char arr_digits[N+1] = "505597";
for(i = 0; i < N; i++)
{
while(!operators[N-1])
{
///check total
k = 0;
rez = arr_digits[k++] - '0';
while(arr_digits[k])
{
switch(operators[k-1])
{
case plus: rez += (arr_digits[k++] - '0'); break;
case minus: rez -= (arr_digits[k++] - '0'); break;
case umn: rez *= (arr_digits[k++] - '0'); break;
case del: if(arr_digits[k]-'0')rez /= (arr_digits[k++] - '0'); else k++; break;
default: printf("Default"); k++;
}
}
if(rez == 10){
printf("%8s%2c%1d:\n", "Subset",'#',j);
printf("Is Searched!! Rez = %d\n", rez);
print_arr(operators, N-1);
}
j++;
i = 0;
while(operators[i] == 3) operators[i++] = 0;
operators[i]++;
}
}
system("pause");
}