Программирование >>  Расширенная версия языка c++ 

1 ... 204 205 206 [ 207 ] 208 209 210 ... 227


Приложение В. Ответы на вопросы и решения упражнений 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};



1 ... 204 205 206 [ 207 ] 208 209 210 ... 227

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