// Simple pre/post contract example in C++ // CS/SWE 332 // Fall 2011 //MinArray.cc #include using namespace std; // preconditions: a really is an int array // n really is the size of a // n is at least 1 // postconditions: return value is min value in a int min( int* a, int n) { int min = a[0]; int i; for(i=1; i a[i]) { min = a[i]; } return min; } int main() { int data[] = {4,3,2,1,0,5,6,7,8,9}; int size = sizeof(data)/sizeof(data[0]); cout << "C++ version: min is " << min( data, size ) << endl; int data1[] = {13}; size = sizeof(data1)/sizeof(data1[0]); cout << "C++ version: min is " << min( data1, size ) << endl; // Note that the following call violates the precondition // the result is a random value int data2[] = {}; size = sizeof(data2)/sizeof(data2[0]); cout << "C++ version: min is " << min( data2, size ) << endl; return 0; }