C/C++

Помогите переделать код на Си

Задания:
Дана строка, содержащая выражение вида “(3 3) 5=30”, где вместо каждого пробела стоит одна из операций +, – или *. Необходимо подставить вместо пробелов нужные операции, что бы выполнялось равенство.

В коде используются файлы, нужно решить задачу без использования файла

Код:
https://pastebin.com/TZT05J5V
#include <stdio.h>
#include <stdlib.h> /* atoi */
#include <string.h> /* strlen */
#include <ctype.h> /* isdigit */

int main()
{
char s[] = "(3 3) 5=30";
const char znak[] = "+-*";
char nashi_znaki[3];
const int numSize = 4;
int num[numSize];
int sum = 0;

/* считываем числовые значения */
for(int x = 0, y = 0; x < strlen(s), y < numSize; x++)
{
if(isdigit(s[x]))
{
char tmp[3];
int i = 0;
while(isdigit(s[x]))
{
tmp[i] = s[x];
i++;
x++;
}
tmp[i] = '\0';
num[y] = atoi(tmp);
/* #define TEST */
#ifdef TEST
printf("%d ", num[y]);
#endif /* TEST */
y++;
}
}
#ifdef TEST
putchar('\n');
#endif /* TEST */

/* подбираем знаки для уравнения */
for(int x = 0; x < strlen(znak); x++)
{
int i = 0;
nashi_znaki[i] = znak[x];
i++;
for(int y = 0; y < strlen(znak); y++)
{
nashi_znaki[i] = znak[y];
nashi_znaki[i+1] = '\0';
#ifdef TEST
printf("%s\n", nashi_znaki);
#endif /* TEST */
switch(nashi_znaki[0])
{
case '+':
sum = num[0] + num[1];
break;
case '-':
sum = num[0] - num[1];
break;
case '*':
sum = num[0] * num[1];
break;
default:
perror("Неверный знак! \n");
return 1;
}

switch(nashi_znaki[1])
{
case '+':
sum += num[2];
break;
case '-':
sum -= num[2];
break;
case '*':
sum *= num[2];
break;
default:
perror("Неверный знак! \n");
return 1;
}

if(sum == num[3])
{
x = strlen(znak); /* чтобы не возобновлялся внешний цикл */
break; /* выходим из внутреннего цикла */
}
}
}

/* пишим знаки в уравнение */
for(int x = 0, y = 0; x < strlen(s), y < 2; x++)
{
if(s[x] == ' ')
{
s[x] = nashi_znaki[y];
y++;
}
}

/* выводи уравнение на экран */
printf("%s\n", s);

return 0;
}
Владимир Владимиров
Владимир Владимиров
54 828
Лучший ответ
Владимир Владимиров Наверное лучше был использовать if вместо switch, чтобы использовать значение znak[0]...znak[2]
переделать с какого языка?
Валера Токарев
Валера Токарев
74 291