Laboratorijas darbs 9.1. Funkcijas parametru tipi. Parametru un argumentu nosaukumu neatkarība

Uzdevums. Dota nepabeigta programma lab9.1. cpp.

#include <iostream>

using namespace std;

 

void add (int a, int &b, int c)

{

    // ADD CODE HERE

};

 

int main ()

{

    int a, b, c;

    cout << "Input two integer values:" << endl;

    cin >> a >> b;

    add (a, c, b);

    cout << a << "+" << b << "=" << c << endl;

    return 0;

}

Pabeigt programmu, realizējot funkciju add.

Specifikācija. Programma prasa ievadīt divus veselus skaitļus un izdrukā to summu.

Pareiza rezultāta piemērs: lab9.1a. cpp

 

 

 

Laboratorijas darbs 9.2. Noklusētie parametri

Uzdevums. Dota nepabeigta programma lab9.2. cpp.

#include <iostream>

using namespace std;

 

int add ( // ADD CODE HERE

};

 

int main ()

{

    cout << add () << endl;

    cout << add (1) << endl;

    cout << add (1,2) << endl;

    cout << add (1,2,3) << endl;

    cout << add (1,2,3,4) << endl;

    return 0;

}

Pabeigt programmu, realizējot tieši vienu funkciju add.

Specifikācija. Funkcija add spēj izrēķināt veselu skaitļu summu dažādiem argumentu skaitiem (līdz 4).

Pareiza rezultāta piemērs: lab9.2a. cpp

 

 

 

Laboratorijas darbs 9.3. Funkciju pārslogošana

Uzdevums. Dota C++ programma lab9.3. cpp.

#include <iostream>

using namespace std;

 

float add (float a, float b)

{

    return a + b;

};

 

double add (double a, double b)

{

    return a + b;

};

 

int main ()

{

    int x, y;

    cin >> x >> y;

    cout << add (x, y) << endl;

    return 0;

}

Izpildīt darbības pēc dotā scenārija.

Specifikācija. Programma aprēķina divu skaitļu summu.

Scenārijs.

1.      Kompilēt programmu.

2.      Izanalizēt kļūdas paziņojumu (call of overloaded  function is ambiguous) – neviennozīmīgs izsaukums (kompilators nevar izšķirties, kuru no pārslogotajām funkcijām izsaukt).

3.      Nomainīt mainīgo x un y tipu no int uz float.

4.      Kompilēt programmu, programmai jānokompilējas veiksmīgi.

5.      Darbināt programmu.

6.      Nomainīt funkcijas double add (double a, double b) parametru tipus un double uz float. Tagad šīs funkcijas galvai jāizskatās: double add (float a, float b).

7.      Kompilēt programmu.

8.      Izanalizēt kļūdas paziņojumu (new declaration `double add(float, float)' ambiguates old declaration `float add(float, float)') – funkciju prototipi nedrīkst atšķirties tikai ar atgriežamo tipu (funkciju signatūrām obligāti jāatšķiras).

9.      Nomainīt funkcijas double add (float a, float b) parametru tipus un atgriežamo tipu uz int. Tagad funkcijas galvai jāizskatās: int add (int a, int b).

10.  Kompilēt programmu, programmai jānokompilējas veiksmīgi.

11.  Darbināt programmu.

12.  Papildināt izdrukājamo vērtību (funkcijas main izdrukas rindā) ar “ / 5”, jaunajam rindas variantam jāizskatās: cout << add (x, y) / 5 << endl;

13.  Kompilēt programmu. Darbināt programmu ar skaitļiem 6 un 6.

14.  Pēc iegūtā rezultāta secināt, kura no funkcijām izsaukta.

15.  Nomainīt mainīgo x un y tipu no float uz int.

16.  Kompilēt programmu. Darbināt programmu ar skaitļiem 6 un 6.

17.  Pēc iegūtā rezultāta secināt, kura no funkcijām izsaukta.

 

Pareiza rezultāta piemērs: lab9.3a. cpp

 

 

Laboratorijas darbs 9.4. Vingrinājumi

(Izpildīt jau zināmos vingrinājumus no nodaļas 4.5, ievietojot attiecīgo uzdevumu galvenos algoritmus funkcijās)

Vingrinājums 1. (lab9.4a.cpp)

Doti 2 veseli skaitļi a, b.

Ja abi ir mazāki par 0, tad izdrukāt to reizinājumu,

citādi izdrukāt to summu.

Darbā izmantot funkciju, kam tiek padoti divi int tipa skaitļi (a, b) un kas atgriež int tipa skaitli.

Piemērs #1. a=-7, b=-5; rezultāts 35.

Piemērs #2. a=7, b=-5; rezultāts 2.

 

Vingrinājums 2. (lab9.4b.cpp)

Doti 3 veseli atšķirīgi skaitļi a, b, c.

Atrast pēc lieluma vidējo skaitli un noskaidrot,

vai tā vērtība ir tuvāka lielajam vai mazajam skaitlim.

Darbā izmantot funkciju, kam tiek padoti trīs int tipa skaitļi (a, b, c) un kas atgriež int tipa skaitli (0=vienādā attālumā, -1=tuvāk mazākajam, +1=tuvāk lielākajam).

Piemērs #1. a=1, b=2, c=3; 2, Atbilde: 0 (vienādā attālumā).

Piemērs #2. a=-7, b=2, c=-5; Atbilde: -1 (tuvāk mazākajam).

Piemērs #3. a=-7, b=2, c=5; Atbilde: 1 (tuvāk lielākajam).

 

Vingrinājums 3. (lab9.4c.cpp)

(funkcionāli, tas pats, kas vingrinājums nr. 1, tikai ar citu atgriešanas mehānismu)

Doti 2 veseli skaitļi a, b.

Ja abi ir mazāki par 0, tad izdrukāt to reizinājumu,

citādi izdrukāt to summu.

Darbā izmantot funkciju, kam tiek padoti divi int tipa skaitļi (a, b) un kas neatgriež vērtību, bet rezultātu atgriež caur trešo parametru.

Piemērs #1. a=-7, b=-5; rezultāts 35.

Piemērs #2. a=7, b=-5; rezultāts 2.