gpt4 book ai didi

C++比较字符串的连续整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:36:39 25 4
gpt4 key购买 nike

我正在编写一个程序来确定给定的一组整数是增加、减少还是两者都不增加。

例如,字符串“123456”将递增,而“54321”将递减。

我的解决方案:

string my_str = "12345";

f = my_str.at(0);
s = my_str.at(1);
t = my_str.at(2);
l = my_str.at(3);
p = my_str.at(4);

if(f<=s<=t<=l<=p){

cout << "The string is increasing" << endl;

}

if(f>=s>=t>=l>=p){

cout << "The string is decreasing" << endl;

}

现在我不确定这是否有效,但我理解这个概念,我只是在将其放入 C++ 代码时遇到了问题。那么这是最好的方法吗?

编辑:我知道这段代码是不完整的,它只是一种概括,可以帮助我更好地理解。无论输入如何,我发布的小代码都会打印出增加,并且它没有读取 my_str 输入,我原以为它只会在运行程序后输出增加或减少。

最佳答案

您需要概括您的方法。我的意思是如果你有一个长度为 20 的字符串怎么办?您会逐一写下递增序列的所有相邻所需关系吗?当然不是,因为这是一项重复的任务,我们用循环来处理这项工作!

这是一个例子:

#include <iostream>
#include <string>

int main()
{
std::string str = "543621";
bool increasing = true;
for(size_t i = 0; i < str.size() - 1; ++i)
if(!(str[i] <= str[i + 1])) {
increasing = false;
break;
}
std::cout << "Increasing: " << increasing << std::endl;

bool decreasing = true;
for(size_t i = 0; i < str.size() - 1; ++i)
if(!(str[i] >= str[i + 1])) {
decreasing = false;
break;
}
std::cout << "Decreasing: " << decreasing << std::endl;

if(!increasing && !decreasing)
std::cout << "Neutral" << std::endl;
}

输出:

Increasing: 0
Decreasing: 0
Neutral

该示例首先检查“Increasing”字符串,然后检查“Decreasing”字符串,但两者都不为真,它假定它是中性的(两者都不是)。

当然,如果在 for 循环后 increasing 设置为 true,您可以优化此示例以停止检查“Decreasing”,但我决定保持简单用于演示目的。

关于C++比较字符串的连续整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46499171/

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