Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
#1

задания из книги Плаугера - C++

25.07.2011, 21:31. Просмотров 814. Ответов 6
Метки нет (Все метки)

из "Standard C Library"
Exercise 1.4. Write a version of assert.h and xassert.c that prints all assertions. Why would you want to use this version?
Exercise 1.5. Write a handler for the signal SIGABRT that writes the prompt:
Continue (y/n)?
to the standard error stream and reads the response from the standard input stream. If the response is yes (in either uppercase or lowercase), the handler should reestablish itself and return control to the abort function.
Why would you want this capability?
Так вот, в задании 1.4 мне не совсем понятен перевод вот этого
that prints all assertions.
А в задании 1.5, как я понял, нужно дать пользователю выбор, при получении программой сигнала SIGABRT решить, продолжить ли выполнение программы, несмотря на получение этого сигнала. Хочется узнать, как это можно осуществить. Как нужно написать обработчик для этого?

Добавлено через 10 часов 23 минуты
Никто не может помочь?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2011, 21:31     задания из книги Плаугера
Посмотрите здесь:

Задания из книги Р. Лафоре - C++
Добрый день, решаю задачу из книги Лафоре. Если в двух словах, то нужно перевести строку в long double. Вот листинг решения: ...

Задания из книги Р. Лафоре - C++
Приветствую всех! Выполняю задание из книги Р. Лафоре "ООП в С++". Задание главы 7. Одним из недостатков C++ являеться отсутствие...

Не получается собрать проект из задания книги Страуструпа - C++
Здравствуйте уважаемые форумчане. Изучаю материал "Принципы и практика использования C++" Страуструпа. Выполняют задание из 8 главы. ...

Задача из книги Дейтел-а не могу суть задания уловить - C++
Привет, всем! Хочу спросить вот о чём: в книге Дейтел Х. Дейте П. есть задача смущает меня задача из пункта b) 5 - случайную смесь...

Выполняя задания из книги Стенли Липпмана допустил ошибку. Не могу понять где. - C++
Выполняя задания из книги Стенли Липпмана не могу понять где ошибка в коде с оператором While /*#include<iostream> using namespace...

C++ Задания - C++
Преподаватель дал задания, а меня не было месяц в универе, может кто написать код? Я отсутствовал на темах и ничего не понимаю :C 1....

Задания с++ - C++
1. Написать программу, которая определяет максимальное число из введенной с клавиатуры последовательности отрицательных чисел (длина...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
26.07.2011, 00:22     задания из книги Плаугера #2
По поводу 1.4 я точно знать не могу. Но мысли кое-какие есть.
Обычная версия assert ничего не делает, если выражение истинно, а если ложно, то выводит сообщение assertion failed, номер строки и т.д. с выходом из программы.
По-моему имеется в виду такая версия, которая бы выводила сообщение типа Assertion OK при истинном выражении (разумеется без выхода) по аналогии с обычным сообщением assert.
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
26.07.2011, 10:35  [ТС]     задания из книги Плаугера #3
А вот по второму заданию. Можно ли написать обработчик сигнала SIGABRT так, чтобы после вызова функции abort() программа не завершалась, а выполнение продолжалось с инструкции, следующей за abort()?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 10:48     задания из книги Плаугера #4
stdcout, Можно. Только вопрос про какую систему здесь говориться? Хотя boost позволяет написать универсальное скорее всего
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
26.07.2011, 13:01  [ТС]     задания из книги Плаугера #5
Речь идёт о C, и похоже, что только средствами стандартной библиотеки.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
26.07.2011, 14:28     задания из книги Плаугера #6
Цитата Сообщение от stdcout Посмотреть сообщение
Можно ли написать обработчик сигнала SIGABRT так, чтобы после вызова функции abort() программа не завершалась, а выполнение продолжалось с инструкции, следующей за abort()
Может быть для некоторых компиляторов.
У меня GCC после безусловного вызова abort() дальнейший код даже не генерирует. Какой уж там возврат, если код для исполнения закончился. Другое дело если обработчик вызывается через raise(SIGABRT), но в задании-то не так.

Добавлено через 7 минут
Хотя, с другой стороны, безусловный abort() в реальной программе тоже странное явление. Надо будет попробовать с вызовом по некоторому условию.

Добавлено через 28 минут
Не, в случае условного выхода делается переход на вызов abort() за которым опять ничего нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 15:23     задания из книги Плаугера
Еще ссылки по теме:

Расшифровка задания - C++
Доброго времени суток. Только начал изучать работу с файлами, и либо это некорректно сформулированное задание, либо я не понимаю...

Нестандартные задания - C++
1)Условие: У вас есть несколько камней известного веса W1, …, Wn. Напишите программу, которая распределит камни в две кучи так, что...

с задания на курсовой - C++
Ввести два предложения.Поменять местами все непарные слова.

Задания в книге - C++
Читаю Язык программирования С++. Лекции и упражнения. Прата С. 2012. После каждой главы идут "Вопросы по самоконтролю" - на которые есть...

Нелёгкие задания... [S.О.S!] - C++
Полный писец, помогите пожалуйста с заданиями... 1) Задан массив чисел с плавающей запятой F, состоящий из 7 элементов. Вычислить сумму...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 15:23     задания из книги Плаугера #7
После посыла сигнала kill -6 нормуль все работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
 
void sig_handler(int signo)
{
    fprintf(stderr, "%s\n", "Sighandler called");
    return;
}
 
void function(void)
{
    fprintf(stderr, "%s\n", __FUNCTION__);
    sleep(20);
}
 
int main(void)
{
    signal(SIGABRT, sig_handler);
    while(1)
    {
        fprint(stderr, "%s\n", loop);
        function();
    }
}
А вот при вызове abort из кода хуже.
Yandex
Объявления
26.07.2011, 15:23     задания из книги Плаугера
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru