正如标题所暗示的,当所有负数都用于用户输入时,我的程序旨在查找用户定义的整数数组中的最大元素变得不稳定。此外,当用户输入全为零时(不包括元素总数的输入),输出变得不稳定。
当使用所有正数时,该程序运行良好。这让我很困惑,我确信有一个有效的解释,但我的印象是在 C++ 中,int 和 float 数据类型是自动签名的,并且能够处理其数据范围的负数。那么,如果所有负数都用于用户数组输入,为什么程序不会返回有效输出呢?
错误输出:
Please enter a total number of elements you'll be using: 5
Please enter each variable one by one.
Enter number 1: -10
Enter number 2: -5
Enter number 3: -20
Enter number 4: -2
Enter number 5: -7
The largest element within specified realNum[5] array is element number: 6 with a value of: 5.88501e-039
良好的输出:
Please enter a total number of elements you'll be using: 5
Please enter each variable one by one.
Enter number 1: 10
Enter number 2: 5
Enter number 3: 20
Enter number 4: 2
Enter number 5: 7
The largest element within specififed realNum[5] array is element number: 3 with a value of: 20
程序:
//10.2 Largest Element Finder of an Array
//Mandatory header
#include <iostream>
//Use namespace std ;
using namespace std ;
//Mandatory main method
int main ()
{
//Declare and initlize variables
int i, total, realNum = 0, temp = 1 ;
//Ask user to input a number of total elements
cout << endl << endl
<< "Please enter a total number of elements you'll be using: " ;
//Wait for user input
cin >> total ;
//Declare array set
float setNum [total] ;
//Ask user to input each varaible
cout << endl
<< "Please enter each variable one by one." << endl << endl ;
for ( i = 0 ; i < total ; i ++ )
{
cout << endl << "Enter number " << (i + 1) << ": " ;
cin >> setNum [i] ;
}
//Find the largest element within the array
for ( i = 0 ; i < total ; i ++ )
{
if ( setNum [i] <= setNum [temp] ) //Discard current i if less than the next element - Means temp is HIGHER and should be saved
{
if ( setNum [temp] >= setNum[realNum] )
realNum = temp ; //Temp can now be changed for iteration purposes as realNum is saving the highest element's positon
}
else if ( setNum [i] >= setNum [temp] ) //Discard current i if more than the next element and use the remainder to compete against the realNum
{
if ( setNum [i] >= setNum [realNum] )
realNum = i ;
}
i ++ ;
temp += 2 ;
}
//Display calculations
cout << endl << endl
<< "The largest element within specififed realNum[" << total << "] array is element number: " << (realNum + 1) << " with a value of: " << setNum[realNum] << endl ;
//Mandatory return statement
return 0 ;
}