Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Loop invariants ====== 1. Pentru următorii algoritmi, demonstrați corectitudinea, alegând corect precondiția, postcondiția și invariantul și demonstrând cele patru proprietăți (initialization, maintenance, postcondition, termination). <code c> // găsește indexul celui mai mic element din arr int find_min(int *arr, int n) { int min_idx = 0; int i = 1; while (i < n) { if (arr[i] < arr[min_idx]) min_idx = i; i++; } return min_idx; } </code> <code c> // calculate the sum of all strictly positive integers up to and including n int integer_sum(int n) { int i = 1; int sum = 0; while (i < n) { i++; sum += i; } return sum; } </code> <code c> // calculează b la puterea e int pow(int b, int e) { int r = 1; while (e > 0) { if (e % 2 == 1) r = r * b; e = e / 2; b = b * b; } return r; } </code> <code c> // inserează valoarea x în array-ul sortat arr (arr are un extra "slot" alocat la final) void insert(int *arr, int n, int x) { int i = n; while (i > 0 && arr[i] > x) { arr[i] = arr[i - 1]; i--; } arr[i] = x; } </code>