Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lektsia_5_14_apr (1) / 00 Упр с масс

.pptx
Скачиваний:
3
Добавлен:
23.05.2015
Размер:
66.49 Кб
Скачать

ВЕРИФИКАЦИЯ ПРОГРАММ

ДВС Лектор - С.А. Ивановский

14.04.2015

О схемах программ

1

Упражнения к Лекции 5

Доказательство корректности фрагментов программ с массивами

14.04.2015

О схемах программ

2

1. Найти максимум из a[0],…,a[n-1] i=1; max=a[0];

//inv: …

//var: … while (i<n) {

if (a[i] > max) max=a[i]; i++;

} // max – максимум из a[0],…,a[n-1]

2.Бинарный поиск

//Pred: (ALL i: 0<=i<n-1 : a[i]<a[i+1]) int m;

int le = -1; int ri = n-1;

//inv: ...

//var: ...

while (le<ri)

{ m = (le+ri+1)/2; // д.б. le < m <=ri if (arr[m]<x) le = m;

else ri = m-1;

}

i = ri;

// -1<=i<n & a[i]<x<=a[i+1] & le==ri

3. Найти количество общих элементов в двух строго возрастающих массивах a[0..n-1] и b[0..m-1]

i = 0; j = 0; k = 0;

//inv: …

//var: …

while ((i < n) && (j < m)) { if (a[i] < b[j]) i++;

else if (a[i] > b[j]) j++; else // a[i] == b[j]

{i++; j++; k++; }

}//while

//Постутверждение: …