首页 > 其他分享 >打卡第三十三天

打卡第三十三天

时间:2023-05-24 20:33:18浏览次数:40  
标签:f1 FS int fz measure 打卡 fm 第三十三

分数加法运算重载

一、

1.分数为0时,表示成0z1m,如果结果为负数,那么分子取负数,分母为正数

二、

三、

#include <iostream>

using namespace std;

class FS
{
private:
int fz;
int fm;

public:
FS(){}
FS(int z,int m):fz(z),fm(m){}

void set(int x,int y) {fz=x; fm=y;}
int measure(int x,int y);
void show() const
{
cout <<fz<<"z"<<fm<<"m"<<endl;
}

FS operator + (const FS &f)
{
int y=fm*f.fm;
int x=fz*f.fm+f.fz*fm;
int a=measure(x,y);
x=x/a;
y=y/a;
if(y<0)
{
x=-x;
y=-y;
}
return FS(x,y);
}

};


int FS::measure(int x,int y)
{
int z = y;
while(x%y!=0)
{
z = x%y;
x = y;
y = z;
}
return z;
}


int main()
{
int n;
cin>>n;
int i;
int fz,fm;
//int x[50],y[50];
char a,b;
FS *f = new FS[n*2];
FS *f1 = new FS[n];
for(i=0;i<n*2;i++)
{
cin>>fz>>a>>fm>>b;
f[i].set(fz,fm);
}
int j=0;
for(i=0;i<n*2;i++)
{
f1[j]=f[i]+f[i+1];
i++;
j++;
}

for(i=0;i<n;i++)
{
f1[i].show();
}
return 0;
}

四、

#include <iostream>

using namespace std;

class FS
{
private:
int fz;
int fm;

public:
FS(){}
FS(int z,int m):fz(z),fm(m){}

void set(int x,int y) {fz=x; fm=y;}
int measure(int x,int y);
void show() const
{
cout <<fz<<"z"<<fm<<"m"<<endl;
}

FS operator + (const FS &f)
{
int y=fm*f.fm;
int x=fz*f.fm+f.fz*fm;
int a=measure(x,y);
x=x/a;
y=y/a;
if(y<0)
{
x=-x;
y=-y;
}
return FS(x,y);
}

};


int FS::measure(int x,int y)
{
int z = y;
while(x%y!=0)
{
z = x%y;
x = y;
y = z;
}
return z;
}


int main()
{
int n;
cin>>n;
int i;
int fz,fm;
//int x[50],y[50];
char a,b;
FS *f = new FS[n*2];
FS *f1 = new FS[n];
for(i=0;i<n*2;i++)
{
cin>>fz>>a>>fm>>b;
f[i].set(fz,fm);
}
int j=0;
for(i=0;i<n*2;i++)
{
f1[j]=f[i]+f[i+1];
i++;
j++;
}

for(i=0;i<n;i++)
{
f1[i].show();
}
return 0;
}

标签:f1,FS,int,fz,measure,打卡,fm,第三十三
From: https://www.cnblogs.com/xscya/p/17429424.html

相关文章

  • 2023.5.24编程一小时打卡
    一、问题描述:已知Horse类是Pegasus类的父类,根据以下主函数完善程序内容,以实现规定的输出。不允许改变主函数的内容。intmain(){Horse*p1=newHorse;//输出:Horse申请了空间...Horse*p2=newPegasus;/*输出两行:Horse申......
  • 打卡
    1.问题:求两个正整数之间的最大公约数。2.思路:用暴击穷举法,简单粗暴地把1~y(前面已经假设x>y)都列出来分别判断是否为x、y的公约数,然后再找到其中最大的一个。3.程序流程图: 4.代码实现:#include<iostream>usingnamespacestd;intmain(){ intx,y; cin>>x>>y; intco......
  • 5月24日打卡
    例5-9常引用做形参 #include<iostream>#include<cmath>usingnamespacestd;classPoint{public:Point(intx=0,inty=0):x(x),y(y){}intgetX(){returnx;}intgetY(){returny;}friendfloatdist(constPoint&p1,constPoint......
  • 编程打卡:面向对象程序设计
    importjava.util.*;publicclassStaffManagementSystem{privatestaticList<Staff>staffList=newArrayList<>();publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(true){......
  • 5.24打卡
    #include<bits/stdc++.h>usingnamespacestd;classPoint{public:Point(intxx=0,intyy=0){x=xx;y=yy;}Point(Point&p);intgetX(){returnx;......
  • 5.24打卡
     3.程序流程图 4.代码实现#include<bits/stdc++.h>usingnamespacestd;main(){intx,y,z,num=0;printf("MenWomenChildren\n");for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(3*x+2*y+z==50)......
  • 每日打卡1057
    给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串 PAT(Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个......
  • 5_24_打卡_数据结构之循环队列
    //循环队列可存储数据数量是maxsize-1//队列长度为(front-rear+maxsize)%maxsize//队列为空时front==rear//队列满时(front+1)%maxsize==rear;#defineMAXSIZE5#include<iostream>usingnamespacestd;typedefstructqueue{ intfront; intrear; intdata[MAXSIZE];}......
  • 打卡 c语言趣味编程 求勾股数
    问题描述:求100以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。思路:可以通过for循环遍历范围内每个可能的值,在每次循环中,调用函数检查当前的三个数是否满足勾股定理。如果满足,将其打印出来。流程图:for循环代码实现:1#include......
  • 2023.5.23编程一小时打卡
    一、问题描述:定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。输......