|
Программирование >> Инициализация объектов класса, структура
#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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |