Не могу понять как работает программа.

Здравствуйте люди.Помогите понять как работают фнкции в программе(см. ниже). Учусь по книге Стефана Девидса С++ для чайников 4-е и 5-е издания читаю паралельно чтоб минимум ошибок было в коде.В частности не могу понять как работает функция sumArray( откуда взялся sizeOfArray)и функция displayArray что делает тоже не могу понять. Обьясните для чайников. Учил функции, но все равно не могу понять всего. В массиве inputValue используется индекс numberOfValue, а для чего и откуда индекс i, ведь его заменяет numberОfValue. Извините.

// ArrayDemo — демонстрирует использование
// массивов. Считывает последовательность
// целых чисел и отображает их по порядку
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

// объявления прототипов функций
int sumArray(int integerArray[], int sizeOfloatArray);
void displayArray(int integerArray[], int sizeOfloatArray);
int main(int nArg, char* pszArgs[])
{
// Описываем счетчик цикла
int nAccumulator = 0;
cout << "Эта программа суммирует числа,"
<< " введенные пользователем\п";
cout << "Цикл прерывается, когда"
<< " пользователь вводит"
<< " отрицательное число\n";

// Cохраняем числа в массиве
int inputValues[128];
int numberOfValues = 0;
for (numberOfValues = 0; numberOfValues < 128; numberOfValues++)
{
// ввод очередного числа
int integerValue;
cout << "Введите следующее число: ";
cin >> integerValue;

// если оно отрицательное...
if (integerValue < 0)
{
// ...тогда выходим из цикла
break;
}
// ...иначе сохраняем число в массиве
inputValues[numberOfValues] = integerValue;
}
// теперь выводим значения и их сумму
displayArray(inputValues, numberOfValues);
cout << "Сумма введенных чисел равна "
     << sumArray(inputValues, numberOfValues)
     << endl;

    // Пауза для того,чтобы посмотреть
    // на результат работы программы
    system("PAUSE");
    return 0;
}
// displayArray — отображает элементы массива
// integerArray длиной sizeOfloatArray
void displayArray(int integerArray[], int sizeOfArray)
{
cout << "В массиве хранятся"
     << " следующие значения:\n";
for (int i = 0; i < sizeOfArray; i++)
    {
         cout.width(3);
          cout  << i << ": " << integerArray[i] << endl;
     }
     cout << endl;
}
// sumArray — возвращает сумму элементов
// целочисленного массива
int sumArray(int integerArray[], int sizeOfArray)
{
       int accumulator = 0;
       for (int i = 0; i < sizeOfArray; i++)
       {
            accumulator += integerArray[i];
       }
       return accumulator;
}

Здравствуйте люди.Помогите понять как работают фнкции в программе(см. ниже). Учусь по книге Стефана Девидса С++ для чайников 4-е и 5-е издания читаю паралельно чтоб минимум ошибок было в коде.В частности не могу понять как работает функция sumArray( откуда взялся sizeOfArray)и функция displayArray что делает тоже не могу понять. Обьясните для чайников. Учил функции, но все равно не могу понять всего. В массиве inputValue используется индекс numberOfValue, а для чего и откуда индекс i, ведь его заменяет numberОfValue. Извините.

счетчик i необходим для работы цикла, а именно в цикле перебрать каждый элемент массива «integerArray», а «numberOfValue» это всего лишь параметр который передается при вызове функции и содержит длину массива «integerArray». i не заменяет «numberOfValue» а приближается к значению «numberOfValue» в цикле or (int i = 0; i < sizeOfArray; i++) от 0 до «numberOfValue».

А где тогда вызывается integerArray[], ведь он даже не объявлен и без индекса. Голова от этого всего кругом.Все таки большое спасибо.

А зачем выполнять for (int i = 0; i < sizeOfArray; i++), в каждой функции ведь это уже сделано в функцие main() , это что то типа повтора итерации или как?
Ведь можно написать функцию вот так

void displayArray (int integerArray, int sizeOfArray)
{
    size
    cout.width(3);
    couth << sizeOfArray " : " <<  integerArray[i] << endl;
}
cout << endl;

ТС, переменная sizeOfArray — это количество элементов массива, который передается функции sumArray(). В качестве первого аргумента, мы передаем этой функции массив integerArray, а точнее указатель на него. Второй аргумент — sizeOfArray нужен для того, чтобы правильно проитерировать этот массив в цикле.

Квадратные скобки после integerArray дают понять компилятору, что тип аргумента — целочисленный массив, а не просто целое число.

P.S. Когда мы передаем массив в качестве параметра функции, на самом деле передается только указатель на начало этого массива. Поэтому, все изменения, происходящие с элементами массива, сохранятся после завершения работы функции.

В main() вы вводите с помощью цикла данные массива до тех пор пока вы не введете отрицательное число или не достигните конца массива, а в функциях циклы считывают данные вашего массива.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.