Программа не работает с массивом во время инициализации - PullRequest
0 голосов
/ 27 июня 2018

Я просто тренируюсь с использованием массивов. Поэтому моя программа состоит из ввода чисел типа данных double в массив и их распечатки. Простой.

Я ограничил число до 4. Таким образом, массив, num_List[3] находится в коде. Я убедился, что правильно использовал циклы for для чтения и распечатки результата.

Первые несколько раз я тестировал код. Я понял, что 4-е число в массиве было в научной нотации, сообщая мне, что я забыл инициализировать array до 0, в данном случае 0.0, так как я использую double. Поэтому я вставил этот код.

for (index = 0; index <= 3; index++)
    num_List[index] = 0.0;

Этот код должен был инициализировать массивы от num_List до 0.0. Однако, когда я проверил это, ничего не появилось после того, как я ввел 4 числа. Итак, я допустил логическую ошибку здесь, или это что-то еще с циклом for, из-за которого он перехватывается и не продолжает выполнение.

Я читал в книгах об этом конкретном способе инициализации.

#include <iostream>
using namespace std;

int main() {
double num_List[3]; // These are my variables
int index;
//double num; // Ignore these two for now, for they are to be modified later on.
//double result;

cout << "This program will summarize the numbers you've inputted print out the result. \n";
cout << "And also print out the address of the 1st and 4th address in the array." << endl;
cout << "Please enter the four numbers to be summarized.";

for (index = 0; index <= 3; index++) { // I put this in after I realized my mistake of not initializing my arrays to 0.0.
    num_List[index] = 0.0;} // This is where the problem is, I think. 

for (index = 0; index <= 3; index++) // This reads in the user the input
    cin >> num_List[index];

cout << "The numbers you have inputted is:\n";

for (index = 0; index <= 3; index++) // This prints out the array.
    cout << num_List[index] << ", " << endl;

return 0;
}

Если вы сосредоточитесь на вышеупомянутом коде и попытаетесь скомпилировать его, вы увидите, что мой код, к сожалению, не будет продолжаться после того, как вы введете 4 цифры, независимо от того, введете ли вы число или пробел его и до 4 цифры или введите число, нажмите клавишу ввода для этих цифр. Скорее всего, я допустил очевидную ошибку, но мне было трудно ее увидеть.

Я использую Code Blocks, так что все немного по сравнению с компилятором Bloodshed C ++, который я использовал для практики кодов.

1 Ответ

0 голосов
/ 27 июня 2018
double num_List[3];

Это объявляет массив с 3 элементами, проиндексированными от 0 до 2.

for (index = 0; index <= 3; index++)

Это перебирает 4 индекса, от 0 до 3 . Когда вы что-то делаете с num_List[3], вы получаете неопределенное поведение. В вашем испытании, к счастью, неопределенное поведение привело к выводу мусора.

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