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.