Funkcii_Zadaci_Predavanja
//Se presmetuva plostina i
perimetar na kvadrat
#include<iostream>
using namespace std;
main()
{
float a,perimetar,plostina;
cout<<"Vnesete ja stranata na
kvadratot a=";
cin>>a;
perimetar=4*a;
plostina=a*a;
cout<<"Perimetarot na kvadratot e
L="<<perimetar<<endl;
cout<<"Plostinata na kvadratot e
P="<<plostina<<endl;
system("pause");
return 0;
}
Програма со потпрограма:
//p-11 R Kvadrat
//Se presmetuva plostina i
perimetar na kvadrat
//so primena na funkcija
#include<iostream>
using namespace std;
float perimetar(float a)
{
float L;
L=4*a;
return L;
}
float plostina(float a)
{
float P;
P=a*a;
return P;
}
main()
{
float a;
cout<<"Vnesete ja stranata na
kvadratot a=";
cin>>a;
cout<<"Perimetarot na kvadratot
e L="<<perimetar(a)<<endl;
cout<<"Plostinata na kvadratot e
P="<<plostina(a)<<endl;
system("pause");
return 0;
}
Програма со која се пресметува збирот на броевите од 1 до n.
//Programa so koja se sobiraat
broevite od 1 do n
#include<iostream>
using namespace std;
int main()
{
int n,broj,zbir;
cout<<”Vnesi go n=”;
cin>>n;
broj=1;
zbir=0;
while (broj<=n)
{
zbir=zbir+broj; //zbir+=broj;
broj=broj+1; //broj+=1;
}
cout<<"Zbirot na broevite od 1 do “<<n<<” e: “<<zbir<<endl;
return 0;
}
Програма со потпрограма:
//Programa so koja se sobiraat
broevite od 1 do n
//so primena na funkcija
#include<iostream>
using namespace std;
int zbir(int n)
{
int s=0;
int broj=1;
while(broj<=n)
{
s=s+broj;
broj=broj+1;
}
return s;
}
int main()
{
int n;
cout<<"Vnesi go n=";
cin>>n;
cout<<"Zbirot na broevite od 1 do
"<<n<<" e: "<<zbir(n)<<endl;
return 0;
}
или
//Programa so koja se sobiraat broevite od 1 do n
//so primena na funkcija
#include<iostream>
using namespace std;
{ int s=0;
for(int i=1;i<=n;i++)
s+=i;
return s;
}
int main()
{ int n;
cout<<"Vnesi go n=";
cin>>n;
cout<<"Zbirot na broevite od 1 do "<<n<<" e: "<<zbir(n)<<endl;
return 0;
}
//Programa so koja se naogja
kolkucifren e vneseniot broj
//i se presmetuva zbirot na cifrite na brojot
//Za brojot na cifrite se upotrebuva funkcija
//Za zbirot na cifrite se upotrebuva funkcija
#include<iostream>
using namespace std;
int BrojNaCifri(int m);
int ZbirNaCifri(int m);
main()
{
int n;
cout<<"Vnesete priroden broj:
"; cin>>n;
cout<<"Vneseniot broj e
"<<BrojNaCifri(n)<<"-cifren"<<endl;
cout<<"Zbirot na cifrite na
vneseniot broj e "<<ZbirNaCifri(n)<<endl;
system("pause");
return 0;
}
int BrojNaCifri(int m) //funkcija koja go presmetuva brojot na cifri
{
int broj=0;
do
{
broj ++;
m=m/10;
}while (m>0);
return broj;
}
int
ZbirNaCifri(int m) //funkcija koja go presmetuva zbirot na cifri
{
int cifra,zbir=0;
do
{
cifra=m%10;
zbir+=cifra;
m=m/10;
}while(m>0);
return zbir;
}
Програма со која се пресметува збирот на цифрите на троцифрен број, при што се користи функција која проверува дали е внесен троцифрен број.
//Da se presmeta zbirot na
cifrite na tricifren broj
#include<iostream>
using namespace std;
int numdigits(int n) //funkcija koja proveruva dali e vnesen
tricifren broj
{ //vlez
e brojot n, a izlez brojot na cifri
int
broj_na_cifri=0;
while(n
!= 0)
{
n
/= 10;//n=n/10;
++broj_na_cifri;
}
return
broj_na_cifri; //go vraka brojot na cifri
}
main()
{
int n,sn=0,sp=0,i;
cout<<"Vnesi eden
tricifren broj :";
cin>>n;
int
proverka=numdigits(n); //povikuvanje na funkcijata so vistinski
argument
if (proverka!=3)
{
cout<<"Inputot
ne e tri-cifren broj"<<endl;
system("pause");
return
0;
}
else
{
int
cifra1=(n/10)/10;
int
cifra2=(n/10)%10;
int
cifra3=n%10;
sn=cifra1+cifra2+cifra3;
}
cout<<"Zbirot na cifrite na brojot e "<<sn<<endl;
system("pause");
return 0;
}
Програма со која се печатат Армстронговите броеви во интервалот [1,n], при што за пресметување на збирот на степенуваните цифри се користи функција.
// Armstrongovi broevi
//Armstrongov broj od 3-ti stepen e na primer brojot 153 zatoa sto
//153=1 na treta + 5 na treta + 3 na treta
#include<iostream>
#include<cmath>
using namespace std;
int sum(int x,float m);
main()
{
long int
n;
int i,k,stepen;
cout<<"Do koj priroden
broj gi barate Armstrongovite broevi? n=";
cin>>n;
cout<<n<<endl;
cout<<"Od koj red(stepenot
na ciftrite)? stepen=";
cin>>stepen;
for (k=1;k<n;k++)
if (k==sum(k,stepen))
cout<<"Armstrongov
broj e "<<k<<endl;
system("pause");
return 0;
}
int sum(int x,float m)
{
int cifra;
int zbir=0;
do
{
cifra=x%10;
zbir=zbir+pow(cifra,m);
//so funkcijata pow se presmetuva cifra na m-ti stepen
x=x/10;
}while (x>0);
return zbir;
}
#include <iostream>
using namespace std;
int f1(int t, int &u, int &v)
{
t = t+3;
u = u+1;
v =v - t + 2*u;
return v;
}
int main()
{
int a=1, b=2, c=3;
cout <<" Vrednosta na funkcijata iznesuva "<< f1(a,b,c) << endl;
cout <<" a vrednosta na a="<< a <<" b="<< b <<" c="<< c << endl;
return 0;
}
Vrednosta na funkcijata iznesuva 5
A vrednosta na a=1 b=3 c=5
Објаснување:
Кога ќе се повика функцијата f1(a,b,c) односно f1(1,2,3)
t=t+3 = 1+3 = 4 //vrednosta na t ne e povrzana so vrednosta na a
u=u+1 = 2+1 = 3 //vrednosta на u e i vrednost na b, zatoa sto e &u
v =v - t + 2*u = 5-4+2*3 = 3-4+6 = 5 //vrednosta на v e i vrednost na c, zatoa sto e &v
return v //kon main() se praka 5
Што ќе се прикаже на екранот како резултат од извршувањето на следниот програмски сегмент?
#include <iostream>
using namespace std;
int f1(int &t, int u, int &v)
{
t = 2*t+1;
u = u+1;
v = v + t + 2*u;
return v;
}
int main()
{
int a=1, b=2, c=3;
cout << "Funkcijata ima vrednost "<<f1(a, b, c)<< endl;
cout <<" Vrednostite za a, b i c se "<< a << " " << b << " " << c << endl;
return 0;
}
Funkcijata ima vrednost 12
Vrednostite za a, b i c se 3 2 12
Објаснување:
Кога ќе се повика функцијата f1(a,b,c) односно f1(1,2,3)
t = 2*t+1 = 2*1+1 = 3 //vrednosta на t e i vrednost na a, zatoa sto e &t
u = u+1 = 2+1 = 3 //vrednosta na u ne e povrzana so vrednosta na b
v = v + t + 2*u = 3+3+2*3 = 3+3+6 = 12 //vrednosta на v e i vrednost na c, zatoa sto e &v
return v //kon main() se praka 12
Одговори кој е резултатот од извршување на следниот програмски сегмент.
void duplicate (int& a, int& b, int& c)
{
a*=2;
b*=2;
c*=2;
}
int main ()
{
int x=1, y=3, z=7;
duplicate (x, y, z);
cout << "x=" << x << ", y=" << y << ", z=" << z;
return 0;
}
x=2, y=6, z=14
Објаснување:
Бидејќи влезните аргументи на функцијата void duplicate (int& a, int& b, int& c) се референци на променливи, тоа значи дека промената на нивните вредности ќе направи промена на вредностите на променливите со кои ќе биде повикана оваа функција во main(), односно
променливата х ќе ја добие вредноста на променливата а,
променливата y ќе ја добие вредноста на променливата b,
променливата z ќе ја добие вредноста на променливата c
Кога ќе ја повикате функцијата duplicate (x, y, z); односно duplicate (1, 3, 7);
a*=2; или а=а*2 = 1*2 = 2 //оваа вредност ќе се додели и на променливата х
b*=2; или b=b*2 = 3*2 = 6 //оваа вредност ќе се додели и на променливата y
c*=2; или c=c*2 = 7*2 = 14 //оваа вредност ќе се додели и на променливата z
Значи, ќе се отпечати
x=2, y=6, z=14
Како треба да се дефинираат рефенците во програмскиот код прикажан на сликата за да се добие следниот резултат x=1, y=6,z=14?
void duplicate (int a, int b, int c)
{
a*=2;
b*=2;
c*=2;
}
int main ()
{
int x=1, y=3, z=7;
duplicate (x, y, z);
cout << "x=" << x << ", y=" << y << ", z=" << z;
return 0;
}
void duplicate (int a, int &b, int &c)
Објаснување:
За разлика од претходниот пример, овде, влезните аргументи на функцијата
void duplicate (int a, int b, int c) се променливи и нивната промена нема да влијае на променливите со кои ќе биде повикана оваа функција во main(), поради што ќе се отпечати
x=1, y=3, z=7
За да се отпечати x=1, y=6,z=14 потпрограмата треба да се дефинира
void duplicate (int a, int &b, int &c)
Ако x=3, y=4, определи колкава ќе биде вредноста на x и y по извршување на следниот функциски повик swap(&x,&y).
void swap(int*a, int*b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
x=4, y=3
Објаснување:
Функцијата swap(&x,&y) ќе ги смени вредностите на променливите x и y.
https://biljanaivanovic.wordpress.com/category/dev-c/funkcije-dev-c/
https://www.manuelradovanovic.com/p/sadrzaj.html?m=1
https://www.learncpp.com/cpp-tutorial/introduction-to-function-parameters-and-arguments/
https://m.youtube.com/watch?v=WqukJuBnLQU
No comments:
Post a Comment