当前位置: 首页 > news >正文

求解二次方程

描述

编写一个程序,实现求解形如ax^2 + bx + c = 0的二次方程的根。要求使用三个函数分别计算b^2 - 4ac大于0、等于0和小于0时的根,并在主函数中输出结果。

输入

输入三个浮点数a、b和c,分别表示二次方程的系数。

输出

输出二次方程的根,格式为两个浮点数,用空格隔开。

输入样例 1 

5 -4 -1

输出样例 1

x1=1.000 x2=-0.200
#include <iostream>
#include <cmath>       //需要用到sqrt函数
#include <iomanip>      //需要用到保留几位小数当中
#include <utility>       //需要用到pair
using namespace std;pair<float, float> dayu(float a, float b, float c)
{float t = sqrt(b * b - 4 * a * c);float x1, x2;x1 = (-b + t) / (2 * a);x2 = (-b - t) / (2 * a);pair<float, float>result;result = make_pair(x1, x2);return result;                  //此处需要返回两个值
}float dengyu(float a, float b, float c)
{float x1, x2;x1 = x2 = (-b) / (2 * a);return x1;
}float xiaoyu(float, float, float)
{return 0;
}int main()
{float a, b, c;cin >> a >> b >> c;float t = b * b - 4 * a * c;float x1, x2;if (t > 0){pair<float, float> result = dayu(a, b, c);cout << fixed << setprecision(3) << "x1=" << result.first;cout << " ";cout << fixed << setprecision(3) << "x2=" << result.second;}else if (t == 0){x1 = x2 = dengyu(a, b, c);cout << fixed << setprecision(3) << "x1=" << x1 << " x2=" << x2;}else{xiaoyu(a, b, c);cout << "此方程无解!";}return 0;
}

 问题点:

目录

①:函数模版

②:函数的重载

③:pair的用法

1)C++中的pair是一个模板类,用于存储两个不同类型的值。它将两个值组合在一起,可以用来表示一个键值对或者简单的有序组。

2)pair 实际上可以看作一个内部有两个元素的结构体,且这两个元素的类型是可以指定的,如下:

3)pair 中只有两个元素,分别是 first 和 second ,只需要按正常结构体的方式去访问即可。 

④:“std::”是什么?


①:函数模版

所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。

凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能。

#include <iostream>

using namespace std;

template <typename T>          //模板声明,其中的T为类型参数

T max(T a,T b,T c)

{

if(b>a) a=b;

if(c>a) a=c;

return 0;

}

int main( )

{

int i1=1,i2=3,i3=3,i;

double d1=1.1,d2=2.2,d3=3.3,d;

long g1=24324,g2=876775,g3=5465646,g;

i=max(i1,i2,i3);                 //调用模板函数,此时T被int取代

d=max(d1,d2,d3);            //调用模板函数,此时T被double取代

g=max(g1,g2,g3);            //调用模板函数,此时T被long取代

cout<<i<<" "<<d<<" "<<g<<endl;

return 0;

}

定义函数模板的一般形式为:

template <typename T>

通用函数定义

//或

template <class T>

通用函数定义

 template的含义是“模板”,尖括号中先写关键字typename(或class),后面跟一个类型参数T,这个参数实际上是一个虚拟的类型名,表示模板中出现的T是一个类型名,但是现在并未指定它是哪一种具体的类型。

类型参数可以不止一个,可以根据需要确定个数,如:

template <class T1 , typename T2>

用函数模板比函数重载更方便,程序更简洁。但应注意它只适用于函数体相同,函数的参数个数相同而数据类型不同的情况。如果参数个数不同,则不能用函数模板。

②:函数的重载

C++中允许用同一函数名定义多个函数,而这些函数的参数个数和参数类型可以不相同。这就是函数的重载,即对一个函数名重新赋予它新的含义,使一个函数名可以多用。所谓重载,其实就是“一物多用”。 函数可以重载,运算符也可以重载,例如:运算符“<<”和“>>”既可以作为位移运算符,又可以作为输出流中的插入运算符和输入流中的提取运算符。

重载函数的参数个数、参数类型或参数顺序三者必须至少有一种不同,函数返回值类型可以相同也可以不同。

在使用重载函数时,同名函数的功能应当相同或相近,不要用同一函数名去实现完全不相干的功能,虽然程序也能运行,但可读性不好,易使人莫名其妙。

③:pair的用法

1)C++中的pair是一个模板类,用于存储两个不同类型的值。它将两个值组合在一起,可以用来表示一个键值对或者简单的有序组。

要使用 pair,应先添加头文件 #include <utility>,并在头文件下面加上 " using namespace std; " ,然后就可以使用了。

注意:由于 map 的内部实现中涉及 pair,因此添加 map 头文件时会自动添加 utility 头文件,此时如果需要使用 pair ,就不需要额外再去添加 utility 头文件了。

2)pair 实际上可以看作一个内部有两个元素的结构体,且这两个元素的类型是可以指定的,如下:

struct pair
{
    typeName1 first;
    typeName2 second;
}; 

// pair 有两个参数,分别对应 first 和 second 的数据类型,它们可以是任意基本数据类型或容器。
pair<typeName1, typeName2> name;
 
// 想要定义参数为 string 和 int 类型的 pair,如下:
pair<string, int> p;
 
//如果想在定义 pair 时进行初始化,只需要跟上一个小括号,里面填写两个想要初始化的元素即可;
pair<string, int> p("haha",5); 

//如果想要在代码中临时构建一个 pair,有如下两种方法:
 
// (1) 将类型定义写在前面,后面用小括号内两个元素的方式。
pair<string, int>("haha", 5);
 
// (2) 使用自带的 make_pair 函数。
make_pair("haha", 5)  

3)pair 中只有两个元素,分别是 first 和 second ,只需要按正常结构体的方式去访问即可。 
#include <iostream>
#include <utility>
#include <string>
using namespace std;int  main()
{pair<string, int> p;p.first = "haha";p.second = 5;cout << p.first << " " << p.second << endl;p = make_pair("xixi", 55);cout << p.first << " " << p.second << endl;p = pair<string, int>("heihei", 555);cout << p.first << " " << p.second << endl;return 0;
}

 此部分选自C++中pair使用详细说明_c++ pair_想去的远方的博客-CSDN博客

④:“std::”是什么?

std是一个类(输入输出标准),它包括了cin成员和cout成员,声明了“using namespace std;”以后才能使用它的成员。

如果不先声明“using namespace std;”,就需要在cin和cout前面加“std::”,如"std::cin"和"std::cout"。

std是命名空间,你所用到的很多函数或者类都是被放到命名空间里面的,命名空间是防止名字重复而使用的。当你自己定义一个string并把它放到命名空间AAA中的时候,你使用string只要指定是哪个命名空间的,就不会导致编译器分不清是哪个string了。你使用时会用std::string或者AAA::string,前者告诉编译器我用的string是在命名空间std里面的,后者告诉编译器用的string是在命名空间AAA里面的。

"using namespace std;"这样告诉编译器,我没有指定命名空间的,就默认使用std这个命名空间,那么你使用string就不用再加std::作用域了,只需要直接写string就可以了。

此部分选自【C++】C++中“std::“是什么意思?起什么作用?_一拳Marx的博客-CSDN博客

相关文章:

求解二次方程

描述 编写一个程序&#xff0c;实现求解形如ax^2 bx c 0的二次方程的根。要求使用三个函数分别计算b^2 - 4ac大于0、等于0和小于0时的根&#xff0c;并在主函数中输出结果。 输入 输入三个浮点数a、b和c&#xff0c;分别表示二次方程的系数。 输出 输出二次方程的根&am…...

【hive 运维】hive注释/数据支持中文

文章目录 一. 设置mysql中的hive库二. hive-site.xml 设置三. 测试 hive支持中文需要关注两个方面&#xff1a; 设置hive 元数据库中的一些表设置hive-site.xml. 一. 设置mysql中的hive库 use hivedb; alter table TBLS modify column TBL_NAME varchar(1000) character se…...

架构,性能和游戏 《游戏编程模式》学习笔记

开新坑&#xff0c;准备把《游戏编程模式》这本书啃完。这是一本讲设计模式的书&#xff0c;针对游戏开发而作&#xff0c;写得很好。 以下是读书笔记&#xff0c;文末有原文链接 每个程序都有一定的软件架构&#xff0c;哪怕是全塞到main里也是一种架构好的架构可以把代码写成…...

Spring Bean的生命周期

文章目录 Spring Bean的生命周期加载Bean对象创建Bean对象构造对象填充属性初始化实例注册销毁 销毁 Spring Bean的生命周期 Spring Bean的生命周期就是指Bean对象从创建到销毁的过程&#xff0c;大体可以分为&#xff1a;实例化、属性赋值、初始化、使用、销毁。 加载Bean对象…...

基于量子同态的安全多方量子求和加密

摘要安全多方计算在经典密码学中一直扮演着重要的角色。量子同态加密(QHE)可以在不解密的情况下对加密数据进行计算。目前&#xff0c;大多数协议使用半诚实的第三方(TP)来保护参与者的秘密。我们使用量子同态加密方案代替TP来保护各方的隐私。在量子同态加密的基础上&#xff…...

前端自动化测试:确保质量和稳定性的关键步骤

文章目录 测试金字塔与前端测试层级1. 单元测试&#xff08;Unit Testing&#xff09;2. 组件测试&#xff08;Component Testing&#xff09;3. 集成测试&#xff08;Integration Testing&#xff09;4. 端到端测试&#xff08;End-to-End Testing&#xff09; 单元测试、集成…...

《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要针对不同的客户环境部署二进制版K8S集群&#xff0c;由于大都数用户都是专网环境&#xff0c;无法使用外网&#xff0c;为了更便捷&#xff0c;高效的部署&#xff0c;针对业务系统的特性&#xff0c;我这边编写了 基于a…...

Java实现十大经典排序算法之快速排序

0 算法简介 快速排序是一种高效率排序算法&#xff0c;它是对冒泡排序的一种改进&#xff0c;它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot&#xff08;一般选取数组首元素&#xff09;&#xff0c;使得数组排序之后基…...

【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)

方法一&#xff1a;使用pthread_create、pthread_exit、pthread_join函数【两个线程不共用同一份资源】 先在主函数创建并清空拷贝的目标文件&#xff0c;再创建两个线程&#xff0c;在两个线程内部同时打开要读取的文件以及要拷贝的目标文件&#xff08;两个线程不共用同一份资…...

php运算符的短路特性

php运算符的短路特性 1、逻辑运算符&#xff1a;逻辑与&#xff08;&&)和逻辑或&#xff08;||&#xff09;&#xff0c;存在着短路特性 PHP中有以下两个运算符具有短路的特性&#xff0c;他们是逻辑运算符的逻辑与&#xff08;&&)和逻辑或&#xff08;||&am…...

C语言假期作业 DAY 13

一、选择题 1、如果 x2014 &#xff0c;下面函数的返回值是&#xff08; &#xff09; int fun(unsigned int x) { int n 0; while(x 1) { n; x x | (x 1); } return n; } A: 20 B: 21 C: 23 D 25 答案解析 正确答案&#xff1a;C 这个作用是对整型中0的个数进行统计&…...

以产品经理的角度去讲解原型图---会议OA项目

目录 一.前言 二.原型图 2.1 原型图是什么 3.1 原型图的作用 三.演示讲解 3.1 项目背景 3.2 项目介绍 3.2.1 会议管理&#xff08;会议的发起&#xff0c;通知&#xff09; 3.2.2 投票管理&#xff08;会议的流程重大决策记录&#xff09; 3.2.3 会议室管理 3.2.4 系统管…...

C++ 外部变量和外部函数

1.外部变量 如果一个变量除了在定义它的源文件中可以使用外&#xff0c;还能被其他文件使用&#xff0c;那么就称这个变量为外部变量。命名空间作用域中定义的变量&#xff0c;默认情况下都是外部变量&#xff0c;但在其他文件中如果需要使用这一变量&#xff0c;需要用extern…...

C# Onnx Paddle模型 OCR识别服务

效果 项目 可运行程序exe下载 Demo&#xff08;完整源码&#xff09;下载...

MCUXpresso for VS Code -- 基于VSCode开发RT1176

MCUXpresso for VS Code 是nxp推出插件&#xff0c;旗下MCX LPC, Kinetis和i.MX rt等MCU&#xff0c;都能在VS Code平台进行嵌入式开发。功能框图如下&#xff1a; 前期准备&#xff1a; 软件环境: windows(实际可以跨系统&#xff0c;linux和mac没有测试) VS Code ninja CMa…...

MySQL的使用——【初识MySQL】第二节

MySQL的使用——【初识MySQL】第二节 文章目录 MySQL环境变量的配置&#xff08;如使用Navicat可忽略&#xff09;使用命令行连接MySQL&#xff08;如使用Navicat可忽略&#xff09;步骤注意 NavicatNavicat的下载Navicat的使用连接MySQL新建表 总结总结 MySQL环境变量的配置&a…...

MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字

一、&#x1f49b;并发基本概念 并发的基本意思&#xff1a; 什么是并发呢&#xff1f;简单的理解就是同一时间执行 服务器同一时刻&#xff0c;给多个客户端提供服务&#xff5e;&#xff5e;&#xff0c;这两个客户端都可以给服务器提交事务。 如果提交两个事务&#xff0c;改…...

⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态

前置知识&#xff1a;类和对象 参考书籍&#xff1a;《C Primer 第五版》 目录 什么是面向过程&#xff1f;什么是面向对象&#xff1f; 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符&#xff08;访问说明符&#xff09; 1.2 什么是封装&#xff1f; 2、封装的优点…...

Element的el-select下拉框多选添加全选功能

先看效果图 全选&#xff1a; 没有选中时&#xff1a; 选中部分&#xff1a; 作者项目使用的是vue3写法&#xff0c;如果是vue2的自己转换一下 html代码&#xff1a; js代码&#xff1a; 拓展 另一种方法&#xff0c;如果不想使用勾选框&#xff0c;可以试试下面的方…...

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错&#xff1a;AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...