Laboratorium nr 8 - Przekazywanie parametrów (przez wartość i przez zmienną)
Teoria:
Przez wartość:
Nagłówek funkcji:
typ nazwa_funkcji(parametry formalne)
Wywołanie:
nazwa_funkcji(parametry aktualne)
Co może być parametrem formalnym:
tylko lista (typ i identyfikator) zmiennych z przedzielona przecinkiem. Np. int f(int x, int y, float z)
Co może być parametrem aktualnym:
zmienna: np. f(a,b,c),
literał: np. f(1,2,3)
wyrażenie: np.: f(1+2, a-b, c-d).
Ograniczenia:
w zasadzie musi być zgodność typu parametru aktualnego z formalnym, (jak nie następuje dopasowywanie typu, jak się nie uda, to błąd),
jeśli parametr formalny jest przekazywany przez wartość, to mogą być przypadku opisane przez 1, 2 3 poprzedniego akapitu,
Przez zmienną (za pomocą referencji):
Nagłówek funkcji:
typ nazwa_funkcji(¶metry formalne) //uwaga na &
przykład: void zamien(int &a,int &b)
Wywołanie:
nazwa_funkcji(parametry aktualne)
Przykład: zamien(c,d)
Co może być parametrem formalnym:
tylko lista (typ i identyfikator) zmiennych z przedzielona średnikiem. Np. int f(int &x, int &y, float &z)
Co może być parametrem aktualnym:
zmienna: np. f(a,b,c),
Praktyka:
Uruchom poniższe programy
//przekzaywanie przez wartość
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
void zamien(int a, int b, int c[10])
{
int p=a;
a=b;
b=p;
c[2]=100;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int a,b;
int c[10]={0};
a=-2; b=3;
cout <<"Przed zamien a="<<a<<"b="<<b<<endl;
zamien(a,b,c);
cout <<"Po zamien a="<<a<<"b="<<b;
cout<<"c[2]="<<c[2];
getchar();
}
//Przekazywanie przez zmienną (referencję)
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
void zamien(int &a, int &b, int c[10])
{
int p=a;
a=b;
b=p;
c[2]=100;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int a,b;
int c[10]={0};
a=-2; b=3;
cout <<"Przed zamien a="<<a<<"b="<<b<<endl;
zamien(a,b,c);
cout <<"Po zamien a="<<a<<"b="<<b;
cout<<"c[2]="<<c[2];
getchar();
}
Jakie wnioski???????
Zadanie 1. Zadanie z wariancją, ale bez zmiennych globalnych. Użyj funkcji.
Zadanie 2. Dana jest tablica jednowymiarowa liczb rzeczywistych i pewien parametr a. Napisz program, który na podstawie tych danych utworzy 3 nowe tablice zawierające odpowiednio: liczby większe od a, mniejsze od a i równe a. Podaj także ich liczebności. Uzyj funkcji.
Zadanie 3. Dana jest tablica liczb całkowitych. Napisz program, który:
wprowadzi dane,
policzy średnią,
wypisze ile jest elementów powyżej średniej i poniżej,
policzy medianę (informacje o medianie: http://pl.wikipedia.org/wiki/Mediana).