Программирование >>  Инициализация объектов класса, структура 

1 ... 62 63 64 [ 65 ] 66 67 68 ... 395


#include <iostream> #include <vector>

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

int minVal = ivec[ 0 ]; occurs = 1;

int size = ivec.size();

for ( int ix = 1; ix < size; ++ix )

if ( minVal == ivec[ ix ] ) ++occurs;

else

if ( minVal > ivec[ ix ] ){ minVal = ivec[ ix ]; occurs = 1;

return minVal;

int main() {

int ia[] = { 9,1,7,1,4,8,1,3,7,2,6,1,5,1 };

vector<int> ivec( ia, ia+14 );

int occurs = 0;

int minVal = min( ivec, occurs );

cout << Минимальное значение: << minVal

<< встречается: << occurs << раз \n ;

return 0;

Результат работы программы:

Минимальное значение: 1 встречается: 5 раз.

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

template <class valueType> inline const valueType&

min( valueType &vall, valueType &va12 )

if ( vall < va12 )

return vall; return va12;

выразительное условное выражение. Например, следующую реализацию функции min() :

можно переписать так:



template <class valueType> inline const valueType&

min( valueType &vall, valueType &va12 ) {

return ( vall < va12 ) ? vall : va12;

Длинные цепочки инструкций if-else, подобные приведенной ниже, трудны для

if ( ch == a

ch == A

++aCnt;

else

if ( ch == e ch == E

++eCnt;

else

if ( ch == i

ch == I

++iCnt;

else

if ( ch == o ch == 0 ++oCnt;

else

if ( ch == u ch == U

восприятия и, таким образом, являются потенциальным источником ошибок.

++uCnt;

В качестве альтернативы таким цепочкам С++ предоставляет инструкцию switch. Это тема следующего раздела.

Упражнение 5.3

Исправьте ошибки в примерах:



(a) if ( ivall != iva12 ) ivall = iva12

else

ivall = iva12 = 0;

(b) if ( ivat < minval ) minvat = ival; occurs = 1;

(c) if ( int ival = get value())

cout << ival =

<< ival << endl;

if ( ! ival )

cout << ival = 0\n ;

(d) if ( ival = 0 )

ival = get value() ;

(e) if ( iva1 == 0 ) else ival = 0;

Упражнение 5.4

Преобразуйте тип параметра occurs функции min() , сделав его не ссылкой, а простым объектом. Запустите программу. Как изменилось ее поведение?

5.4. Инструкция switch

Длинные цепочки инструкций if-else, наподобие приведенной в конце предыдущего раздела, трудны для восприятия и потому являются потенциальным источником ошибок. Модифицируя такой код, легко сопоставить, например, разные else и if. Альтернативн1й метод выбора одного их взаимоисключающих условий предлагает инструкция switch.

Для иллюстрации инструкции switch рассмотрим следующую задачу. Нам надо подсчитать, сколько раз встречается каждая из гласных букв в указанном отрывке текста. (Общеизвестно, что буква e - наиболее часто встречающаяся гласная в английском языке.) Вот алгоритм программы:

1. Считывать по одному символу из входного потока, пока они не кончатся.

2. Сравнить каждый символ с набором гласных.

3. Если символ равен одной из гласных, прибавить 1 к ее счетчику.

4. Напечатать результат.

Написанная программа была запущена, в качестве контрольного текста использовался раздел из оригинала данной книги. Результаты подтвердили, что буква e действительно самая частая:

aCnt: 394

eCnt: 721

iCnt: 461

oCnt: 349

uCnt: 186



1 ... 62 63 64 [ 65 ] 66 67 68 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика