Структурно програмирање

Аудиториска вежба 4

1. Задачи

1.1. Задача 1а

Да се напише програма за пресметување на сумата на сите парни двоцифрени броеви. Добиената сума се печати на екран.

Решение:

    #include <iostream>
    using namespace std;
    int main () {
        int i = 10, sum = 0;
        while (i <= 98) {
            sum = sum + i;
            i+=2;
        }
        cout << sum << endl;
        return 0;
    }

1.2. Задача 1б

Да се напише програма за пресметување на сумата на сите непарни двоцифрени броеви. Програмата ја печати сумата на екран во следниот формат:

11 + 13 + 15 + 17 + … + 97 + 99 = 2475

Програмата да се реши без користење на наредбата if

Решение 1:

    #include <iostream>
    using namespace std;
    int main () {
        int i = 11, sum = 0;
        cout << i;
        sum = i;
        i=i+2;
        while (i <= 99){
            cout << " + " << i;
            sum = sum + i;
            i+=2;
        }
        cout << " = " << sum << endl;
        return 0;
    }

Решение 2:

    #include <iostream>
    using namespace std;
    int main () {
        int i = 11, sum = 0;
        while (i <= 97) {
            cout << i << " + ";
            sum = sum + i;
            i+=2;
        }
        sum = sum + i;
        cout << i << " = " << sum << endl;
        return 0;
    }

1.3. Задача 2

Да се напише програма за пресметување на \$y = x^n\\$ за даден природен број n, n >= 1 и реален број x.

Решение 1:

    #include <iostream>
    #include <cmath>
    using namespace std;

    int main() {
        int counter = 0, n;
        float x, y = 1;
        cout << "x: ";
        cin >> x;
        cout << "n: ";
        cin >> n;
        while (counter < n) {
            y *= x;
            counter++;
        }
        cout << x << "^" << n << " = " << y << endl;
        return 0;
    }

Решение 2:

    #include <iostream>
    using namespace std;

    int main() {
        int counter = 0, n;
        float x, y = 1;
        cout << "x: ";
        cin >> x;
        cout << "n: ";
        cin >> n;
        do {
            y *= x;
            counter++;
        } while (counter < n);
        cout << x << "^" << n << " = " << y << endl;
        return 0;
    }

Решение 3:

    #include <iostream>
    using namespace std;

    int main() {
        int counter, n;
        float x, y;
        cout << "x: ";
        cin >> x;
        cout << "n: ";
        cin >> n;
        for(counter = 1, y = x; counter < n; counter++) {
            y *= x;
        }
        cout << x << "^" << n << " = " << y << endl;
        return 0;
    }

Решение 4:

    #include <iostream>
    using namespace std;

    int main() {
        int counter = 0, n;
        float x, y = 1;
        cout << "x: ";
        cin >> x;
        cout << "n: ";
        cin >> n;
        for( ; counter < n; counter++) {
            y *= x;
        }
        cout << x << "^" << n << " = " << y << endl;
        return 0;
    }

1.4. Задача 3

Да се напише програма што од n броеви (внесени од тастатура) ќе го определи бројот на броеви што се деливи со 3, при делењето со 3 имаат остаток 1, односно 2.

Задачата да се реши со while, do…​while и for

Решение со while:

    #include <iostream>
    using namespace std;

    int main() {
        int n = 1, i = 0, number, div, r1, r2;
        div = r1 = r2 = 0; /* counters */
        cin >> n;   /* input numbers */
        while (i < n) {
            cin >> number;
            if (number % 3 == 0)
                div++;
            else if (number % 3 == 1)
                r1++;
            else r2++;
            i++;
        }
        cout << div << endl;
        cout << r1 << endl;
        cout << r2 << endl;
        return 0;
    }

Решение со do…​ while:

    #include <iostream>
    using namespace std;

    int main() {
        int n = 1, i = 0, number, div, r1, r2;
        div = r1 = r2 = 0; /* counters */
        cin >> n;   /* input numbers */
        do {
            cin >> number;
            if (number % 3 == 0)
                div++;
            else if (number % 3 == 1)
                r1++;
            else r2++;
            i++;
        } while (i < n);
        cout << div << endl;
        cout << r1 << endl;
        cout << r2 << endl;
        return 0;
    }

Решение со for:

    #include <iostream>
    using namespace std;

    int main() {
        int n = 1, i = 0, number, div, r1, r2;
        div = r1 = r2 = 0; /* counters */
        cin >> n;   /* input numbers */
        for (i = 0; i < n; ++i) {
            cin >> number;
            if (number % 3 == 0)
                div++;
            else if (number % 3 == 1)
                r1++;
            else r2++;
        }
        cout << div << endl;
        cout << r1 << endl;
        cout << r2 << endl;
        return 0;
    }