Как следует из названия, как я могу проверить приведенную ниже функцию с помощью Hoare Triple? Я читал различные лекции об этом, но я не могу понять, как это сделать.
int uguaglianza_insiemi(elem_lista_t *insieme_A,
elem_lista_t *insieme_B)
{
int esito;
if ((insieme_A == NULL) &&
(insieme_B == NULL))
esito = 1;
else if (insieme_A == NULL ||
insieme_B == NULL)
esito = 0;
else if (insieme_A->valore != insieme_B->valore)
esito = 0;
else esito = uguaglianza_insiemi(insieme_A->succ_p,
insieme_B->succ_p);
return (esito);
}
insiema_A
и B либо равны нулю, либо указывают на допустимый элемент списка. - person Paul Ogilvie   schedule 27.05.2019assert()
для проверки условий до и после. Единственное, что функция не может проверить, это то, что при первом вызове она была вызвана с указателями, если они не нулевые, на объекты, которые являются допустимыми элементами списка. C позволяет с помощью приведений вызывать функцию с указателями на мусор. - person Paul Ogilvie   schedule 27.05.2019