0

正如标题所暗示的,当所有负数都用于用户输入时,我的程序旨在查找用户定义的整数数组中的最大元素变得不稳定。此外,当用户输入全为零时(不包括元素总数的输入),输出变得不稳定。

当使用所有正数时,该程序运行良好。这让我很困惑,我确信有一个有效的解释,但我的印象是在 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 ;
}
4

0 回答 0