我对家庭作业项目的目标是创建一个程序,该程序可以接受一系列整数,字符串之间没有空格。然后将其相加并显示字符串中的最小和最大值。我确实获得了我的总和和我的最大价值,但是无论出于什么原因,我的程序中被认为获得最小价值的那部分都没有用,并且当我尝试确定该价值时,我什么也没有。
例如,我输入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;
}
答案 0 :(得分:3)
错误在这里
//Gathering Size of String:
size = (strlen(integers) + 1);
这是不正确的,应该是
size = strlen(integers);
由于大小不正确,您正在字符串末尾处理nul字符,这使您的最小计算变得混乱(因为nul字符是最小字符)。
答案 1 :(得分:3)
small
的最终结果是\0
,因为您已经扫描了空字符,并且它的值最小。
查看此内容:https://ideone.com/6sLWJV
并且,作为建议。如果您保证输入内容不会超过数组的大小,请通过判断当前字符是否为\0
来停止迭代,而不是计算迭代时间并将其与数组的大小进行比较。