Вывод программы становится нестабильным, когда вводятся все отрицательные входы? - PullRequest
0 голосов
/ 07 апреля 2020

Как видно из заголовка, моя программа, предназначенная для поиска наибольшего элемента в массиве целых чисел, определенного пользователем, становится нестабильной, когда все отрицательные числа используются для ввода пользователем. Кроме того, вывод становится нестабильным, когда все нули используются для пользовательского ввода (исключая ввод для общего количества элементов).

Программа работает очень хорошо, когда используются все положительные числа. Это довольно озадачивает меня, и я уверен, что есть правильное объяснение, но у меня сложилось впечатление, что в 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 ;
}
...