Zadanie nr 1 teoretyczne ze zbioru zadań, funkcja obliczająca wartości z zad. 1.
ODNOŚNIK DO ZBIORU ZADAŃ (PDF)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>

//By Marcin Kaczmarzyk III TP
int value = 0;
//value - funkcja E(i) ilość wywołań elementarnych (wynik(0) lub wynik(1) lub wynik(2)) - zad2
using namespace std;

int calculate(int i) {
//funkcja wynik(i)
        if (i < 3) {
                value++; //wywołanie elementarne!
                return 1;
        }
        else {
                if (i % 2 == 0)
                        return calculate(i - 3) + calculate(i - 1) + 1;
                else
                        return calculate(i - 1) % 7;
        }
}

//////////////////////////////////////
//// podpunkt 1.3, funkcja iteracyjna z wyliczaniem MAX (by K. Piasecki)
/////////////////////////////////////

int wyliczMax(){
   int W[1000];
   int max_wart = 1;
   
   W[0] = 1;
   W[1] = 1;
   W[2] = 1;

   for(int i = 3;i<=1000;i++)
   {
        if(i % 2 == 0)
                W[i] = W[i-3] + W[i-1] + 1;
        else
                W[i] = W[i-1] % 7;

        if(W[i] > max_wart)
                max_wart = W[i]; //UWAGA! Tu był błąd w zbiorze zadań w odpowiedziach - na odwrót.
   }
   return max_wart;
}

///////////////////////////////////////////////


int main(int argc, char** argv) {
        int i = 0;
        cout << "Zadanie 1 strona 5.\n\n";
        cout << "i | wynik(i) | E(i)\n";
        for(i = 0; i<11; i++){
                value = 0;
               
                cout << i;
                cout << " | ";
                cout << calculate(i);
                cout << " | ";
                cout << value << "\n";
       
        }
        cout << wyliczMax(); //podpunkt 1.3
        return 0;
}