gpt4 book ai didi

c++ - 如何修复加法/乘法表错误?

转载 作者:行者123 更新时间:2023-11-30 01:36:23 27 4
gpt4 key购买 nike

我在加法/乘法表的一些输入方面遇到了问题,我希望能找到一些帮助来解决这个问题。我将首先发布我为该计划准备的内容。

代码如下:

#include <iostream>
using namespace std;

void die() {
cout << "BAD INPUT!" << endl;
exit(1);
}

int main() {
const int ADD = 1;
const int MULTIPLY = 2;
const int MAX_SIZE = 20;
int choice = 0, min = 0, max = 0;

cout << "Choose:\n";
cout << "1. Addition Table\n";
cout << "2. Times Table\n";

cin >> choice;

if (!cin) die();
if (choice != ADD and choice != MULTIPLY) die();

cout << "Please enter the smallest number on the table:\n";
cin >> min;

if (!cin) die();

cout << "Please enter the largest number on the table:\n";
cin >> max;

if (!cin) die();
if (min > max) die();
if (max - min >= MAX_SIZE) die();

if (choice == ADD) {
for (int i = 0; i <= max; i++) {
if (i == 0)
cout << '+';
else
cout << i;

cout << '\t';
for (int j = min; j <= max; j++) {
cout << i + j << '\t';
}
cout << '\n';
}
}

if (choice == MULTIPLY) {
for (int i = min; i <= max; i++) {
if (i == min) {
cout << 'X';
else
cout << i;

cout << '\t';
for (int j = min; j <= max; j++) {
cout << i * j << '\t';
}
cout << '\n';
}
}

}

现在,这是我从这段代码中得到的似乎无法解决的错误。首先,在使用 min = 1、max = 1 执行 MUlTIPLY 表时,我得到:

X    1

什么时候我应该得到(我相信)

X    1
1 1

其次,在使用 min = 1、max = 12 执行 MULTIPLY 表时,我得到:

X    1    2    3    4 ... 12
2 2 4 6 8 ... 24
3 3 6 9 12 ... 36

什么时候应该得到

X    1    2    3    4 ... 12
1 1 2 3 4 ... 12
2 2 4 6 8 ... 24
3 3 6 9 12 ... 36

最后,当使用 min = 21,max = 40 的 ADD 表时,我无法发布所有代码,因为它太乱了,但基本上列/行如下:

+    21    22    23    24    25 ...
5
1
6
2
7
3
8

显然,代码应该输出行和列为 21 - 40 均匀。正如您在上一个示例中看到的,我的行输出正确,但不知何故我的列完全乱码。


我已经坐着盯着这段代码看了一段时间,似乎无法解决手头的这些问题。任何人都可以帮助我朝着正确的方向前进吗?我非常感谢任何帮助和提示:)

最佳答案

检查一下。可能没有完全优化,但有效

if (choice == ADD) {
cout << '+';
for (int i = min; i <= max; i++) {
cout << '\t' << i;
}

for (int i = min; i <= max; i++) {
cout << '\n' << i << '\t';
for (int j = min; j <= max; j++) {
cout << i + j << '\t';
}
}
}

if (choice == MULTIPLY) {
cout << 'X';
for (int i = min; i <= max; i++) {
cout << '\t' << i;
}

for (int i = min; i <= max; i++) {
cout << '\n' << i << '\t';
for (int j = min; j <= max; j++) {
cout << i * j << '\t';
}
}
}

查看输出 here .

关于c++ - 如何修复加法/乘法表错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52241588/

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