问题标签 [rational-numbers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
823 浏览

c++ - 在c ++中实现有理数/分子大于分母

我有以下问题。我用 C++ 写了一个有理数类。类和运算符工作正常,除非分子大于分母。

例如,我使用了 -3/12 和 4/3 =13/12 但我得到的是 3/4

头文件:

主.cpp

我认为问题出在 operator+ 方法、gcd 函数或 reduce...

我希望有人能帮帮忙 :)

问候和感谢

托马斯^^

0 投票
1 回答
1168 浏览

coq - Coq QArith 除以零是零,为什么?

我注意到在 Coq 的有理数定义中,零的倒数被定义为零。(通常,除以零是不明确/合法/不允许的。)

为什么会这样?

它会导致有理数计算出现问题,还是安全?

0 投票
1 回答
250 浏览

java - 我使用类实现有理数是否可以接受?

我正在尝试完成我的 java 理性课程,而我希望完成的所有地方都没有它几乎相同。我知道我可以使用其他程序,但我见过的程序在运行程序时没有用于输入输入的位置。这是我到目前为止的代码

0 投票
2 回答
206 浏览

c++ - 给定输入的有理算术

我目前正在研究https://open.kattis.com/problems/rationalarithmetic以进行自己的练习。我得到 4 位数字和一个操作。输入是:x1 y1 op x2 y2,分数是 x1/y1 和 x2/y2。如果我得到输入:1 3 + 1 2 那么它的 1/3 + 1/2 并且答案应该是最小的分形,所以它的 5/6。我通过了我得到的测试用例,但我不知道我做错了什么。总结一下我的做法:

  1. 读取输入并检查操作是否为 +、-、/ 或 *。我生成一个素数数组来找到最大公约数。
  2. 根据输入的操作将输入发送到函数。
  3. 我用简单的数学计算给定的输入。
  4. 然后我找到最大的公约数并将分子和分母都除以它。
  5. 之后我打印出结果。

这是主要功能以及如果操作是 *. 我以相同的方式处理其他操作,但使用其他数学。

这是给定测试用例的代码,我得到了正确的结果。我需要一些关于不同测试用例或任何建议的提示。 http://ideone.com/jBddSI

0 投票
1 回答
314 浏览

math - sin n 对自然数 n 有最大值吗?

在形式上,是否存在这样的情况

0 投票
1 回答
48 浏览

javascript - Javascript 有理数 - 保留 1 的分母

我需要在 Javascript 中使用分母为 1 的有理数。所以,我有一些输入值,比如 1024,我需要将其存储为 1024/1。当然1024 / 1只给我 1024。那么我怎样才能获得原始的理性版本呢?

0 投票
3 回答
6833 浏览

c - C分数算术

我在为分配需要做的以下事情上遇到了很大的困难
声明一个包含有理数的数据结构。
湾。写 f'xns 将 +, -, *, / 有理数。
所有 f'xns 都必须传递 3 个参数,每个参数都指向我在 a 部分声明的类型的数据结构;参数中的 2 个 = 操作数,第 3 个 = 结果。
C。编写一个 f'xn,它将指向您的数据结构的指针作为参数并返回数字的 GCD。& 面额。
d。使用 c 部分中的 f'xn 编写一个 f'xn,它将分数(有理数)减少到最低项。传入一个指向分数的指针,并让 f'xn 修改分数。
e.编写输入和输出函数,以便用户可以输入 1/5 形式的分数。

应该允许用户输入任意数量的问题,并且程序应该以最低的形式输出答案。

我在正确的轨道上吗?我相信我有 ac,但没有 d,尤其是 e。有人可以指导我或帮助我更正我的脚本吗?

由于评论回复,删除 typedef 后进行编辑:

0 投票
0 回答
53 浏览

math - 圆形定点有理数到更窄的分母

我有一个(假设是非负的)有理数,表示为两个整数之比a/b,其中0 <= a < 2^m0 < b < 2^n。我想将其四舍五入为p分母中只有位的较小表示;也就是说,找到最大的数c/d,使得c/d <= a/b,其中0 < d < 2^p

示例:如果m=3, n=4, p=2,我想4/7向下取整到1/2,然后5/7向下取整到2/3

我的第一个冲动是将分母右移n-p,如果弹出 1 则加 1,然后将分子右移相同的量。这可以保证产生小于 的结果a/b,但不能保证结果的最优性。例如,3/1四舍五入到2/1.

理想情况下,我想在没有除法或模数的情况下这样做,但我怀疑这可能不切实际。m, n, 并且p可能会达到数百个,这将在一个内部循环中,所以我想要一些尽可能快的东西。

0 投票
3 回答
1313 浏览

java - 为什么我的方法打印不出来?

我在一个类中创建了一个主要方法,在另一个类中创建了许多其他小方法。当我在我的主要方法中使用它们的位置调用它们并确保如果我调用它们时它们会打印出来,它们仍然不会打印出来。只有 print 两种方法显示任何输出。我不确定如何修复它,所以我还没有尝试过很多事情。您能否查看我的代码并检查它们为什么不起作用?

更新:除了 28 在我收到的帮助下工作之外,我已经设法在 main 方法中获得所有行。现在剩下的就是那个输出了。我已经更改了代码,使其工作得更好一些,如果它不输出,它会关闭,但输出仍然丢失。包理性;

我的主要方法

我的其他方法类

0 投票
4 回答
1680 浏览

algorithm - 找到两个给定有理数之间最简单的有理数

我发现了一个与有理数有关的问题。

给出了两个有理数,任务是找到它们之间最简单的有理数。

对于这个问题,有理数的简单性可以定义为具有最小分子的有理数,尽管我对这个度量的其他建议持开放态度,例如类似于数学堆栈交换的问题,如果它使解决方案更容易。

示例输入和输出可能是:

关于如何解决这个问题的任何想法或至少一个建议?我正在挣扎。

谢谢

编辑:

其他意见:

  • 尽管两个给定的有理数之间有无限多个有理数,但确实有有限多个比这两个更简单的有理数。
  • 简单的解决方案可能只是尝试分子/分母的所有组合(分别从 1 到最高分子或分母),减少它们,看看数字是否介于两者之间。我不确定它的 O 复杂性是多少,但我猜想像 n 2之类的东西。