Ordenar términos en una ecuación que aísla el término y en C

Quiero tomar una ecuación de EDO y aislar el término y'' .

por ejemplo, -3xy' -y'' - bcos(t) = asin(t) convierte en y'' = -3xy' - bcos(t) - asin(t) .

Por ejemplo: 4y - 3y' = -y'' sería y'' = -4y + 3y'

Reglas: El orden más alto debe ser y'' y no habrá una constante delante del término y'' por lo que no se requiere división.

Básicamente, lo que quiero hacer es agregar signos ‘+’ donde sea necesario y luego recorrer la cadena y cada vez que encuentre un ‘+’ en el lado equivocado del signo igual Pon un ‘-‘ en el otro lado y me muevo todos los caracteres están entre él y el siguiente + o – justo después de eso.

 example: "-2+y'=3x" turns into "-2+y'=+3x" and then I take that and make it to "2+y'=+3x+" and finally "+y'=+3x+2" 

Aquí está mi bash hasta ahora, aunque no pasa nada:

 #include  #include  int main() { FILE *fin; fin = fopen("diffeq.txt", "r"); char line[300]; char from[300]; char to[300]; while (fgets(line, sizeof(line), fin)) { for (int i = 0; i < strlen(line); i++) { if (from[i] == '=' && from[i + 2] != '-') to[i] = '='; i++; to[i] = '+'; i++; printf("%s\n", line); } } fclose(fin); } 

La forma en que puede hacerlo es tokenizar por sus términos tanto en tamaño de mano izquierda como en lado derecho.

  1. Tener 2 matrices de cadenas: llamémoslas lhs y rhs
  2. Recorra la ecuación y identifique los términos y guárdelos en sus matrices respectivas.

P.ej:

 lhs = ["-3x","+2","-y"] rhs = ["+4y","-5"] 
  1. Ahora cree 2 matrices de cadenas nuevas para almacenar los lhs y rhs reorganizados. Llamémoslos new_lhs y new_rhs .

  2. Iterar a través de lhs y rhs y colocar todos non-y términos non-y en new_lhs y todos los términos y en new_rhs .

  3. Simplifica los términos.

  4. Unir ambos new_lhs y new_rhs en una nueva cadena.

EDITAR: Puede hacer que esta variable sea agnostic envolviéndola en una función y pasando la variable que desea resolver.

Por ejemplo:

 char* solve_for_variable(char* variable, char* equation);