Laboratorijas darbs 10. Masīvu apstrāde funkcijās

Uzdevums 10.1. Funkcija masīva fragmenta summas aprēķināšanai

Uzrakstīt un pārbaudīt funkciju array_sum() ar 3 parametriem: arr (skaitļu masīvs), num1 (sākuma elementa numurs), num2 (beigu elementa numurs), kas izrēķina un atgriež visu masīva elementu num1..num2 summu (lab10.1.cpp).

#include <iostream>

using namespace std;

 

int array_sum

    // ADD CODE HERE

};

 

int main()

{

    int arr[] = {1,2,5,7,3,6};

    cout << array_sum(arr,1,3) << endl;

    return 0;

}

 

/*

 

Programma izdrukā:

 

14

 

*/

Pareizais variants lab10.1a.cpp.

 

Uzdevums 10.2. Funkcija masīva kopēšanai uz otru masīvu

Uzrakstīt un pārbaudīt funkciju array_copy() ar 3 parametriem: arr_dest (skaitļu masīvs, uz kuru kopēt), arr_src (skaitļu masīvs, no kura kopēt), num (elementu skaits), kas pārkopē num pirmos elementus, no arr_src uz arr_dest (lab10.2.cpp).

#include <iostream>

using namespace std;

 

void array_copy

    // ADD CODE HERE

};

 

int main()

{

    int arr1[] = {1,2,3,4,5,6};

    int arr2[] = {11,22,33,44,55,66};

    array_copy (arr1, arr2, 4);

    for (int i=0; i<6; i++) cout << arr1[i] << endl;

    return 0;

}

 

/*

 

Programma izdrukā:

 

11

22

33

44

5

6

 

*/

 

Pareizais variants lab10.2a.cpp.

 

Uzdevums 10.3. Funkcija dinamiska masīva izveidošanai

Izveidot funkciju arr_create() ar 2 parametriem: arr (masīva mainīgais), num (lielums), kas izveido jaunu dinamisko masīvu garumā num un atgriež caur parametru arr (lab10.3.cpp).

#include <iostream>

using namespace std;

 

void array_create

    // ADD CODE HERE

};

 

int main()

{

    int num = 6;

    int *arr;

    array_create (arr, num);

    for (int i=0; i<num; i++) arr[i] = (i+1)*10+i+1;

    for (int i=0; i<num; i++) cout << arr[i] << endl;

    delete[] arr;

    return 0;

}

 

/*

 

Programma izdrukā:

 

11

22

33

44

55

66

 

*/

Pareizais variants lab10.3a.cpp.

 

Uzdevums 10.4. Funkcijas dinamiska masīva izveidošanai pārveidošana

Pārveidot funkciju arr_create() tā, lai izveidotais masīvs tiktu atgriezts nevis caur parametru, bet caur atgriežamo vērtību (līdz ar to funkcijai būs tikai viens parametrs num) (lab10.4.cpp).

#include <iostream>

using namespace std;

 

int *array_create

    // ADD CODE HERE

};

 

int main()

{

    int num = 6;

    int *arr;

    arr = array_create (num);

    for (int i=0; i<num; i++) arr[i] = (i+1)*10+i+1;

    for (int i=0; i<num; i++) cout << arr[i] << endl;

    delete[] arr;

    return 0;

}

 

/*

 

Programma izdrukā:

 

11

22

33

44

55

66

 

*/

Pareizais variants lab10.4a.cpp.

 

Uzdevums 10.5. Funkcija dinamiska masīva izmēra izmainīšanai

Izveidot funkciju arr_recreate() ar 3 parametriem: arr (masīva mainīgais), num (jaunais lielums), num0 (masīva iepriekšējais lielums), kas izmaina dinamiska masīvu izmēru uz garumu num, pēc iespējas saglabājot visas vērtības, un jauno masīvu atgriež caur parametru arr. Ar šo funkciju masīvu var gan samazināt, gan palielināt (lab10.5.cpp).

#include <iostream>

using namespace std;

 

void array_recreate

    // ADD CODE HERE

};

 

int main()

{

    int num = 4;

    int *arr;

    array_recreate (arr, num, 0);

    for (int i=0; i<num; i++) arr[i] = (i+1)*10+i+1;

    for (int i=0; i<num; i++) cout << arr[i] << endl;

    cout << endl;

    num = 6;

    array_recreate (arr, num, 4);

    arr[4] = 100;

    arr[5] = 101;

    for (int i=0; i<num; i++) cout << arr[i] << endl;

    array_recreate (arr, 0, num);

    return 0;

}

 

/*

 

Programma izdrukā:

 

11

22

33

44

 

11

22

33

44

100

101

 

*/

Pareizais variants lab10.5a.cpp.