首页 > 编程语言 >2023.5.14编程一小时打卡

2023.5.14编程一小时打卡

时间:2023-05-14 20:11:38浏览次数:65  
标签:直线 dist 14 Point int 2023.5 return 打卡 Line

一、问题描述:

计算点到直线的距离。首先设计一个点类Point,它有2 个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3 个私有数据成员a,b和c,表示直线方程ax+by+c= 0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的计算公式如下:

无标题.bmp

语法要点: 友元函数的特点。
这是一个编程题模板。请在这里写题目描述。例如:本题目要求读入2个整数A和B,然后输出它们的和。

输入格式:

输入两行,第一行输入两个整数,表示点坐标x,y的值
在第二行中输入直线三个参数,表示直线方程的三个洗漱a,b,c.

输出格式:

计算点到直线的距离保留两位小数。

二、解题思路:

首先,定义一个点类,在类中定义俩个成员数据x和y,再定义一个直线类,包含私有成员a,b,c,,在俩个类中分别定义构造函数去对成员初始化,再定义一个友元函数dist()去计算点到直线的距离,返回值为距离,最后在主函数中定义俩个类的对象并对其初始化,最后利用dist()函数计算并输出点到直线的距离。

三、代码实现:

 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 using namespace std;
 5 class Line;
 6 class Point 
 7 {
 8     int x,y;
 9 public:
10     Point(int X=0,int Y=0) 
11     {
12         x=X;y=Y;
13     }
14     int getx(){ return x; }
15    int gety(){ return y; }
16     friend double dist(Point &,Line &); 
17 };
18 class Line 
19 {
20     int a,b,c;
21 public:
22         Line(int A=1,int B=1,int C=1) 
23     {
24         a=A,b=B;c=C;
25     }
26     int geta(){ return a; }
27    int getb(){ return b; }
28    int getc(){ return c; }
29     friend double dist(Point &,Line &); 
30 };
31 double dist(Point &P,Line &L)
32 {
33     double s;
34    s=abs((L.a*P.x+L.b*P.y+L.c)/sqrt(L.a*L.a+L.b*L.b));
35    return s;
36 }
37 int main()
38 {
39    int A,B,a1,b1,c1;
40     cin>>A>>B;
41     cin>>a1>>b1>>c1; 
42     Point P(A,B);
43     Line L(a1,b1,c1);
44     if (dist(P, L) == 0)
45         cout << "The distance is: 0";
46     else     
47         cout << fixed << setprecision(2)<< "The distance is: " << dist(P, L);
48     return 0;
49 }

标签:直线,dist,14,Point,int,2023.5,return,打卡,Line
From: https://www.cnblogs.com/lixinyao20223933/p/17400031.html

相关文章

  • c++打卡练习(27)
    求x的y次方的最后三位数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){intnum,y,x,i;printf("输入x以及x的次数y\n"); scanf("%d%d",&x,&y); for(i=1,num=1;i<=y;i++){ num=num*x%1000; }printf("%d",num); r......
  • 5-12打卡,练习
    实现一个z字形的字符串排列classSolution{public:voidconvert(strings){intn=s.size()-1,N=s.size()-1;intm=n%4;while(n>=0){if(n!=N){cout<<"";......
  • 23-5-14--二分查找--二分查找模板
    1#include<stdio.h>2//#include<iostream>3#include<algorithm>45usingnamespacestd;67structarray{8longlongindex;9longlongnum;10};1112boolcmp(arrayx,arrayy)13{14returnx.num<y.num;......
  • 5.14打卡
    问题描述:比较两个分数的大小二、设计思路:要求通分后的最简公分母,即求两分母的最小公倍数。求最小公倍数的前提是求出两数的最大公约数,最大公约数的求解采用辗转相除的方法,步骤如下:(1)用较大的数m除以较小的数n,得到的余数存储到变量b中;b=m%n;(2)上一步中较小的除数n和得出的余数b......
  • 代码随想录day4|leetcode24,19,142
    Leetcode24我一开始是直接模拟,通过考虑后面有没有secondpoint和thirdpoint的情况下进行的编程,非常的冗长。后面阅读了推荐的答案,发现在编写链表题目的时候,可以使用虚拟头节点,这样写出来的结果非常的简洁明了,并且一二两个就可以开始重复进行 关于判断语句的如果是and连接......
  • 打卡5.8——委派认为问题
    1.问题描述某项任务需要在A、B、C、D、E、F这6个人中挑选人来完成,但挑选人受限于以下的条件:(1)A和B两个人至少去一人;(2)A和D不能同时去;(3)A、E和F三人中要挑选两个人去;(4)B和C同时去或者都不去;(5)C和D两人中只能去一个;(6)如果D不去,那么E也不去。试编程求出应该让哪几个人......
  • 打卡5.6——求车速
    问题描述:一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?问题分析:对称数是95859,两小时后出现新的,这个数......
  • 打卡5.7——三色球问题
    1.问题描述一个口袋中放有12个球,已知其中3个是红的,3个是白的,6个是黑的,现从中任取8个,问共有多少种可能的颜色搭配?2.问题分析假设八个球,红球a个,白球b个,黑球c个,那么c=8-a-b个。而且a<=3,b<=3,也就是说8-a-b<=63.算法设计穷举法用两个for循环,第一个for控制红球的数量,第二个控制白......
  • 打卡5.5
    1.问题描述警察审问4名窃贼嫌疑犯。现在已知,这4人当中仅有一名是窃贼,还知道这4个人中的每个人要么是诚实的,要么总是说谎。这四个人回答如下甲:乙没有偷,是丁偷的乙:我没有偷,是丙偷的丙:甲没有偷,是乙偷的丁:我没有偷请根据这四个人的回答判断谁是窃贼2.问题分析四个人里面有一......
  • 第23天打卡
    问题:打印出所有256以下的回文数;流程图: 直接暴力枚举即可源代码:#include<stdio.h>intmain(){intm[16],n,i,t,count=0;longunsigneda,k;for(n=1;n<256;n++){k=0;t=1;a=n*n;for(i=0;a!=0;i++){m[i]=a%10;a/=10;}for(;i>0;i--){k+=m[i-1]*t;t*=10;}if(k......