Массив r[1]=12, r[2]=-3, r[3]=-5, r[4]= 6, r[5]=14, r[6]=9, r[7]=0, r[8]=8. определите значение суммы после выполнения следующего фрагмента программы: sum: =0; for i: =3 to 7 do if r[i]< 5 sum: =sum+r[i]; writeln (sum); *
Рассматриваются значения массива с индексами от 3 до 7. Если его значение меньше пяти, то прибавляем к общей сумме, изначально равной 0. Просмотрим все значения (от 3 до 7): R[3] = -5 < 5. Сумма = 0 + R[3] = 0 + (-5) = -5 R[4] = 6 > 5. Условие не выполняется. R[5] = 14 > 5. Условие не выполняется. R[6] = 9 > 5. Условие не выполняется. R[7] = 0 < 5. Сумма = -5 + R[7] = -5 + 0 = -5 R[8] не входит в рассматриваемую часть (цикл от 3 до 7).
#include <iostream> //библиотека потоков ввода/вывода #include <vector> //библиотека "вектор", это обертка над динамическим массивом using namespace std; /* * пространство имен, без него компилятор не поймет, * что за функции ты хочешь использовать и что за объекты * создавать, то есть библиотеки, * что подключили мы выше - не заведутся без него. */ //эта функция считает сумму позитивных елементов в векторе(массиве), от и до //указанного индекса, все параметры передаем по ссылке во избежании копирования // double getSumOfPositivElements(const vector<double>& array, const int& indexFrom, const int& indexTo) // { double sumOfPositivElements = 0; //переменная, что хранит сумму for (int i = indexFrom; i < indexTo; ++i) //цикл от и до указанного индекса { if (0 < array[i]) //условие, если елемент больше нуля { sumOfPositivElements += array[i]; //то приплюсовать его } } return sumOfPositivElements; //вернуть полученный результат суммы } //работает аналогично, с разницей лиш что суммирует отрицательные елементы // double getSumOfNegativElements(const vector<double>& array, const int& indexFrom, const int& indexTo) // { double sumOfNegativElements = 0; for (int i = indexFrom; i < indexTo; ++i) { if (0 > array[i]) { sumOfNegativElements += array[i]; } } return sumOfNegativElements; } //основная функция программы // int main() // { vector<double> myArray; //создаем вектор(массив), что хранит значения типа double double arraySize; //переменная, что хранит размер вводимого массива int elementBuf; //в этой переменной будем хранить вводимый елемент int arrayMiddlePosition; //индекс середины массива cout << "Enter array size: "; cin >> arraySize; //вводим размер массива arrayMiddlePosition = arraySize / 2; //определяем его середину myArray.reserve(arraySize); //резервируем размер под кол-во елементов for (int i = 0; i < arraySize; ++i) //цикл инициализации вектора { cout << "Enter element: "; cin >> elementBuf; //вводим текущий елемент myArray.push_back(elementBuf); //вставляем его в вектор cout << "Elements left: " << arraySize - (i + 1); //расчитываем кол-во оставшихся елементов cout << endl << endl; } cout << endl; cout << "Sum of positiv elements in first array half: "; //выводим сумму положительных елементов в первой половине массива cout << getSumOfPositivElements(myArray, 0, arrayMiddlePosition); cout << endl; cout << "Sum of negativ elements in first array half: "; //выводим сумму отрицательных елементов в второй половине массива cout << getSumOfNegativElements(myArray, arrayMiddlePosition, myArray.size()); cout << endl; //останавливаем выполнение программы, что бы посмотреть результат system("pause"); //возращаем значение '0', что значит для системы, что программа завершила работу успешно (без ошибок) return 0; }
Если его значение меньше пяти, то прибавляем к общей сумме, изначально равной 0.
Просмотрим все значения (от 3 до 7):
R[3] = -5 < 5. Сумма = 0 + R[3] = 0 + (-5) = -5
R[4] = 6 > 5. Условие не выполняется.
R[5] = 14 > 5. Условие не выполняется.
R[6] = 9 > 5. Условие не выполняется.
R[7] = 0 < 5. Сумма = -5 + R[7] = -5 + 0 = -5
R[8] не входит в рассматриваемую часть (цикл от 3 до 7).
ответ: -5.