gpt4 book ai didi

c++ - 如何将 C++ 中的字母组合增加到 'z' 之外?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:17 24 4
gpt4 key购买 nike

我正在处理 Excel 电子表格,我必须只使用一种类型的公式来处理大量数据。由于在公式中唯一必要的更改涉及字母,我想知道是否有一种方法可以使程序按照 Excel 列顺序(A、B、C...Z;AA、AB、AC... AZ;BA、BB、BC...BZ)。

在我的例子中,我每次都需要将字母递增 5,所以这里是我尝试获取的代码类型:

#include <iostream>

using namespace std;

int main() {

char x = 'B';
char y = 'E';
for (int z = 1; z < 2255; z++) {
cout << "=SUMPRODUCT(SUBTOTAL(4,OFFSET(" << x << "1:" << y << "1,ROW(" << x << "1:" << x << "100)-ROW(" << x << "1),)))" << endl;
x = x + 5;
y= y + 5;
}
return 0;
}

当然,它不会工作,因为它会越过“z”,但仍然有办法做到这一点吗?

最佳答案

一般解决方案描述

解决方案 1:自行创建 base-26 系统:

假设您有 26 个字母。所以首先让我们制作 26 数字系统。我们为每个数字使用 1 个字节。我们创建了一个数字数组,然后当加法超过26时,有时需要调整。

假设您当前的数字是 25。我们将 7 添加到它,然后我们需要处理溢出,假设最大为 256(1 字节),我们的数字限制是 26。因此调整将是 256-26=230。 (我们对 short(16 位)进行此计算,所以我们在 26+7=33 -> 33+230=263 处溢出。因此,高位字节将为 1,低位字节将为是 7.)

计算出溢出阈值(高于 1)后,我们可以将其添加到下一个数字,如果发生溢出则执行相同的操作。

最后,为了显示,我们只需将 65 ('A') 添加到两个字节中的每一个。我们的最后一个字节将以 '\0' 为空终止,因此我们可以将它变成一个字符串。

解决方案 2 执行所有计算,然后将其转换为 26 基数:

在这种情况下,

number/26 = x

remainder r1 = (number%26)

我们将 r1 存储到一个字节。

x/26 = x1

remainder r2 = (x%26)

我们将 r2 存储到下一个字节。

x1/26 = x2

remainder r3 = (x%26)

我们将 r3 存储到下一个字节。我们得到一个字符串 r3 r2 r1 '\0' 然后给每个字节加上 65 'A'。

关于c++ - 如何将 C++ 中的字母组合增加到 'z' 之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334729/

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