Язык программирования C++. Вводный курс

         

Одним из способов разрешения данной












if ( minVal <= ivec[ i ] ) {

    if ( minVal == ivec[ i ] )

        ++occurs;

    else {

        minVal    = ivec[ i ];

        occurs    = 1;

    }



}

Одним из способов разрешения данной проблемы является заключение внутреннего if в фигурные скобки:











if ( minVal <= ivec[ i ] ) {

    if ( minVal == ivec[ i ] )

        ++occurs;

}

else {

    minVal = ivec[ i ];

    occurs = 1;



}

В некоторых стилях программирования рекомендуется всегда употреблять фигурные скобки при использовании инструкций if-else, чтобы не допустить возможности неправильной интерпретации кода.

Вот первый вариант функции min(). Второй аргумент функции будет возвращать количество вхождений минимального значения в вектор. Для перебора элементов массива используется цикл for. Но мы допустили ошибку в логике программы. Сможете ли вы заметить ее?











#include <vector>

int min( const vector<int> &ivec, int &occurs )

{

    int minVal = 0;

    occurs = 0;

    int size = ivec.size();

    for ( int ix = 0; ix < size; ++ix ) {

        if ( minVal == ivec[ ix ] )

            ++occurs;

        else

        if ( minVal > ivec[ ix ] ) {

            minVal = ivec[ ix ];

            occurs = 1;

        }

    }

    return minVal;



}

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

ссылка. (Параметры-ссылки рассматриваются в разделе 7.3.) Любое присваивание значения ссылке occurs

изменяет значение переменной, на которую она ссылается:











int main()

{

    int occur_cnt = 0;

    vector< int > ivec;

    // occur_cnt получает значение occurs

    // из функции min()

    int minval = min( ivec, occur_cnt );

    // ...



}

Альтернативой использованию параметра-ссылки является применение объекта класса pair, представленного в разделе 3.14. Функция min() могла бы возвращать два значения в одной паре:


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий