Мне дали задание написать программу, которая считывает код, подобный c (с указанным синтаксисом, поэтому мне не нужно беспокоиться о коде в комментариях и c), и удаляет ненужные вычисления из внутри корпуса l oop наружу. Он может создавать новые переменные. Как в этом примере:
Input:
for (i=1; i<100; i++)
{ b[i] = c[i] *a * 135.8; }
Output:
float __gen1 = a*135.8;
for (i=1; i<100; i++)
{ b[i] = c[i] *___gen1; }
Я решил, что лучшим подходом будет запуск рекурсивной функции «optimize», таким образом работать с вложенными циклами будет легко. Но как мне go прочитать код в l oop и решить, что переместить, и как переместить его за пределы тела l oop?
Я использую C#.