cw 4 funkcje

background image

Programowanie proceduralne

Ćwiczenie 4

Funkcje

Łukasz Sztangret
Katedra Informatyki Stosowanej i Modelowania

background image

Funkcje

#include<iostream>
using namespace std;
int potega(int li, int st);
int main()
{

int a, b, n;
cout << "Podaj liczbe\n"; cin >> a;
cout << "Podaj potege\n"; cin >> n;

cout << "Podaj potege\n"; cin >> n;
b=potega(a,n);
cout << a << " ^ " << n << " = " << b << endl;
system("pause");
return 0;

}
int potega(int li, int st)
{

int wyn=li;
for (int i=2; i<=st; i++)

wyn*=li;

return wyn;

}

background image

Argumenty domniemane

#include<iostream>
using namespace std;

int potega(int li, int st=2);
int main()
{

int a, b, n;

int a, b, n;
cout << "Podaj liczbe\n"; cin >> a;
cout << "Podaj potege\n"; cin >> n;
b=potega(a,n);
cout << a << " ^ " << n << " = " << b << endl;
b=potega(a);
cout << a << " ^ 2 = " << b << endl;
system("pause");
return 0;

}
// definicja funkcji potega jak na poprzednim slajdzie

background image

Zadanie 1

Napisać funkcję liczącą silnię nie
używając pętli for ani while.

używając pętli for ani while.

background image

Przesyłanie argumentów przez
referencje

#include<iostream>
using namespace std;
void podwoj(int a, int &c);
int main()
{

int a=1, b=10;
cout << "a = " << a << "\tb = " << b << endl;
podwoj(a,b);
cout << "a = " << a << "\tb = " << b << endl;
system("pause");
return 0;

}
void podwoj(int a, int &c)
{

cout << "\ta = " << a << "\tc = " << c << endl;
a*=2;
c*=2;
cout << "\ta = " << a << "\tc = " << c << endl;

}

background image

Zmienne statyczne

#include<iostream>
using namespace std;

void licznik();
int main()
{

for (int i=0; i<10; i++)

for (int i=0; i<10; i++)

licznik();

system("pause");
return 0;

}
void licznik()
{

static int ile=0;
ile++;
cout << ile << endl;

}

background image

Wskaźniki w argumentach funkcji

#include<iostream>
using namespace std;

void podwoj(int *wsk);
int main()
{

int a;
cout << "Podaj liczbe\n";

cout << "Podaj liczbe\n";
cin >> a;
cout << "\na = " << a << endl;
podwoj(&a);
cout << "a = " << a << endl;
system("pause");
return 0;

}
void podwoj(int *wsk)
{

*wsk*=2;

}

background image

Zwracanie wskaźników przez funkcje

#include<iostream>
using namespace std;

int *podwoj(int a);
int main()
{

int *podwoj(int a)
{

int *w;
w=&a;
*w=a*2;
return w;

int a, *wsk;
cout << "Podaj liczbe\n";
cin >> a;
wsk=podwoj(a);
cout << "\na = " << a << endl;
cout << "*wsk = " << *wsk << endl;
system("pause");
return 0;

}

return w;

}

background image

Zwracanie wskaźników przez funkcje

int *podwoj(int a)
{

int *w=new int;
*w=a*2;

int *podwoj(int a)
{

static int b=a;
int *w;

*w=a*2;
return w;

}

int *w;
w=&b;
*w=b*2;
return w;

}

background image

Przekazywanie tablic do funkcji

#include<iostream>
using namespace std;

void podwoj(int a[][2]);
void wypisz(int a[][2]);
int main()
{

void podwoj(int a[][2])
{

for (int i=0; i<2; i++)
{

for (int j=0; j<2; j++)

a[i][j]*=2;

}
wypisz(a);

}

{

int tab[][2]={1,2,3,4};
wypisz(tab);
podwoj(tab);
wypisz(tab);
system("pause");
return 0;

}

}
void wypisz(int a[][2])
{

for (int i=0; i<2; i++)
{

for (int j=0; j<2; j++)

cout << a[i][j] << "\t";

cout << endl;

}
cout << endl;

}

background image

Zadanie 2

Napisać funkcję zwracającą ślad
macierzy, np.

4

3

2

1

34

16

11

6

1

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

=

+

+

+

=

tr

background image

Odbieranie tablic od funkcji

#include<iostream>
using namespace std;

int *tworz(int a, int n);
int main()
{

int a, b, n, *wsk;
cout << "Podaj poczatek i koniec\n";

int *tworz(int a, int n)
{

int *w;
w=new int[n];
for (int i=0; i<n; i++)

*(w+i)=a+i;

cout << "Podaj poczatek i koniec\n";
cin >> a >> b;
n=b-a+1;
wsk=tworz(a,n);
for (int i=0; i<n; i++)

cout << *(wsk+i) << endl;

system("pause");
return 0;

}

return w;

}

background image

Odbieranie tablic 2-D od funkcji

#include<iostream>
using namespace std;
int **tworz(int n);
int main()
{

int **t, n;
cout << "Podaj rozmiar

macierzy\n";

int **tworz(int n)
{

int **wsk=new int*[n];
for (int i=0; i<n; i++)

wsk[i]=new int[n];

for (int i=0; i<n; i++)

macierzy\n";
cin >> n;
t=tworz(n);
for (int i=0; i<n; i++)
{

for (int j=0; j<n; j++)

cout << *(*(t+i)+j) << "\t";

cout << endl;

}
system("pause");
return 0;

}

{

for (int j=0; j<n; j++)

wsk[i][j]=i*n+j;

}
return wsk;

}

background image

Zadanie 3

Napisać funkcję zwracającą macierz
transponowaną, np.

=

9

6

3

8

5

2

7

4

1

9

8

7

6

5

4

3

2

1

T

background image

Wskaźniki do funkcji

#include<iostream>
using namespace std;

int podwoj(int a);
int potroj(int a);
int main()
{

int podwoj(int a)
{

return (a*2);

}
int potroj(int a)
{

return (a*3);

{

int a, (*fun)(int a);
a=10;
fun=podwoj;
cout << (*fun)(a) << endl;
fun=potroj;
cout << (*fun)(a) << endl;
system("pause");
return 0;

}

return (a*3);

}

background image

Zadanie 4

Wprowadzić z klawiatury długość odcinka, następnie w
zależności od wyboru policzyć: pole kwadratu, pole
koła lub pole trójkąta równobocznego (trzy różne
funkcje) stosując wskaźniki do funkcji, np.

Podaj dlugosc

UWAGA!

3

Wywołanie funcji

1). Pole kwadratu

powinno wyglądać:

2). Pole kola

cin >> wybor;

3). Pole trojkata

pole=(*wsk[wybor-1])(bok);

1
Pole wynosi: 9

background image

Wskaźnik do funkcji jako argument
innej funkcji

#include<iostream>
using namespace std;
double dod (double a, double b){return (a+b);}
double ode (double a, double b){return (a-b);}
double mno (double a, double b){return (a*b);}
double dzi (double a, double b){return (a/b);}
void wprowadz(double (*wsk)(double, double));
int main()
{

int wybor;
double (*wsk[4])(double, double)={dod, ode, mno, dzi};

double (*wsk[4])(double, double)={dod, ode, mno, dzi};
cout << "Wybierz dzialanie\n";
cout << "1.Dodawanie\n2.Odejmowanie\n";
cout << "3.Mnozenie\n4.Dzielenie\n";
cin >> wybor;
wprowadz(*wsk[wybor-1]);
system("pause");
return 0;

}
void wprowadz(double (*wsk)(double, double))
{

double a, b;
cout << "Podaj dwie liczby\n";
cin >> a >> b;
cout << "Wynik = " << (*wsk)(a,b) << endl;

}

background image

Co to jest a???

int *(*(*a)(int))[10];

background image

Co to jest a???

int *

(

*

(*a)

(int)

)

[10]

;

a jest wskaźnikiem

do

a jest wskaźnikiem

do

funkcji wywoływanej z parametrem typu int

,

zwracającej wskaźnik

do

10-cio elementowej tablicy

wskaźników do typu int

.

background image

Co to jest a???

int (*(*a())[10])();

background image

Co to jest a???

int

(

*

(

*

a()

)

[10]

)

()

;

a jest funkcją wywoływaną bez argumentów

,

a jest funkcją wywoływaną bez argumentów

,

zwracającą wskaźnik

do

10-cio elementowej tablicy

wskaźników

do

funkcji wywoływanej bez parametrów

zwracającej wartość typu int

.

background image

Co to jest a???

float (*(*a)(int))(double);

background image

Co to jest a???

float

(

*

(*a)

(int)

)

(double)

;

a jest wskaźnikiem

do

a jest wskaźnikiem

do

funkcji wywoływanej z parametrem typu int

,

zwracającej wskaźnik

do

funkcji wywoływanej z parametrem typu double

,

zwracającej wartość typu float

.

background image

Co to jest a???

double (*(*(*a)())[10])();

background image

Co to jest a???

double (

*

(

*

(*a)

()

)

[10]

)

()

;

a jest wskaźnikiem

do

funkcji wywoływanej bez parametrów

,

zwracającej wskaźnik

do

10-cio elementowej tablicy

wskaźników

do

funkcji wywoływanych bez parametrów

,

zwracających wartość typu double.

background image

Argumenty z linii wywołania programu

#include<iostream>
using namespace std;

int main(int a, char *b[])
{

cout<<"Dostalem parametrow: "<<a<<endl<<endl;

cout<<"Dostalem parametrow: "<<a<<endl<<endl;
for (int i=0; i<a; i++)

cout<<i<<" parametr to\t"<<b[i]<<endl;

system("pause");
return 0;

}

background image

Argumenty z linii wywołania programu

#include<iostream>
#include<stdlib.h>
using namespace std;

int main(int a, char *b[])
{

{

if (!(a-3))
{

cout<<b[1]<<"+"<<b[2]<<"=";
cout<<atof(b[1])+atof(b[2])<<endl;

}
system("pause");
return 0;

}

background image

Zadanie 5

Napisać program przyjmujący z linii
wywołania programu dwie liczby oraz
znak działania (+ -) jakie ma
zostać wykonane, np.

zostać wykonane, np.

program 2 3 +
2 + 3 = 5


Wyszukiwarka

Podobne podstrony:
cw 4 funkcje
Sygnały, [Sygnały] Cw 6 - Funkcja Autokorelacji i Korelacji Wzajemnej , Przetwarzanie Sygnałów 2
cw 2 FUNKCJE
Matematyka III (Ćw) Lista 06 Ekstrema lokalne i globalne funkcji wielu zmiennych Zadania
Cw 5 Organizowanie jako funkcja
cw poprawiające funkcje kd
cw 3bad funkcji zab SPAC335C
Cw Synteza układów kombinacyjnych realizacja sprzętowa funkcji
cw 14 Procedury składowane i funkcje?zodanowe
Relacje i funkcje ćw 2
cw 6 Synteza układów kombinacyjnych- realizacja sprzętowa funkcji logicznych
Matematyka II (Ćw) - Lista 01. Wykresy i własności funkcji, odpowiedzi do zadania 2
Matematyka III (Ćw) - Lista 05 - Rachunek rózniczkowy funkcji wielu zmiennych, Odpowiedzi
PFWRE notatki cw, Podstawy funkcjonowania wspólnego rynku europejskiego, Podstawy funkcjonowania wsp
I Pojęcie i funkcja prawa ćw, Politologia, Wstęp do nauki o państwie a prawie, Ćwiczenia
Cw 4 Odpornosc nieswoista funkcje granulocytow wer 3 2b
Ćw 02 Rysowanie podstawowych obiektów graficznych – funkcje paska „Rysuj”
Relacje i funkcje ćw 2(2), stud, I semsetr, ALGEBRA, Ćwicenia i wyklady

więcej podobnych podstron