|
Программирование >> Расширенная версия языка c++
Приложение В. Ответы на вопросы и решения упражнений 627 template <class ass input { - . -.1 X data; public: input (char *s, X man, X max) ; ... >; template <class X> input<X> :: input (char *s, X min, X max) { do { cout s : ; cin data; } while (data<min I I data>max) ; int mainO input<int> i{ ввод целых . О, 10); input<ciiar> с ( ввод символов , А\ Z }; return 0; * 11.3 2. Инструкция throw вызывается еще того, как управление передано в блок try. 3. Вызывается символьная исключительная ация, а инструкция catch предназначена только для обработки исключительной ситуации типа указатель на символ. (То есть для обработки символьной исключительной ситуации нет соответствующей инструкции catch.) 4. Если возбуждается исключительная ситуация, для которой не задано соответствующей инструкции catch, то вызывается функции ша1е(), что может привести к аварийному завершению программы. 11.4 2. Для инструкции throw нет соответствующей инструкции catch. 3. Одним из способов решить проблему является создание обработчика catcb(int). Другой способ - это перехватывать все исключительные ситуации с помощью обработчика 4. Все типы исключительных ситуаций перехватываются инструкцией 5. ttinclude <iostream> ttinclude <cstdlib> . ., . using namespace std; . . 628 Самоучтель С++ double (double a, double b) try I if (!b) throw (b) ; , - , , . catch(double) { cout На ноль делить нельзяХп ; exitd); return [*. int main О cou< divide(10.0, 2.5) endl; cout divide(10.0, 0.0); return 0; J ... ;r, 11.5 1. По умолчанию оператор new возбуждает исключительную ситуацию при появлении ошибки выделения памяти. Оператор Mthrow) при невозможности выделить память возвращает нулевой указатель. 2. р = new (nothrow) (int); .--чк.ч ,1 , if(!р) ( cou Обка выделения памяти\п ; . . . . 1 . . try I . - . - р = new int ; } catch (bad alloc Ьа} { . ,. ... cou Ошибка выделения памяти\п ; ... Проверка усвоения материала главы 1 1 1. ttinclude <iostream> ... -е.. , ., linclude <cstring> . using namespace Родовая функция для поиска наиболее часто встречающегося значения template <class X> *data, int size) Приложение В. Ответы на вопросы и решенияупражнений 629 register int t, w; X md, oldmd; int count, oldcount; Oldmd = 0; oldcount = 0; for(t=0; t<size; t++) { md=data [ t ] ; count = 1; for(w= t+1; w< size; W+-I-) if (mddatalw] ) count++,-if(count > oldcount) { oldmd = md; oldcount = count; return oldmd; int main () int i[] = С , 2, 3, 4, 2, 3, 2, 2, 1, 5}; char *p = Это проверка ; ccou Значение массива целых mode(i, 10) << endl; cout Значение для массива символов: mode (р, (int) strlen(p)) ; return 2. finclude <iostream> namespace template <class X> um(X *data, int size) i int i; X result = 0; i<size; result += return int main i int i[] = {1, 2, 3, 4); double d[] = {1.1, 2.2, 3.3, 4.4};
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |