解一元一次方程
#include <bits/stdc++.h>
using namespace std;
string str,str1="",str2="";
int k=0;
void first()
{
for(k=0; k<str.size(); k++)
{
if(str[k]!='=')
{
str1+=str[k];
}
else if(str[k]=='=')
{
break;
}
}
for(int i=k+1; i<str.size(); i++)
{
str2+=str[i];
}
}
int main()
{
cin>>str;
first();
int x_left=0,shu_left=0,x_right=0,shu_right=0,ratio;
for(int i=0; i<str1.size(); i++)
{
if((str1[i]=='+'&&str1[i+1]=='x')||(i==0&&str1[i]=='x'))
{
x_left+=1;
}
else if(str1[i]=='-'&&str1[i+1]=='x')
{
x_left-=1;
}
if(str1[i]>='0'&&str1[i]<='9')
{
k=i;
ratio=0;
while(str1[k]>='0'&&str1[k]<='9'&&k<str1.size())
{
ratio=ratio*10+(int)(str1[k]-'0');
k++;
}
if(str1[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str1[i-1]=='-')
{
ratio=-ratio;
}
if(str1[k]=='x')
{
x_left+=ratio;
}
else if(str1[k]!='x'||k==str1.size())
{
shu_left+=ratio;
}
i=k-1;
}
}
for(int i=0; i<str2.size(); i++)
{
if((str2[i]=='+'&&str2[i+1]=='x')||(i==0&&str2[i]=='x'))
{
x_right++;
}
else if(str2[i]=='-'&&str2[i+1]=='x')
{
x_right--;
}
if(str2[i]>='0'&&str2[i]<='9')
{
k=i;
ratio=0;
while(str2[k]>='0'&&str2[k]<='9'&&k<str2.size())
{
ratio=ratio*10+(int)(str2[k]-'0');
k++;
}
if(str2[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str2[i-1]=='-')
{
ratio=-ratio;
}
if(str2[k]=='x')
{
x_right+=ratio;
}
else if(str2[k]!='x'||k==str2.size())
{
shu_right+=ratio;
}
i=k;
}
}
long double x=(double)(shu_left-shu_right)/(double)(x_right-x_left);
if(x==0)
{
cout<<"x可以取0或任意实数"<<endl;
return 0;
}
cout<<"x = "<<x<<endl;
return 0;
}
解二元一次方程
#include <bits/stdc++.h>
using namespace std;
string stra,strb,str1="",str2="",str3="",str4="";
int k=0;
void first()
{
for(k=0; k<stra.size(); k++)
{
if(stra[k]!='=')
{
str1+=stra[k];
}
else if(stra[k]=='=')
{
break;
}
}
for(int i=k+1; i<stra.size(); i++)
{
str2+=stra[i];
}
for(k=0; k<strb.size(); k++)
{
if(strb[k]!='=')
{
str3+=strb[k];
}
else if(strb[k]=='=')
{
break;
}
}
for(int i=k+1; i<strb.size(); i++)
{
str4+=strb[i];
}
}
int main()
{
cin>>stra>>strb;
first();
int x_left_1=0,shu_left_1=0,x_right_1=0,shu_right_1=0,y_left_1=0,y_right_1=0;//关于方程1
int x_left_2=0,shu_left_2=0,x_right_2=0,shu_right_2=0,y_left_2=0,y_right_2=0;//关于方程2
int ratio=0;
//对于方程1的操作:
for(int i=0; i<str1.size(); i++)
{
if((str1[i]=='+'&&str1[i+1]=='x')||(i==0&&str1[i]=='x'))
{
x_left_1+=1;
}
else if(str1[i]=='-'&&str1[i+1]=='x')
{
x_left_1-=1;
}
if((str1[i]=='+'&&str1[i+1]=='y')||(i==0&&str1[i]=='y'))
{
y_left_1+=1;
}
else if(str1[i]=='-'&&str1[i+1]=='y')
{
y_left_1-=1;
}
if(str1[i]>='0'&&str1[i]<='9')
{
k=i;
ratio=0;
while(str1[k]>='0'&&str1[k]<='9'&&k<str1.size())
{
ratio=ratio*10+(int)(str1[k]-'0');
k++;
}
if(str1[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str1[i-1]=='-')
{
ratio=-ratio;
}
if(str1[k]=='x')
{
x_left_1+=ratio;
}
if(str1[k]=='y')
{
y_left_1+=ratio;
}
else if((str1[k]!='y'&&str1[k]!='x')||k==str1.size())
{
shu_left_1+=ratio;
}
i=k-1;
}
}
for(int i=0; i<str2.size(); i++)
{
if((str2[i]=='+'&&str2[i+1]=='x')||(i==0&&str2[i]=='x'))
{
x_right_1+=1;
}
else if(str2[i]=='-'&&str2[i+1]=='x')
{
x_right_1-=1;
}
if((str2[i]=='+'&&str2[i+1]=='y')||(i==0&&str2[i]=='y'))
{
y_right_1+=1;
}
else if(str2[i]=='-'&&str2[i+1]=='y')
{
y_right_1-=1;
}
if(str2[i]>='0'&&str2[i]<='9')
{
k=i;
ratio=0;
while(str2[k]>='0'&&str2[k]<='9'&&k<str2.size())
{
ratio=ratio*10+(int)(str2[k]-'0');
k++;
}
if(str2[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str2[i-1]=='-')
{
ratio=-ratio;
}
if(str2[k]=='x')
{
x_right_1+=ratio;
}
if(str2[k]=='y')
{
y_right_1+=ratio;
}
else if((str2[k]!='y'&&str2[k]!='x')||k==str2.size())
{
shu_right_1+=ratio;
}
i=k-1;
}
}
//对于方程2的操作
for(int i=0; i<str3.size(); i++)
{
if((str3[i]=='+'&&str3[i+1]=='x')||(i==0&&str3[i]=='x'))
{
x_left_2+=1;
}
else if(str3[i]=='-'&&str3[i+1]=='x')
{
x_left_2-=1;
}
if((str3[i]=='+'&&str3[i+1]=='y')||(i==0&&str3[i]=='y'))
{
y_left_2+=1;
}
else if(str3[i]=='-'&&str3[i+1]=='y')
{
y_left_2-=1;
}
if(str3[i]>='0'&&str3[i]<='9')
{
k=i;
ratio=0;
while(str3[k]>='0'&&str3[k]<='9'&&k<str3.size())
{
ratio=ratio*10+(int)(str3[k]-'0');
k++;
}
if(str3[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str3[i-1]=='-')
{
ratio=-ratio;
}
if(str3[k]=='x')
{
x_left_2+=ratio;
}
if(str3[k]=='y')
{
y_left_2+=ratio;
}
else if((str3[k]!='y'&&str3[k]!='x')||k==str3.size())
{
shu_left_2+=ratio;
}
i=k-1;
}
}
for(int i=0; i<str4.size(); i++)
{
if((str4[i]=='+'&&str4[i+1]=='x')||(i==0&&str4[i]=='x'))
{
x_right_2+=1;
}
else if(str4[i]=='-'&&str4[i+1]=='x')
{
x_right_2-=1;
}
if((str4[i]=='+'&&str4[i+1]=='y')||(i==0&&str4[i]=='y'))
{
y_right_2+=1;
}
else if(str4[i]=='-'&&str4[i+1]=='y')
{
y_right_2-=1;
}
if(str4[i]>='0'&&str4[i]<='9')
{
k=i;
ratio=0;
while(str4[k]>='0'&&str4[k]<='9'&&k<str4.size())
{
ratio=ratio*10+(int)(str4[k]-'0');
k++;
}
if(str4[i-1]=='+'||i-1==-1)
{
ratio=ratio;
}
else if(str4[i-1]=='-')
{
ratio=-ratio;
}
if(str4[k]=='x')
{
x_right_2+=ratio;
}
if(str4[k]=='y')
{
y_right_2+=ratio;
}
else if((str4[k]!='y'&&str4[k]!='x')||k==str4.size())
{
shu_right_2+=ratio;
}
i=k-1;
}
}
long double x,y;
int A,B,C,D,E,F;
A=x_left_1-x_right_1;
B=y_left_1-y_right_1;
C=shu_right_1-shu_left_1;
D=x_left_2-x_right_2;
E=y_left_2-y_right_2;
F=shu_right_2-shu_left_2;
y=(double)(C*D-A*F)/(double)(B*D-A*E);
x=(double)(C*E-B*F)/(double)(A*E-B*D);
cout<<"x = "<<x<<endl;
cout<<"y = "<<y<<endl;
return 0;
}