Kontroldarbs C++

1. Kad tiek izmantots tips void? Piemēri. Void tipu izmanto, ja programma vai funkcija savas darbības rezultātā neatgriež nekādu vērtību. Piemēram, ja ir funkcija (programma), kurai ir jāapmaina vietām masīva pirmais un pēdējais elements, tad, protams, tā neatgriež nekādu galarezultātu, un tā varētu izskatīties šādi:
void funkcija (int a[5]) {
int i;
i=a[0]; a[0]=a[4]; a[4]=i; }

2. Vai funkciju apraksti ir ekvivalenti?
a) double f ( ); un double f (void); Ir ekvivalenti
b) char g ( int i, char c); un char g ( int, char); Ir ekvivalenti
c) h ( double x); un int h ( double x); Nav ekvivalenti
d) void h ( int ); un h ( int ); Nav ekvivalenti

3. Vai apgalvojumi ir pareizi?
a) izteiksmes datu tips return operatorā vienmēr sakrīt ar funkcijas datu tipu. Pareizi.
b) funkcija, kurai tips ir void var nesaturēt return operatoru. Pareizi.
c) funkcija, kas atgriež rezultātu, var saturēt vairākus return operatorus . Pareizi.

4. Vai programmā ir kļūdas?
#include <iostream.h>
int f(void) { return 100;}
void g(void) { cout << “O.K.n”;}
main()
{ int i, j;
i = f();
j = g(), f();
g(); f();
cout << “i=” << i
<< “nj=” << j
<< “nf=” << f();
}

1.kļūda – rinda j = g() nav iespējama, jo g datu tips ir void, bet j ir veselo datu tips. Tātad trešā rinda pareizi izskatīsies tā:
int g(void) { cout << “O.K.n”;}
2.kļūda – programmai nav norādīts tips. Tātad 5.rinda pareizi izskatīsies tā:
void main()

5. Rekursīvi aprakstīt izteiksmes A(n,m) aprēķināšanu kur A(n,m) – Akermana funkcija pozitīviem skaitļiem n un m:
ìm+1 ja n = 0
A(n,m) = íA(n-1,1) ja n ¹ 0, m = 0
îA(n-1, A(n, m-1)) ja n>0, m>0

#include <iostream.h>
#include <conio.h>
int A(int n,int m) {
if (n= =m || n= =0) return m+1;
else if (m= =0 || n!=0) return A(n-1,1)
else return A(n-1,A(n,m-1)); }
void main () {
int n,m;
cin>>n>>m;
cout<<A(n,m);
getch (); }

6. Kāds būs programmas darbības rezultāts?
#include <iostream.h>
int main() {
int x, y, z;
x = y = 0;
while ( y < 10 ) y++; x += y;
cout << “x=” << x << “ny=” << y;
x = 0; y = 1;
for ( y =1; y < 10; y++ ) x = y;
cout << “nnx=” << x << “ny=” << y;
for ( y = 1; ( x = y ) < 10; y++ );
cout << “nnx=” << x << “ny=” << y;
for ( x = 0, y = 1000; y > 1; x++, y /= 10 )
cout << “nnx=” << x << “ny=” << y;
return 0; }

Programmas darbības rezultāts:

x=10
y=10

x=9
y=10

x=10
y=10

x=0
y=1000

x=1
y=100

x=2
y=10