C ++ неожиданный вывод массива - PullRequest
3 голосов
/ 14 февраля 2011
//Page 215, #2, by Jeremy Mill
//program taken in 7 values, displays them, and then sorts them from highest to     lowest, and displays them in order.

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
//Define the variable we will need  
const int arraySize = 6;
double dailySales[arraySize];

//Now let's prompt the user for their input
for (int a=0 ; a <= arraySize; a++ )
    {
    cout << "Please enter sale number " << a+1 << " :";
    cin >> dailySales[a];
    }

//Now we display the output of the array
cout << "\n\nSale Number" << setw( 13 ) << "Value" << endl;
    for ( int i =0; i <= arraySize; i++ )        
        cout << setw( 5 ) << i << setw( 14 ) << dailySales[ i ] << endl;

//Now we sort using a bubble sort
for(int b = 0; b<=arraySize; b++)
        for(int c = arraySize-1; c>=b; c--) {
            if(dailySales[c-1] > dailySales[c]) { // if out of order
            // exchange elements 
            int t = 0;        
            t = dailySales[c-1];
                dailySales[c-1] = dailySales[c];
                dailySales[c] = t;
            cout << "it ran";
            }
        }   

cout << "Now we can display the array again! \n\n\n" << endl << dailySales[6] << endl;

//Now we display the output of the sorted array
cout << "\n\nSale Number" << setw( 13 ) << "Value" << endl;
    for ( int d = 0; d <= arraySize; d++ )        
        cout << setw( 5 ) << d << setw( 14 ) << dailySales[ d ] << endl;

cin.clear(); //clear cin
cin.sync(); //reinitialize it
cout << "\n\nPress Enter to end the program\n\n"; //display this text
cin.get(); //pause and wait for an enter
return 0;  

} // end main

Вывод:

Please enter sale number 1 :1
Please enter sale number 2 :2
Please enter sale number 3 :3
Please enter sale number 4 :4
Please enter sale number 5 :5
Please enter sale number 6 :6
Please enter sale number 7 :7


Sale Number        Value
    0             1
    1             2
    2             3
    3             4
    4             5
    5             6
    6             7
Now we can display the array again! 



7


Sale Number        Value
    0             1
    1             2
    2             3
    3             4
    4             5
    5             6
    6  2.97079e-313


Press Enter to end the program

Почему последнее «значение» не 7, а это число в sci.обозначение ??

Ответы [ 2 ]

7 голосов
/ 14 февраля 2011

Будьте осторожны при просмотре массива.Цикл должен начинаться с 0 до size-1. Поэтому вместо использования меньше или равного:

for (int a = 0; a <= arraySize; a++)

Вы должны использовать меньше-чем:

for (int a = 0; a < arraySize; a++)
3 голосов
/ 14 февраля 2011

Размер массива объявляется равным 6 элементам, а затем в него помещается 7 элементов [0 ... 6].

Переопределите размер массива равным 7, а затем измените все <= на <в циклах. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...