Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

9. Что такое логическая ошибка? Приведите три примера.

10. Перечислите четыре источника потенциальных ошибок, рассмотренных в тексте.

11. Как распознать разумные результаты? Какие методы используются для ответа на этот вопрос?

12. Сравните обработку ошибки во время выполнения программы в модуле, вызывающем функцию, и в самой функции.

13. Почему использование исключений лучше, чем возврат признака ошибки?

14. Как выполнить тестирование при последовательном вводе данных?

15. Опишите процесс генерирования и перехвата исключений.

16. Почему выражение v[v.size] относительно вектора v порождает ошибку диапазона? Каким может быть результат такого вызова?

17. Дайте определение пред- и постусловия; приведите пример (который отличается от функции area из этой главы), предпочтительно использовать вычисления, требующие применения цикла.

18. В каких ситуациях можно не проверять предусловие?

19. В каких ситуациях можно не проверять постусловие?

20. Назовите этапы отладки.

21. Чем комментарии могут помочь при отладке?

22. Чем тестирование отличается от отладки?

Термины

Упражнения

1. Выполните задание из раздела ПОПРОБУЙТЕ, если вы его еще не сделали.

2. Следующая программа вводит температуру по шкале Цельсия и преобразует ее в шкалу Кельвина. Этот код содержит много ошибок. Найдите ошибки, перечислите их и исправьте программу.

double ctok(double c) // преобразует шкалу Цельсия в шкалу Кельвина

{

  int k = c + 273.15;

  return int

}

int main

{

  double c = 0;         // объявляем переменную для ввода

  cin >> d;             // вводим температуру в переменную ввода

  double k = ctok("c"); // преобразуем температуру

  Cout << k << endl;    // выводим температуру на печать

}

3. Самой низкой температурой является абсолютный нуль, т.е. –273,15°C, или 0 K. Даже после исправления приведенная выше программа выводит неверные результаты для температуры ниже абсолютного нуля. Поместите в функцию main проверку, которая выводит сообщение об ошибке, если температура ниже –273,15°C.

4. Повторите упр. 3, но на этот раз ошибку обработайте в функции ctok.

5. Измените программу так, чтобы она преобразовывала шкалу Кельвина в шкалу Цельсия.

6. Напишите программу, преобразовывающую шкалу Цельсия в шкалу Фаренгейта и наоборот (по формуле из раздела 4.3.3). Для того чтобы распознать разумные результаты, используйте оценку из раздела 5.8.

7. Квадратное уравнение имеет вид

Для решения этого уравнения используется формула

Тем не менее есть одна проблема: если b2–4ac меньше нуля, возникнет ошибка. Напишите программу, вычисляющую решение квадратного уравнения. Напишите функцию, которая выводит на печать все корни квадратного уравнения при заданных коэффициентах a, b и c. Вызовите эту функцию из модуля main и перехватите исключение, если возникнет ошибка. Если программа выявит, что уравнение не имеет действительных корней, она должна вывести на печать соответствующее сообщение. Как распознать разумные результаты? Можете ли вы проверить, что они являются правильными?

8. Напишите программу, считывающую ряд чисел и записывающую их в vector. После того как пользователь введет все числа, он может попытаться определить, сколько чисел он ввел, чтобы найти их сумму. Выведите ответ N, равный количеству элементов в векторе. Например:

“Пожалуйста, введите несколько чисел (для прекращения ввода нажмите клавишу <|>):”

12 23 13 24 15 “Пожалуйста, введите количество чисел, которые хотите просуммировать:”

“Сумма первых 3 чисел: 12 , 23 и 13 равна 48.”

9. Измените программу из упр. 8, чтобы она использовала тип double вместо int. Кроме того, создайте вектор действительных чисел, содержащий N–1 разностей между соседними величинами, и выведите этот вектор на печать.

10. Напишите программу, вычисляющую начальный отрезок последовательности Фибоначчи, т.е. последовательности, начинающиеся с чисел 1 1 2 3 5 8 13 21 34. Каждое число в этой последовательности равно сумме двух предыдущих. Найдите последнее число Фибоначчи, которое можно записать в переменную типа int.

11. Реализуйте простую игру на угадывание “Быки и коровы”. Программа должна хранить вектор из четырех чисел в диапазоне от 0 до 9, а пользователь должен угадать загаданное число. Допустим, программа загадала число 1234, а пользователь назвал число 1359; программа должна ответить “1 бык и 1 корова”, поскольку пользователь угадал одну правильную цифру (1) на правильной позиции (бык) и одну правильную цифру (3) на неправильной позиции (корова). Угадывание продолжается, пока пользователь не получит четырех быков, т.е. не угадает четыре правильные цифры на четырех правильных позициях.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже