Я беру уравнение от пользователя (например, 1X1 + 2X2 = 24), независимо от количества переменных, я делю его на 1X1, 2X2 на +, - или =, а затем помещаю их в массив char, и каждый токингx или X, и поместите его в другой массив, но появляется какой-то мусор
#include<iostream>
#include <stdio.h>
#include <string.h>
#include<string>
#include <algorithm>
#include<vector>
using namespace std;
int main()
{
string a;
cout<<"Enter Equation: "<<endl;
cin>>a; //string of the equation
int num= a.size();
char str[num]; //view it as array of char
for (int k=0;k<num;k++)
{
str[k]=a[k];
cout<<str[k];
}
int i=0;
char *pch;
int count = 0;
for (int i = 0; i < a.size(); i++)
{
//counting + , - and = to see how many element i need in array
if (a[i] == '+'||a[i] == '-'||a[i] == '=')
count++;
}
char *array[count];
cout<<"\nSplitting string into tokens: "<<a;
pch = strtok (str,"= + -");
while (pch != NULL)
{
array[i++]=pch;
pch = strtok (NULL, "= + -");
}
// printing every variable
for(i=0;i<count+1;i++)
{
cout<<endl<<array[i];
}
char *pch_var;
char *array_var[2];
for(int j=0; j<count+1;j++)
{
cout<<"\nSplitting Variable into tokens: "<<array[j];
pch_var = strtok (array[j],"x X");
while (pch_var != NULL)
{
array_var[i++]=pch_var;
pch_var = strtok (NULL, "x X");
}
cout<<array_var[0]<<endl<<array_var[1];
}
return 0;
}
результат будет таким:
Введите уравнение:
1X1 + 2X2 = 24// от пользователя
1X1 + 2X2 = 24 // здесь запускается функция моего кода
Разделение строки на токены: 1X1 + 2X2 = 24
1X1
2X2
24 {t {k║
Разделение переменной на токены: 1X1P ■ m
] Uï Uï∞â∞SVWh
Разделение переменнойв токены: 2X2P ■ m
] Uï Uï∞â∞SVWh