收集C字符串C ++中最大和最小的数字

时间:2019-03-22 15:40:57

标签: c++ string c-strings

我对家庭作业项目的目标是创建一个程序,该程序可以接受一系列整数,字符串之间没有空格。然后将其相加并显示字符串中的最小和最大值。我确实获得了我的总和和我的最大价值,但是无论出于什么原因,我的程序中被认为获得最小价值的那部分都没有用,并且当我尝试确定该价值时,我什么也没有。

例如,我输入1234,我得到

“您输入的字符串中所有数字的总和为10 这组整数中的最大值是4,而最小值是“,

这是我的完整程序。任何帮助表示赞赏(:

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
//Declaring Variables & Character Array:
int size = 100;
char integers[size];

//Small and Large Numbers:
char small = '9';
char large = '0';

//Gathering Integers:
cout << "Please enter a series of integers with nothing between them.";
cin >> integers;

//Gathering Size of String:
size = (strlen(integers) + 1);

//Initializing Sum Variable:
int sum = 0;

//Gathering Sum of All Integers in String:
for(int i = 0; i < size; i++)
{
    if(integers[i] >= '0' && integers[i] <= '9' && integers[i] != '\0')
    {
        if(integers[i] == '0')
            sum += 0;
        if(integers[i] == '1')
            sum += 1;
        if(integers[i] == '2')
            sum += 2;
        if(integers[i] == '3')
            sum += 3;
        if(integers[i] == '4')
            sum += 4;
        if(integers[i] == '5')
            sum += 5;
        if(integers[i] == '6')
            sum += 6;
        if(integers[i] == '7')
            sum += 7;
        if(integers[i] == '8')
            sum += 8;
        if(integers[i] == '9')
            sum += 9;
    }
}

//Gathering Largest Value:
for(int j = 0; j < size; j++)
{
    if(integers[j] > large)
        large = integers[j];
}

//Gathering Smallest Number
for(int j = 0; j < size; j++)
{
    if(integers[j] < small)
        small = integers[j];
}

//Outputting Values:
cout << "The sum of all numbers within the string you input is " << sum << endl;
cout << "The largest value in this series of integers is " << large << ", whilst the smallest value is " << small << endl;


return 0;
}

2 个答案:

答案 0 :(得分:3)

错误在这里

//Gathering Size of String:
size = (strlen(integers) + 1);

这是不正确的,应该是

size = strlen(integers);

由于大小不正确,您正在字符串末尾处理nul字符,这使您的最小计算变得混乱(因为nul字符是最小字符)。

答案 1 :(得分:3)

small的最终结果是\0,因为您已经扫描了空字符,并且它的值最小。

查看此内容:https://ideone.com/6sLWJV

并且,作为建议。如果您保证输入内容不会超过数组的大小,请通过判断当前字符是否为\0来停止迭代,而不是计算迭代时间并将其与数组的大小进行比较。