Главная /
Основы программирования - обучения основам /
Рассмотрим следующую реализацию функции onDiv, которая исполняет команду деления в проекте «Стековый калькулятор»: static void onDiv() { double y, x; if (st_size() < 2) { printf("Stack depth < 2.\n"); return; } y = st_pop(); x = st_pop(); assert(y !
Рассмотрим следующую реализацию функции onDiv
,
которая исполняет команду деления в проекте
«Стековый калькулятор»:
static void onDiv() {
double y, x;
if (st_size() < 2) {
printf("Stack depth < 2.\n");
return;
}
y = st_pop();
x = st_pop();
assert(y != 0.0); // утв: y отлично от нуля
st_push(x / y);
display();
}
Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией assert
?
вопрос
Правильный ответ:
Правильно, поскольку деление на ноль невозможно, следовательно,
выполнение программы должно быть прекращено.
Неправильно, поскольку прекращение выполнения программы
при невыполнении утверждения должно происходить в результате
ошибки в программе, а не из-за некорректных входных данных.
Сложность вопроса
64
Сложность курса: Основы программирования - обучения основам
50
Оценить вопрос
Комментарии:
Аноним
Это очень нехитрый решебник интуит.
01 ноя 2020
Аноним
Очень сложные тесты
09 апр 2019
Аноним
Экзамен сдан на пять.
15 май 2018
Другие ответы на вопросы из темы программирование интуит.
- # Содержит ли язык Си средства ввода-вывода?
- # Что вычисляет следующий фрагмент программы? вещ последовательность p; вещ a, s; цел n; . . . s := минус бесконечность; n := 0; встать в начало последовательности p; цикл пока есть непрочитанные элементы в посл-ти p | прочесть очередной элемент посл-ти p в (вых: a); | если a > s | | то | | s := a; n := 1; | иначе если a == s | | то | | n := n + 1; | конец если конец цикла ответ := n;
- # Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма быстрого возведения в степень: дано: основание a и показатель степени n >= 0 надо: вычислить a в степени n вещ b, p; цел k; b := a; p := 1.0; k := n; цикл пока k > 0 | инвариант: bk p = an | если k четное | | то | | k := k / 2; | | b := b * b; | | иначе | | k := k - 1; | | p := p * b; | конец если конец цикла ответ := p;
- # Пусть регистр EBX содержит адрес массива целых чисел, регистр ECX — количество элементов массива. Указать, что будет содержать регистр EAX в результате выполнения следующего фрагмента кода на Ассемблере "Masm" для процессора Intel 80x86: mov ESI, 0 ; ESI := 0 mov EDI, -2147483648 ; EDI := минус бесконечность L1: ; метка начала цикла cmp ESI, ECX ; сравнить ESI с ECX jge L2 ; переход, если больше или равно mov EDX, [EBX] ; EDX := число с адресом EBX cmp EDX, EDI ; сравнить EDX с EDI jle L3 ; переход, если меньше или равно mov EDI, EDX mov EAX, ESI ; EAX := ESI L3: ; add EBX, 4 ; EBX := EBX+4 inc ESI ; увеличить ESI jmp L1 ; переход на метку L1 L2: ; метка конца цикла
- # Какое прерывание происходит при нажатии на клавишу на клавиатуре компьютера?