解方程

github项目地址

这两天得知初二的表妹学了一元二次方程,听说还不会解,我就想着试试用C语言编写解方程。

一元二次方程

用公式法

这种方法效果很好:

#include"funct.h"
void yyec1()
{
double a, b, c;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^2+bx+c=0" << endl;
cout << "依降次输入各项系数 a,b,c" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c;
x = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
y = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
cout << "-----------" << endl;
cout << "x1="<<x << endl <<"x2="<< y << endl;
}

用试错法

这种好像不是太好:

#include"funct.h"
void yyec2()
{
double a, b, c;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^2+bx+c=0" << endl;
cout << "依降次输入各项系数 a,b,c" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c;
for (;; x++)
{
y = x / 10;
if (a * y * y + b * y + c == 0)
{
cout << "-----------" << endl;
cout << "x=" << y << endl;
// break;
}
}
}

一元三次方程

#include"funct.h"
void yysc()
{
double a, b, c, d;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^3+bx^2+cx+d=0" << endl;
cout << "依降次输入各项系数 a,b,c,d" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d;
for (;; x++)
{
y = x / 10;
if (a * y * y * y + b * y * y + c * y + d == 0)
{
cout << "-----------" << endl;
cout << "x=" << y << endl;
break;
}
}
}

这个就和二次很像,不做多研究。

二元一次

公式法

#include"funct.h"
void eyyc1()
{
double a, b, c, d, e, f, x, y;
cout << "-----------" << endl;
cout << "对于方程组:" << endl;
cout << "1. ax+by=c " << endl;
cout << "1. dx+ey=f " << endl;
cout << "依次输入a,b,c,d,e,f:" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d >> e >> f;
y = (c * d - a * f) / (b * d - a * e);
x = (b * f - c * e) / (b * d - a * e);
cout << "-----------" << endl;
cout << "y=" << y << endl;
cout << "x=" << x << endl;
}

公式法的错误确实少点,但这似乎不像计算机。

试错法

//此方法不好
#include"funct.h"
void eyyc2()
{
double a, b, c, d, e, f;
cout << "-----------" << endl;
cout << "对于方程组:" << endl;
cout << "1. ax+by=c " << endl;
cout << "1. dx+ey=f " << endl;
cout << "依次输入a,b,c,d,e,f:" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d >> e >> f;
double x = MIN, y = MIN, xx, yy;
if(d!=0){
for (;; y++)
{
yy = y / 100;
// cout<<yy<<endl;
if (yy*b*d-a*e*yy==c*d-a*f)
{
cout << "-----------" << endl;
cout << "y=" << yy << endl;
cout << "x=" << (f-e*yy)/d << endl;
break;
}
// else cout<<"0";
}}
else {
for (;; y++)
{
yy = y / 100;
// cout<<yy<<endl;
if (yy*e==f)
{
cout << "y=" << yy << endl;
cout << "x=" << (c-b*yy)/a << endl;
break;
}
// else cout<<"0";
} } }

主函数

#include"funct.h"
int main()
{ while (1)
{
cout << "-----------" << endl;
cout << "1.一元二次" << endl;
cout << "2.一元三次" << endl;
cout << "3.二元一次" << endl;
cout << "-----------" << endl;
int se;
cin >> se;
switch(se)
{
case 1:
yyec1();
//yyec2();
break;
case 2:
yysc();
break;
case 3:
eyyc1();
//eyyc2();
break;
default:cout << "what are you inputting?" << endl; break;
}
}
return 0;
}

头文件

#include<iostream>
#include <cmath>
#define MIN -100
using namespace std;
void yyec1();
void yyec2();
void yysc();
void eyyc1();
void eyyc2();

用c++解一元二次方程的更多相关文章

  1. java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值

    1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...

  2. C语言写解一元二次方程程序心得

    前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍. 首先,先回忆一下一元二次方程的求根公式: 分别读取二次项.一次项和常数项系数并且求出delta ...

  3. 【Java例题】2.8 解一元二次方程

    8.解一元二次方程. 输入一元二次方程的a,b,c三个系数,解一元二次方程 ax^2+bx+c=0,输出两个根 package study; import java.util.Scanner; pub ...

  4. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...

  5. if语句解一元二次方程~

    #include<stdio.h>#include<math.h> void main(){  double a,b,c,x1,x2;  printf("请输入a&q ...

  6. 解一元二次方程的C++实现

    一元二次方程的根的情况分为实根与虚根两种,代码如下 #include<iostream> #include<cmath> using namespace std; float ...

  7. 利用离散 Fourier 变换解一元二次方程

    设二次方程$$x^2+bx+c=0$$的两个根分别为 $x_1,x_2$.则$$(x-x_1)(x-x_2)=x^2+bx+c.$$因此$$\begin{cases}  x_1+x_2=-b\\x_1 ...

  8. if else练习 (解一元二次方程)

    public class cccc { /** * @param args */ public static void main(String[] args) { int a=10,b=11,c=12 ...

  9. HDU 2298(纯物理加解一元二次方程)

    Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. Codeforces Round #241 (Div. 2) B. Art Union (DP)

    题意:有\(n\)个画家,\(m\)幅画,每个画家负责\(m\)幅画,只有前一个画家画完时,后面一个画家才能接着画,一个画家画完某幅画的任务后,可以开始画下一幅画的任务,问每幅画最后一个任务完成时的时 ...

  2. 牛客练习赛71 C.数学考试 (DP,容斥原理)

    题意:RT 题解:先对\(p\)排个序,然后设\(dp[i]\)表示前\(i-1\)个\(p[i]\)满足条件但是\(p[i]\)不满足,即在\([1,p[i]]\)中不存在从\(p[1]\)到\(p ...

  3. Educational DP Contest F - LCS (LCS输出路径)

    题意:有两个字符串,求他们的最长公共子序列并输出. 题解:首先跑个LCS记录一下dp数组,然后根据dp数组来反着还原路径,只有当两个位置的字符相同时才输出. 代码: char s[N],t[N]; i ...

  4. Vue的七种传值方式

    目录 1,父传子 2,子传父 3,兄弟组件传值 4,父组件使用子组件的数据和方法 5,子组件使用父组件的数据和方法 6,Vuex传值 6.1,定义store 6.2,挂载 6.3,使用 7,路由传值 ...

  5. 整体算力提升40% 芯片级安全防护 | 阿里云发布第七代ECS云服务器

    2 月 8 日,阿里云宣布推出第七代 ECS 云服务器产品家族,基于最新的神龙架构,相较于上一代整体算力提升 40%,容器部署密度最大可提升 6 倍,是最佳的云原生载体,此外全量搭载安全芯片,实现&q ...

  6. kmp--考研写法

    首先是模式串匹配: #include<iostream> #include<stdlib.h> using namespace std; #define maxn 100000 ...

  7. IDEA 安装常用操作一

    关于IDEA的下载,破解自行百度 一.安装完成的常用设置 SDK选择.编译版本的选择,单项目选择,全局选择 maven配置,单项目,全局配置 二.IDEA如何安装lombok https://www. ...

  8. u-boot 移植 --->1、u-boot配置(Kbuild)

    早期的U-BOOT的裁剪是没有使用Kbuild工具的,后来就借鉴了Linux的Kbuild同时也是方便使用者裁剪,因为他的原理和Linux内核的配置裁剪原理是相同的.今天拿来分析的U-Boot的版本是 ...

  9. Windows 10 Emoji shortcuts

    Windows 10 Emoji shortcuts Windows 10 Emoji 快捷方式 https://support.microsoft.com/en-us/windows/windows ...

  10. ECMAScript 2021 新特性

    ECMAScript 2021 新特性 refs https://codeburst.io/exciting-features-of-javascript-es2021-es12-1de8adf655 ...