Professional Documents
Culture Documents
Прашања:
1
#include <iostream> резултатат од програмата?
using namespace std;
void mojaFunkcija(); #include <iostream>
int main() using namespace std;
{ int max(int a,int b)
cout<<”Vo funkcijata main”<< endl; {
mojafunkcija(); int m;
cout<< “povtorno vo main”<<endl; if (a>b)
return 0; m=a;
} else
void mojaFunkcija() m=b;
{ return m;
cout<<”Vo funcijata }
mojaFunkcija”<<endl; int main ()
} {
int x,y;
cin>>x>>y;
cout<<max(x,y);
}
2
x = x + y; cout<< y;
return x - y; else
} cout<< floor(y)+round(x);
int main ()
{
int x = 2, y = 3;
cout<<x-funkcija (x, y);
return 0;
}
3
Потсетување за примена на функции, функции од математичка
библиотека, .
. функции со различен број на параметри.
ВОВЕД
Прашања:
4
В. void funct();
Г. char x();
ГЛАВЕН ДЕЛ
5
return 0;
}
void mojaFunkcija()
{
cout<<”Vo funcijata mojaFunkcija”<<endl;
float a, b, c, d, e;
a= 9; b = 3;
d = sqrt (b*3);
e =pow(a,2);
c = d+e;
cout<<”d=”<<d<<endl;
cout<<”e=”<<e<<endl;
6
cout<<”c=”<<c;
7
void f(int a)
{
a++;
cout<<a<<”,”;
}
int main()
{
int a=4;
f(a);
cout<<a*2;
return 0;
}
24. Ана дефинирала функција на следниот 6
начин.
int f (int x)
{
if (x%2)
return x+1;
else
return x-1;
}
Што ќе се прикаже на екранот кога Ана ќе ја
повика функцијата со наредбата f(5)?
8
програмскиот јазик С++?
x = 2.7; y = 2.3;
x = 2 * y;
if (floor(x) < round(y))
cout<< x;
else
if (round(x) > 3 * floor(y))
cout<< y;
else
cout<< floor(y)+round(x);
29. Што ќе се прикаже на екранот како резултат d=6.8, e=6
од извршување на следниот програмски
сегментво програмскиот јазик С++?
float a, b, d, e;
a= 3.4;
b= - 2;
d=abs(a*b);
e=floor(d);
cout<<”d=”<<d<<”, e=”<<e;
30. Што ќе се прикаже на екранот како резултат valuta
од извршувањето на следниот програмски
сегмент во програмскиот јазик С++?
#include <iostream>
using namespace std;
void pari()
{
cout<<"valuta";
}
int main()
{
pari ();
return 0;
}
Домашна работа
9
cout << x;
return 0;
}
2. Кој е резултатот што се добива со извршување на следната 8
функција дефинирана во програмскиот јазик С++?
#include <iostream>
using namespace std;
int addition (int a, int b)
{
int r;
r=a+b;
return r;
}
int main ()
{
int z;
z = addition (5,3);
cout<<z;
}
10
cin>>n>>m;
y2(n,m);
return 0;
}
ВОВЕД
Прашања:
1. Што претставуваат функциите? Функциите претставуваат множества наредби кои
се извршуваат при секој нивен повик.
2. Дали функцијата треба да се декларира? Да, задолжително треба да се
декларира.
3. Како се повикува функција и кој ја повикува? со нејзиното име и вредност за
параметарот во заграда.
4. На кого враќа вредност функцијата (потпрограмата)? На главната програма –
функцијата main()
5. Што се постигнува со користење на функции? Функциите овозможуваат делење
на програмата на помали парчиња - кои, соодветно, се поедноставни за
решавање. На овој начин, користејќи структурирано програмирање, ја намалуваме
сложеноста на проблемот кој сакаме да го решиме.
6. Која е разликата во изработка на програма со и без потпрпрограма?
ГЛАВЕН ДЕЛ
Библиотеки со потпрограми во C++
11
Таа гласи:
#include <cmath>
Библиотека cmath
функција значење
sin(x) Синус од аголот X (претставен во радијани)
cos(x) Косинус од аголот X (претставен во радијани)
tan(x) Тангенс од аголот X (претставен во радијани)
asin(x) Инверзна операција од sin(x). Резултатот е вредност (агол) изразен во радијани.
acos(x) Инверзна операција од cos(x). Резултатот е вредност (агол) изразен во радијани.
atan(x) Инверзна операција од tan(x). Резултатот е вредност (агол) изразен во радијани.
Аркус тангенс од y/x. Резултатот е вредност (агол) изразен во радијани.
atan2(y, x)
Функцијата го користи знакот на двата аргументи (x и y) за одредување на квадрантот.
exp(x) Вредноста на изразот ex, каде e=2.718281828 (основа на природен логаритам)
log(x) Природен логаритам (со основа e) од x.
log10(x) Логаритам (со основа 10) од x.
pow(x, y) Вредноста на изразот xy (x на степен y).
sqrt(x) Квадратен корен од x.
ceil(x) Најмалиот цел број што не е помал од x - ceil(4.3) = 5
floor(x) Најголемиот цел број што не е поголем од x - floor(4.8) = 4
fabs(x) Апсолутна вредност од x
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<"Funkcijata fabs vraka apsolutna vrednost od daden broj"<<endl;
int a=5;
12
cout<<"Apsolutna vrednost na brojot "<<a<<" e: "<<fabs(a)<<endl;
int b=-5;
cout<<"Apsolutna vrednost na brojot "<<b<<" e: "<<fabs(b)<<endl;
float c=3.5;
cout<<"Apsolutna vrednost na brojot "<<c<<" e: "<<fabs(c)<<endl;
float d=-3.5;
cout<<"Apsolutna vrednost na brojot "<<d<<" e: "<<fabs(d)<<endl;
system("pause");
return 0;
}
13
/*resavanje na kvadratna ravenka bez potprograma*/ /*resavanje na kvadratna ravenka so
potprograma*/
#include <iostream>
#include <cmath> #include <iostream>
using namespace std; #include <cmath>
int main() using namespace std;
{
void resenie(float a, float b, float c)
float a,b,c,d,x1,x2; {
cout<<"Vnesete gi parametrite na kvadratnata float d,x1,x2;
ravenka: a,b i c"<<endl; d=pow(b,2)-4*a*c;
cin>>a>>b>>c; if (d==0) cout<<"x1=0 , x2=0"<<endl;
d=pow(b,2)-4*a*c; else if (d<0) cout<<" Ravenkata nema realni
if (d==0) cout<<"x1=0 , x2=0"<<endl; koreni "<<endl;
else if (d<0) cout<<" Ravenkata nema realni koreni else
"<<endl; {
else x1=(-b-sqrt(d))/(2*a);
{ x2=(-b+sqrt(d))/(2*a);
x1=(-b-sqrt(d))/(2*a); cout<<"x1="<<x1<<endl;
x2=(-b+sqrt(d))/(2*a); cout<<"x2="<<x2<<endl;
cout<<"x1="<<x1<<" x2="<<x2<<endl; }
} }
system("pause"); int main()
return 0; {
} float a,b,c,d,x1,x2;
cout<<"Vnesete gi parametrite na
kvadratnata ravenka: a,b i c"<<endl;
cin>>a>>b>>c;
resenie(a,b,c);
system("pause");
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
const double Pi=3.14159265;
main()
{
float agol_vo_stepeni, agol_vo_radijani;
cout<<"Vnesete agol vo stepeni"<<endl;
cin>>agol_vo_stepeni;
agol_vo_radijani=(agol_vo_stepeni*Pi)/180;
cout<<"Sinus od vneseniot agol e:"<<endl;
cout<<"sin("<<agol_vo_stepeni<<")="<<sin(agol_vo_radijani)<<endl;
cout<<"Kosinus od vneseniot agol e:"<<endl;
cout<<"cos("<<agol_vo_stepeni<<")="<<cos(agol_vo_radijani)<<endl;
system("pause");
return 0;
}
14
//Programa so koja se ilustrira funkcijata ceil
#include<iostream>
#include<cmath>
using namespace std;
main()
{
cout<<"ceil od 2.0 e: "<<ceil(2.0)<<endl;
cout<<"ceil od 2.1 e: "<<ceil(2.1)<<endl;
cout<<"ceil od 2.2 e: "<<ceil(2.2)<<endl;
cout<<"ceil od 2.3 e: "<<ceil(2.3)<<endl;
cout<<"ceil od 2.4 e: "<<ceil(2.4)<<endl;
cout<<"ceil od 2.5 e: "<<ceil(2.5)<<endl;
cout<<"ceil od 2.6 e: "<<ceil(2.6)<<endl;
cout<<"ceil od 2.7 e: "<<ceil(2.7)<<endl;
cout<<"ceil od 2.8 e: "<<ceil(2.8)<<endl;
cout<<"ceil od 2.9 e: "<<ceil(2.9)<<endl;
system("pause");
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
main()
{
cout<<"floor od 2.0 e: "<<floor(2.0)<<endl;
cout<<"floor od 2.1 e: "<<floor(2.1)<<endl;
cout<<"floor od 2.2 e: "<<floor(2.2)<<endl;
cout<<"floor od 2.3 e: "<<floor(2.3)<<endl;
cout<<"floor od 2.4 e: "<<floor(2.4)<<endl;
cout<<"floor od 2.5 e: "<<floor(2.5)<<endl;
cout<<"floor od 2.6 e: "<<floor(2.6)<<endl;
cout<<"floor od 2.7 e: "<<floor(2.7)<<endl;
cout<<"floor od 2.8 e: "<<floor(2.8)<<endl;
cout<<"floor od 2.9 e: "<<floor(2.9)<<endl;
15
cout<<"floor od -2.2 e: "<<floor(-2.2)<<endl;
cout<<"floor od -2.3 e: "<<floor(-2.3)<<endl;
cout<<"floor od -2.4 e: "<<floor(-2.4)<<endl;
cout<<"floor od -2.5 e: "<<floor(-2.5)<<endl;
cout<<"floor od -2.6 e: "<<floor(-2.6)<<endl;
cout<<"floor od -2.7 e: "<<floor(-2.7)<<endl;
cout<<"floor od -2.8 e: "<<floor(-2.8)<<endl;
cout<<"floor od -2.9 e: "<<floor(-2.9)<<endl;
system("pause");
return 0;
}
Домашна работа
Пример 1:
16
#include <iostream>
using namespace std;
int f1(int a, int b, int c)
{
Што ќе Какви Што
a = a+1;
биде докази навистина
b = b-1;
резултат имате за ќе биде
c = c + (a*b);
од тоа? резултатот?
return c;
дадената
}
програма?
int main()
{ //vrednostite
int a=3, b=2, c=5; na a, b i c se
cout << f1(1, 1, 1) << endl; //pechati nepromeneti
'1'
cout << f1(a, 2, 0) << endl; //pechati '4'
cout << f1(a, b, c) << endl; //pechati '9'
cout << a << " " << b << " " << c << endl;
//pechati '3 2 5'
return 0;
}
На пример, при последниот повик на функцијата f1(int a, int b, int c), се прават копии од
вредностите на аргументите (a=3, b=2, c=5). Притоа, промените на вредностите на
параметрите немаат никакво влијание на аргументите предадени на функцијата при
нејзиниот повик - променливите a, b и c од функцијата main().
Иако функциите може да испратат вредност до оној што ги повикал (на пример, двете
функции во програмата дадена погоре, со return наредби, враќаат вредност од тип int),
постојат и ситуации кога таквото комуницирање со функциите не е доволно. На пример,
понекогаш сакаме функциите да променат повеќе вредности или пак директно да
изменат вредност на одредена променлива.
Во C++, најдобриот начин на кој може да им се дозволи на функциите да ги променат
вредностите на аргументите е доколку таквите аргументи ги предадеме по референца.
За да го овозможиме тоа, единствено нешто што треба да направиме е да означиме
дека параметрите претставуваат референци до аргументите, а не нивни копии. Во C++,
тоа се прави со запишување на знакот & пред името на соодветниот параметар.”
Пример 2.1:
17
Пример 2.2:
Пример 2.3:
Пример 2.4:
18
cout << f1(a, b, c) << endl;
cout << a << " " << b << " " << c << endl; 9
return 0;
} 4 1 9 2 5'
Во програмата дадена погоре, параметарот t во функцијата f1(int &t, int &u, int &v)
претставува референца до променливата a дефинирана во функцијата main().
Останатите два аргументи се пренесуваат по вредност (се прави нивна копија), и
промените над соодветните параметри немаат никаков ефект врз аргументите со кои се
повикува функцијата.
Пример 4:
int f1(int const &x, int const &y)
{
Што ќе Какви Што
x = x+1; //greshka, nedozvoleno
биде докази навистина
y = y*3; //greshka, nedozvoleno
резултат имате за ќе биде
return x+y;
од тоа? резултатот?
}
дадената
int f2(const int &x, const int &y)
програма?
{
x = x+1; //greshka, nedozvoleno
y = y*3; //greshka, nedozvoleno
return x*y;
}
int main()
19
{
int a = 30, b = 4;
cout << f1(a, b) << endl;
cout << f2(a, b) << endl;
system("pause");
return 0;
}
Завршен дел/Рефлексија
Прашања:
20
{
soberi = x+y;
odzemi = x-y;
mnozi = x*y;
}
Домашна работа:
ВОВЕД
Понекогаш сакаме да креираме две или повеќе функции кои враќаат еден ист резултат
(на пример, збир на броеви), но се извршуваат врз различни типови на податоци (цели
броеви, реални броеви, еден цел и еден реален број, итн).
C++ нуди механизам (т.н. преоптоварување на функции) преку кој неколку функции
може да имаат едно исто име. За да се реализира ова, нормално, потребно е овие
функции да се разликуваат по бројот на параметрите и/или по нивниот тип.
ГЛАВЕН ДЕЛ
21
int zgolemi(int a)
{
return a+1;
}
double zgolemi(double a, double b)
{
return a+b;
}
double zgolemi(double a)
{
return a+1;
}
int main()
{
cout << zgolemi(2, 3) << endl;
cout << zgolemi(5, 9) << endl;
cout << zgolemi(3) << endl;
cout << zgolemi(3.0, 0.5) << endl;
cout << zgolemi(4.1, 2.9) << endl;
cout << zgolemi(2.0) << endl;
return 0;
}
Пример 2:
22
}
float kolicnik(float x, float y)
{
float z=x/y;
return z;
}
int main()
{
int m,n;
float a,b;
cout<<"Vnesete dva celi broevi
razlicni od 0 "<<endl;
cin>>m>>n;
cout<<"Kolicnikot na dvata celi
broevi e "<<kolicnik(m,n)<<endl;
cout<<"Vnesete dva decimalni
broevi razlicni od 0 "<<endl;
cin>>a>>b;1
cout<<"Kolicnikot na dvata decimalni
broevi e "<<kolicnik(a,b)<<endl;
system("pause");
return 0;
}
23
Не е дозволено креирање на две функции со исто име, иста комбинација од параметри и
различен тип на податок кој се враќа како резултат.
Едноставно, во овој случај, компајлерот нема да знае која функција да ја повика.
Како се вика функцијата која е обременета, колку пати се користи и кои вредности ги
враќа на главната функција?
Домашна работа:
Кое е името на функцијата која е обременета, колку пати се користи и кои вредности ги
враќа на главната функција?
//Paskalov triagolnik
#include<iostream>
using namespace std;
long int Faktoriel(int broj)
{
int k;
int Proizvod=1;
for(k=1;k<=broj;k++)
Proizvod=Proizvod*k;
24
return Proizvod;
}
void BinKoef(int n,int k,float & BinKoeficient)
{
BinKoeficient=Faktoriel(n)/(Faktoriel(k)*Faktoriel(n-k));
}
main()
{
int n,i,k;
float BinomenKoeficient;
cout<<"Vnesete go n: ";cin>>n;
cout<<"1"<<endl;
for(i=1;i<=n;i++)
{
cout<<"1 ";
for(k=1;k<=i-1;k++)
{
BinKoef(i,k,BinomenKoeficient);
cout<<BinomenKoeficient<<" ";
}
cout<<"1"<<endl;
}
system("pause");
return 0;
}
#include<iostream>
using namespace std;
int faktoriel(int n)
{
if (n==1) return 1;
else return (n)*faktoriel(n-1);
}
25
int main()
{
int x;
cout<<"Vnesi broj x=";
cin>>x;
cout<<faktoriel(x);
system("pause");
return 0;
}
26
int Proizvod=1;
for(k=1;k<=broj;k++)
Proizvod=Proizvod*k;
return Proizvod;
}
void BinKoef(int n,int k,float & BinKoeficient)
{
BinKoeficient=Faktoriel(n)/(Faktoriel(k)*Faktoriel(n-k));
}
main()
{
int n,i,k;
float BinomenKoeficient;
cout<<"Vnesete go n: ";cin>>n;
cout<<"1"<<endl;
for(i=1;i<=n;i++)
{
cout<<"1 ";
for(k=1;k<=i-1;k++)
{
BinKoef(i,k,BinomenKoeficient);
cout<<BinomenKoeficient<<" ";
}
cout<<"1"<<endl;
}
system("pause");
return 0;
}
27
for(k=1;k<=n;k++)
cout<<fibonaci(k)<<", ";
system("pause");
return 0;
}
Вежба:
Домашна работа:
28
29