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 ====== <note important>Solutii: https://drive.google.com/file/d/1KHhXOXUinJw2KbYnKqUGtr-dmRuAsbox/view?usp=sharing </note> 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 positive integers up to and including n int integer_sum(int n) { int i = 0; 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 x = b; int y = e; int r = 1; while (y > 0) { if (y % 2 == 1) r = r * x; y = y / 2; x = x * x; } 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 - 1] > x) { arr[i] = arr[i - 1]; i--; } arr[i] = x; } </code>