gpt4 book ai didi

c++ - C++ 中的分数加法

转载 作者:太空狗 更新时间:2023-10-29 20:27:00 24 4
gpt4 key购买 nike

所以基本上我正在尝试上分数课。它将从用户输入中获取分数并执行加法。例如,我输入 1 5 和 1 7 ,对于加法,它将打印出 12/35。
这是我的 .h 类:

#include <string>
#ifndef _FRACTION_H_
#define _FRACTION_H_

using namespace std;

class Fraction
{
public:
Fraction();
Fraction(int n, int d);
int getNumerator() const;
int getDenominator() const;
void display();
string to_string();
Fraction operator+(Fraction &second);
private:
int numerator;
int denominator;
};

这是我的.cpp 文件:

#include "Fraction.h"
#include <string>
include <iostream>

using namespace std;

Fraction::Fraction(){}

Fraction::Fraction(int n, int d)
{
this->numerator = n;
this->denominator = d;
}

int Fraction::getNumerator() const
{
return numerator;
}

int Fraction::getDenominator() const
{
return denominator;
}

Fraction Fraction::operator+(Fraction &second)
{
int n1 = getNumerator() * second.getDenominator();
int n2 = second.getNumerator() * getDenominator();
int d = getDenominator() * second.getDenominator();
return Fraction(n1+n2, d);
}
string Fraction::to_string()
{
return (getNumerator() + "/" + getDenominator()) ;
}

这是我的主要方法:

bool get_input(Fraction &fract);

int main()
{
Fraction fraction1, fraction2;
if (((!get_input(fraction1)) || (!get_input(fraction2))))
cout << "Invalid Input!" << endl;
else
{
// Test harness for Arithmetic Operator Overloading
Fraction result = fraction1 + fraction2;
cout << "Addition = " << result.to_string() << endl;
}

bool get_input(Fraction& fract)
{
int num, den;
cout << "Enter numerator & denominator (separated by space)" << endl;
cin >> num >> den;
if (cin.fail())
return false;
Fraction f(num,den);
fract = f;
return true;
}
}

它设法接收用户输入。但是,它不会打印出结果。提前致谢。

最佳答案

可能还有其他问题,但是 Fraction::to_string()函数明显错误:return 表达式中的类型分别是 intchar const*int。添加这些的结果是一个 char const*,但考虑到字符串文字只是两个字符长,如果两个int之和大于二,你有未定义的行为。您需要转换 int首先是字符串;最简单的方法是使用std::ostringstream:

std::string
Fraction::to_string()
{
std::ostringstream results;
results << numerator << '/' << denominator;
return results.str();
}

通常,当您误用时,人们会期望出现编译器错误像这样的类型,但出于历史原因:字符串文字具有类型 char const[],而不是 std::string字符常量[]几乎所有地方都转换为 char const*; C++支持为指针添加整数值; std::string 有一个从 char 进行隐式转换的构造函数
常量*
.

关于c++ - C++ 中的分数加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17610500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com