Б. БӨрібаев c/C++ тілдерінде программалау (практикалық курс) Жогары оқу орьшдарына арналған оку құралы э в е р о алматы 2015 Эверо



Pdf көрінісі
бет10/11
Дата24.03.2017
өлшемі16,45 Mb.
#10341
1   2   3   4   5   6   7   8   9   10   11

void hello world(void)
{
printf("Hello w o r l d ! !!\n");

W m B
 
; ; ;  ;
Көбінесе  функциялар  профаммага  өз  есептеулерінің  нәтижесін  қайтарады. 
Егер  функция  ешкандай  да  мән  кайтармайтын  болса,  онда  ол  функция  атынын 
алдында v o i d  түйінді  сөзі көрсетілуі  қажет. Функция атынан кейін жақша ішінде 
оның  параметрлері  көрсетіледі. 
Параметр
 — 
бұл  функцияга өцдеу  үіиін  берілетін 
мәлімет.
  Егер функцияның параметрлері болмаса, онда дөнгелек жақшалар  ішіне 
v o i d   түйінді  сөзі  жазылады  немесе  ештеңе  көрсетілмейді.  Функцияны 
пайдалануды функцияны шақыру деп атайды. Келесі  профаммада h e llo _ _ w o rld  
функциясы пайдаланылады.
#include  
void hello_world()
{
printf ("Hello__world () ! ! !\n”) ;
)
void m a i n ()
{
h e l l o _ w o r l d (); 
^
)
Профамманы орындау нәтижесі:
Hello w o r l d ! !!
Сонымен,  программаны  іске  косқан  кезде  бірінші  болып  m a in   функциясы 
орындалады.  Жогарыдагы  профаммада  h e llo _ _ w o r ld   функциясын  шакыру 
m a in  функциясында аткарылады.  Егер профамманы орындау кезінде функцияны 
шакыру  әрекеті  кезіксе,  онда  басқару  бірден  функцияга  беріледі  де,  онын
96

операторлары  ең  алғашқы  жолдан  бастап  орындала  бастайды.  Функцияның  ең 
сонғы  операторы  орындалып  болған  соң,  басқару  негізгі  программадағы 
функцилны шақыру жолынан кейін тұрған операторға беріледі.
Функдияларды  пайдалану  программалаушыларға  модульдік  программалауды 
пайдалану  мүмкіндігін  береді,  яғни  программаны  модульдерден  кздрастыруға 
болады.  Әрбір  функция  белгілі  бір  тапсырманы  (есепті)  орындауы  тиіс  жэне 
функция  аты  сол  тапсырманың  мазмұнына  сәйкес  келуі  керек.  Сонда  ғана  бұл 
функция ны басқа программаларды жазу кезінде де қолдануға болады.
4.1  Функцияларда айнымалыларды пайдалану
Программапаушы өз функцияларын жазганда, онда айнымалыларды пайдалану 
кажетгілігі  туындайды.  Айнымалылар  m a in   функциясындағы  тәрізді  функцияда
жариялануы, ягни апдын ала сипатгапуы қажет.
Келесі программада функция параметрлерін қолдану мысалы қарастырылады.
#include  
void hello_world()
{
cout «   "Hello world!!!"  «   "\n";
i
void hello__number (int nh)
{
int counter;
for  (counter = 1 ;   counter <= nh;  counter++) 
hello_world() ;
)
void m a i n ()
{
int kol;
cout «   "How much  time?"  «   "\n";
cin »  k o l ;
hello_number(kol);
cout «   "How much  time?"  «   "\n"; 
cin »  k o l ; 
hello__number (kol) ;

I   , 
Ц щ
  :  •  -
Программаны орындау нәтижесі төменде көрсетілген.
How much  time*
>
2
Hello world!!!
Hello world!!!
How much  time?
5
Hello world!!
Hello world!!
Hello world!!
Hello world!!
Hello world!!
97

Үнемі  функция  нақты  бір  жүмысты  атқаруды  (мысалга,  кандай  да  бір 
хабарламаға  қорытынды),  және  де  шақыру  функциясының  есептеу  нәтижесін 
қайтаруды  талал  етеді.  Шақыру  кодының  нәтижесін  қайтаруды  қамтамасыз  ету 
үшін функцияда r e t u r n  операторын пайдалану керек.
Фунқцияның  типі  оның  ( i n t ,  
f l o a t ,  
c h a r ,   т.б.)  магынасының
қайтарылу  типімен  анықталады.  Мысапы,  егер  функция  i n t   типін  қайтаратын
болса, онда сол т и г т  функция  идентификаторы алдында корсету кажет: 
i n t   some  f u n c t i o n ( i n t   v a l u e )
4.2 Функцияның мэн  кайтаруы
Келесі  i c u b e   функциясы  параметр  ретінде  берілген  саннын  кубын  кайтарады.
Мысалы, функция га 5 саны берілсе, онда i c u b e  функциясы 5 *5 *5  мәнін, ягни  125
мәнін кайтарады:
i n t   i c u b e  ( i n t   v a l u e )


r e t u r n ( v a l u e   *  v a l u e   *  v a l u e ) ;
Сонымен,  функция  шакырылган  соң,  оның  жұмыс  нәтижесін  кайтару  үшін 
r e t u r n  
операторы 
колданылады 
(төмендегіні 
қараңыз). 
Программада 
функцияның  қайтарган  мәні  айнымалыга  меншіктеледі  немесе  баска  бір 
функциянын  параметрі  ретінде  ( p r i n t f   немесе  c o u t )  
келесідей  түрде 
көрсетілуі  мүмкін:
r e s u l t   =  i c u b e ( 5 ) ;  
немесе
p r i n t f ("5   c u b e d   i s   % d \n ",  i c u b e ( 5 ) ) ;
Енді толык программа карастырайык.
# i n c l u d e   < i o s t r e a m .h >  
i n t   i c u b e   ( i n t   v a lu e )
{
//  функция  операторлары
)
)
{
r e t u r n   ( v a l u e   *  v a l u e   *  v a l u e ) ;
)
v o i d   m ain   () 
{
c o u t   «   "3  c u b e d   i s
V
I «   i c u b e (3)  «   "X n"; 
«   i c u b e ( 5 )   «   "Xn” ; 
«   i c u b e (7)  «   " \ n " ;
c o u t   «   ” 5  c u b e d   i s
I
I
c o u t   «   "7  c u b e d   i s
II
Программаны орындау нәтижелері:
3  c u b e d   i s   27
5  c u b e d   i s   125
7  c u b e d   i s   343
98

Функцияға  берілетін  мән  оның  параметрі  типіне  сэйкес  болу  керек.  Егер, 
мысалы, нақты (жылжымалы нүктелі сан) санның үшінші дәрежесін есептеу керек 
болса, онда типі басқа f  c u b e   функциясын құру керек: 
f l o a t   f c u b e ( f l o a t   v a lu e )
{
return(value  *  value  *  value);
}
C/C++  тіддері  r e t u r n   сөзі  кездескенде,  бірден  функция  жұмысын  аяқтап, 
нәтижесін  негізгі 
гтрофаммаға  (оны  шақырушы  функцияға)  қайтарады. 
Функцияны  орындау  кезінде  r e t u r n   операторынан  кейін  түрган  кез  келген 
операторлар  еленбей  қалады.  Программа  өз  жұмысын  функцияны  шақырған 
жолдан ары қарай жалгастыра береді.
Кей  жагдайда  функция  тұлгасы  (операторлары)  ішінде  бірнеше  r e t u r n  
операторлары болуы  мүмкін,  мұндайда функция  программага өзіндегі  әрбір  шарт 
үшін жеке есептелген мәндерді кайтарады.
Мүмкіндігіне  карай  функцияда  тек  қана  бір  r e t u r n   операторьгн  қолдану 
ұсынылады.  Функцияның  көлемді  жэне  күрделі  болып,  онда  бірнеше  r e t u r n  
операторларының  тұруы  оның  жұмысын  түсінуді  қиындатады.  Көбінесе, 
функцияны  онда  тек  бір  r e t u r n   операторы  қолданылатындай  етіп түрлендіріп 
жазуға болады, мысалы, екі мәнді салыстыратын бір функция жазайық:
int compare__values (int first,  int  second)
{
int  result; 
if  (first =  second) 
result = 0 ;  
else  if  (first >  second) 
result = 1 ;  
else  if  (first <  second) 
result =  2;
return  (result);
)
Бұл  профамма  тым  қарапайым  болгандыктан,  бір  r e t u r n   операторын
колдану артықшылыгын түсіну киындау шыгар.
Бірақта  кейбір  жагдайларда  кодтың  көрнекілігін  арттыру  үшін  бірнеше 
r e t u r n  операторын пайдалану да дүрыс болып саналады.
C/C++  компиляторлары  функцияның  қайтарылатын  мэнінің  типі  мен  оның 
параметрлері  типі  жайлы  мәліметтің  профаммада  функцияны  шақыруга  дейін 
тұруын  талап  етеді.  Компилятордын  функцияны  анықтауды  оны  бірінші  пайда- 
ланудан  бұрын  қоюды  талап  етуі  компьютер  жадында  профамма  мәліметтерін 
дұрыс  орналастыруды  камтамасыз  етеді.  Бірақ  профамманың  күрделілігінің 
артуы  нәтижесінде  бұл  талап  орындалмай  қалуы  мүмкін.  Сондыкган  мұндай 
жагдайда  функция  параметрлері  мен  қайтарылатын  мэн  типтерін  алдын  ала 
қыскаша сипаттап кететін функция  прототипін қолдану қарастырылган.
Мысалы,  і   c u b e   жэне  f   c u b e   функцияларын  қолданатын  профамманы 
прототиптерді көрсетіп қайта қарастырайық:
99

^ in c lu d e   < s t d i o .h >
i n t   i__cub©  ( i n t )   ; 
/ /   i__cube  функциясының  прототип!
f l o a t   f__cube  ( f l o a t )   ;  / /   f__cube  функциясыкың  п рото ти п і
v o id   m ain  ()



p r i n t f  ("3 cu b ed  i s   %d\n" , i__cube (3) )  ;  //i_ _ c u b e   функциясын  шақыру 
p r i n t f  ( " 3 .7  cu b ed  i s  %f \n "  ,  f__cube ( 3 .7 ) )   ; / / f__cube  функциясын
/ /   шақыру


v
 
;
1
 
^
i n t   i___cube  ( i n t   v a lu e )   / /   ic u b e   Функциясын  си п аттау

~  
W m  Z
T
T^ :  v
r e t u r n   ( v a lu e   *  v a lu e   *  v a l u e ) ;
}
f l o a t   f__cube  ( f l o a t   v a lu e )   / /   f__cube  Функциясын  си п аттау

- -  ■
 ү  
4
r e t u r n   ( v a lu e   *  v a lu e   *  v a l u e ) ;
>
Программаны орындау нәтижелері:
3  c u b e d   i s   27
3 . 7   c u b e d   i s   5 0 .6 5 3 0 0 2
Функция  прототипі  нүктелі  үпрмен  аякталады,  ал  функцияны  сипаттау 
кезінде  такырып  жолынан  сон  функция  операторлары  жазылып,  тек  солардан 
кейін гана нүктелі үтір орналасады.
Өз  (тұтынушы)  функцияларыңызды  кұрганнан  сон,  бір  программа  үшін 
жазылган  функцияны  басқа  бір  программада  да  колдануга  болады.  Бір  рет 
жазылган  функцияны  бірнеше  программаларда  пайдалану  мүмкіндігі  програм­
малау және оны түзету кезеңдерін қысқартуга мүмкіндік береді.
4.3 Н акты және формальды (керсетпелі) параметрлер
Формальды  параметрлер деп функция  аныкталуында көрсетілетін  параметрлер 
атауларын айтамыз. Мысалы, мынадай функцияда:
v o i d   jo b _ _ in fo rm a tio n   ( i n t   a g e ,  f l o a t   s a l a r y ,   i n t   number__job)
{
//  функциялар операторлары
}
a g e ,  
s a l a r y ,   n u m b e r^ jo b   атаулары  берілген  функция  үшін  формальды 
немесе көрсетпелі  параметрлер болып саналады.
Функцияны  профаммадан  немесе  баска  бір  функциядан  шакырган  кезде
функцияга  берілетін  мэндер  накты  немесе  койылмалы  параметрлер  болып 
табы лады.
Төмендегі 
мысалда 
берілген 
30, 
42000.00 
жэне 
321 
мәндері 
j o b _ i n f o r m a t i o n   функциясын  шақыру  кезіндегі  көрсетпелі  параметрлерді
апмастырып солардың орнына койылатын накты  параметрлер болып табылады:
jo b _ _ in fo rm a tio n   ( 3 0 ,4 2 0 0 0 .0 0 ,3 2 1 ) ;
100

Функцияга  тасымалданып  қойылатын  параметрлер  сандық  мэн  немесе  аины- 
малы түрінде болуы мүмкін. Оларға қойылатын жалғыз талап — қойылмалы накты 
парамстрдің  (немесе  айнымалының)  типі  көрсетпелі  параметр  типімен  бірдей 
болуы  тиіс.  Келесі  код  фрагменті  қойылмапы  параметр  орнына  айнымалыны
пайдалану тэсілін көрсетеді: 
i n t   w o rk e r s__age  =  3 0 ; 
f l o a t   w o r k e r s _ js a la r y   =  4 2 0 0 0 .0 0 ; 
i n t   jo b _ n u m b er  =  3 2 1 ; 
,
j o b _ i n f o r m a t i o n   { w o r k e r s _ a g e ,  w o rk e rs _ _ s a la ry ,  j  ob_num ber)  ;
4.4 Функциялар мен  айнымалылар атауларының әрекет ету аймағы
Программадағы  функциялар  мен  айнымалылар  атауларының  өз  әрекет  ету 
(немесе көріну) аймағы, яғни оларды пайдалануға болатын, мәндері белгілі болып 
келетін профамманың жұмыс аймағы болады.
Келесі программаны қарастырайық.
# i n c l u d e   < s t d i o . h >  
v o i d   p r ( i n t   pr__count)
{
i n t   c o u n t ;
f o r   ( c o u n t  =
1
;  c o u n t< = p r _ c o u n t;  co u n t+ + )
p u t c h a r (1
 
A * );
v o i d   m ain (v o id )

1 1
 § 

Щ
 - ; Щ
i n t   c o u n t ;
f o r   ( c o u n t  = 1 ;   c o u n t  <=  3 ;  co u n t+ + )
printf("\n  Your  computer  should print  %d  time(s)\n” ,
c o u n t ) ;
p r ( c o u n t ) ;
)
p r i n t f ( " \ n " ) ;

* - и И і ;; 
^
Программанын орындалу нэтижелері:
Y our  с о т р и t e r s h o u l d   p r i n t   1  t i m e ( s )
A
Y our  c o m p u te r  s h o u ld   p r i n t   2  t i m e ( s )
A A
Y our  c o m p u te r  s h o u ld   p r i n t   3  t i m e ( s )
A A A
Мұңда  p r   жэне  m ain  функцияларының  эрқайсысында  c o u n t  аинымалысы 
пайдаланылады,  бірак  бұл  айнымалылардын  екеуі  екі  түрлі  болып  табылады, 
өйткені  олардын  эркайсысының  өз  жұмыс  аймағы  бар.  Рг  функциясындагы
101

c o u n t   айнымалысы  тек  функцияның  орындалуы  кезінде  гана  белгілі  (көріну 
аймағы  функция  ішінде  ғана)  болып  саналады.  Сол  сияқты  екінші  c o u n t  
айнымалысы  тек  m ain   функциясының  орындалуы  кезінде  гана  жұмыс  істей 
алады.  Сондықтан  f o r   цнкліндегі  c o u n t  айнымалысының өзгеру  нәтижесі  m ain 
функциясындағы c o u n t  айнымалысына ешқандай әсерін тигізбейді.
Айнымалының  жұмыс  істеу  аймагын  қарастыру  кезінде  локальдық  жэне  гло- 
бальдық айнымалылар түсінігі жиі пандаланылады.
Локальдық  (жергілікті)  айиымалы
  —  бұл  белгілі  бір  функцияның  ішкі
операторларында  ғана  белгілі  болып  табылатын,  әрекет  ету  аймағы  шектеулі 
айнымалы.
Глобальды  (ауқымды)  айнымалы
  —  бұл  программаның  барлық аймақтарында 
толық белгілі болып саналатын айнымалы.
Жоғарыла  мысалда  көрсетілген  c o u n t   айнымалысы  тек  қарастырылган 
функция ішінде ғана аныкталған локальдық  айнымалы болатын.
4.5 Функция прототиптері
Функция  прототипі  компиляторға  функция  қайтаратын  мәлімет  типін, 
функцияда  қолданылатын  параметрлер  санын,  параметрлер  типтерін  және 
олардың орналасу реттілігін (мысалдағы екінші параметр v o id , ягни ештеңе жоқ) 
көрсетеді.  Компилятор  негізгі  программадан  (одан  кейін  жазылған)  функцияны 
шақырудың дұрыстыгын тексеру үшін функция  прототипін  қолданады.  Прототип 
жазылған кезде функцияның сипатталуы негізгі программадан соң орнасады.
Прототиптің жазылу түрі: 
v o i d   row (v o id )  ;
Бірінші  v o i d   компиляторга  функция  қайтаратын  мәннік  типін  (мұнда 
«ештеңе»  қайтарылмайды)  көрсетеді.  Екінші  v o id   параметрлердің  саны  мен 
типін және солардың реттілігін көрсетуі (мұнда да «ештене») тиіс.
Компилятор функция  прототипінде көрсетілген айнымалы атауларын елемейді. 
Мысалы,  берілген  үш  бүтін  санның  максималды  мәнін  табу  функциясынын 
прототипі мынадай
i n t  maximum  ( i n t   a ,   f l o a t   b ,   i n t   c)  ; 
немесе
i n t   maximum  ( i n t ,   f l o a t ,   i n t )   ;
болуы да мүмкін.
Қысқаша жазу түрін пайдаланган дұрысырақ болып саналады.
4.6 Рекурсивті функциялар
Келесі  функция  void  типіндегі  мән  қайтарады,  ягни  жұмыс  аткарады,  бірак 
ешкандай мән бермейді:
v o i d   p r i n t  ( i n t   g g ,  i n t   mm,  i n t   d d )
{  p r i n t f  ( H\ n   жыл: %d” , g g )  ; 
p r i n t f  ( " \ t   а й : %d” ,mm)  ; 
p r i n t f (" \  t   к ү н : % d", g g ) ;
}
102

Енді программада осы функцияны төмендегідей түрде шақырсақ, 
p r i n t f ( 2 0 1 2 , 1 0 , 1 5 ) ;
Оның нәтижесі: 
түрінде  болады.
Рекурсивті  функциялар.  C/C++ тіліңде функция  өзін өзі  шақырып та пайда- 
лана алады, мұндай функция 
рекурсивті
 деп аталады.
Берілген п бүтін санының факториалын есептейтін ( п ! =1-2-3-...*п) 
рекурсивті функция мысалы: 
f a k t   ( i n t   n )
i n t   b ;  
(n  
b   =
0
)  r e t u r n  
1

f a k t ( n -
1
) * n ;
r e t u r n   n ;
)
Осы функцияны енгізілген n мәні үшін кез келген бүтін санный факториалын 
есептеуде колданудың толык профаммасы төмендегі 4.1  мысалда келтірілген.
Функцияларды па йд ал а ну есептері
(тесттен
шыгу кажет.
#include 
#include  
void main ( 
)
{
int n=-4;
float power(float,  int),  x=2.0;
()  ;
p r i n t f ("-З-тің  3  дәрежесі  =%f\n",  power(-3.0,  3)); 
printf ("%4 .
 2f-Hii*  %3d fl0peKeci=%6.2f\n"/x,n,power (x,n)) ; 
p r i n t f ("0-ді  -2  дәрежесіне шыгару:  % 6 .2f\n” ,p o w e r (0.0,  -2)); 
getch () ;
}
float power  (float x,  int n)


-1
float step; 
if(n>0)
{
for(step=l.0;  n>0;  n— )  step*=x; 
return  step;
>
else if(x!=0)
I
for (  step=1.0;  n<0;  пч-+)  step/=x;
103

r e t u r n   s t e p ;
>
{
p r i n t f ("Қате!!!  H) ;
p r i n t f ( "%d-Ti  0  дәреж еге 
шыгаруга  6олмаиды!\п",п)

r e t u r n   О;
)
>
Программа нәтижесі:
-3-тің  3 дэрежесі  =-27.000000
2.00-нің -4  дэрежесі= 0.06
Қ а т е !! !  -2 
-ні  0  дәрежеге шыгаруіга
ш
0-ді  -2 дэрежесіне шығару:  0.00
pow er ()  функциясы  оны  шақырган  функцияга  бір  гана  мән  беруі  керек.  Бұл 
үшін  r e t u r n   операторын  колдану  ыңгайлы.  Осындай  тәсілмен  қайтарылган  мэн 
функция  жұмысының  нәтижесі  болып табылады  жэне  оны  өрнектерде  қолдануга 
болады.
Функция  аргументтері  оның  жұмысынан  кейін  өзгермеуі  керек,  сондықтан 
ол функцияга 
мэні арқылы
 беріледі.
Жазылган функцияның жұмысынын дұрыстыгын тексеру үшін оны бірнеше
берілген  мэндер  арқылы  тесттен  өткізу  керек.  Тест  ретінде  алынатын  мәнді 
құрылған  алгоритмнің  барлық  тармактарын  қадагалап  шыгатындай  етіп  тандап 
алу кажет.  Біздін мысалымызда дәрежені есептеу m ain ()  функциясында үш түрлі
типтегі  мәліметтер  арқылы  тексеріліп  шықты,  осылай  тексеру  жеткілікті  болып
саналады.
4.1 
есеп.  Бүтін сандардын факториалын аныісгау профаммасы.
# in c lu d e   < с о п іо .һ >
#include  
#include   
float  long fakt(int m)
{
0

r e t u r n  
1

e l s e
return ( (float) 
m * fa k t (m-
1
) )  ;
)
tain  ()
{
float p; 
int n;
104

printf("Бүтін саи енгізіңіз  n  :  ");
scanf (n%dvv, 6n) ;
for  (int k*0;  k<»n;  k++)
(  pefakt (k) ;
printf("  %i!»  %-15.0f\n",k,p);
| й !
1
р   > 
Г 


  .■  - 
/  ;  .  '  ^
p u t s ("Аяқтау үшін Enter\n");
getch () ;
i
 

- ШШШШ
Келесі функция да ешқандай мән қайтармайды және оның ешқандай 
параметрлері де жок.
4.2 есеп. Ағымдағы уақытты бейнелеу.
#include  
void real-time (void)
p r i n t f (”\пҚаэіргі  уақьгг :
  %s",TIME  и (саг:мин:сек.)”);

". 
1
Ш

1
 •’ 
Щ
 ISSISH I
main ()
{  real-time () ;  )
Профамма нәтижесі:
Қазіргі  уақыт:  14:16:25  (с а г :мин:сек.)
I
Прототипті  көрсетуді осы  мысал аркылы былай корсетуге болады: 
#include  
void real-time (void) ; 
m a i n ()
{  real-time () ;  } 
void real_time(void)
printf ("\n  Қазіргі  уақыт:  %s,f,TIME  и (саг:  мин:  сек.)”)
)
4.3 есеп. Берілген екі бүтін саннын кішісін аныктайтын функцияның ішкі  мәтіні 
мынадай болуы мүмкін:
int  mini (int х,  int у)
{  int  t;
if  (x
else  t=y; 
return  t ;
Шм>
  1 
М Ш ш Ш Ш І Ш Ш
 ■
 
Ш
 S 
\
 Ш   . 
: j j   . 
Щ   /  
-  ■
Бүл функцияны төмендегідей түрде басқаша да жазуға болады
mini(int х,  int у)
{  return  (x
105

Қяйтарылатын нәтиже типі  корсстілмесе, ол келісім  бойьінша бұтін сан 
( i n t  
типі болып 
саналады. 

4.4  сссп.  Бсрілген он бүтіи санмың факториапын аныктау функциясын жаіу:
#i n c l u d e   < о о п іо .һ >
• i n c l u d e   < e t d i o . h >  
Щ
lo n g   f a k t  ( i n t   k) 
..щ
(  i f   (k < 0)  r e t u r n   0 ;
i f   (k “ *0)  r e t u r n   1 ;  
. ц ?|й
lo n g   p - 1 ;
f o r   ( i n t   j « l ;   j < « k ; j + + )
P*“  J ; 
I  
^Щт
r e t u r n   (p )  ;

Щ
n e i n   () 
: Щ И
( i n t   n;  f l o a t   о ; 
*
p r i n t f  ("n  ■  n)  ; 

a c a n f (" %d" , fin)  ; 
^ І И
“   f a k t  (n)  ;
p r i n t f ( »% d f « % l f \ n " , n , O ) ;
0 « to h  ()  ; 


Щ
Tcpic сандардыц факториалы болмайлы, муішайла функция 0 
мәнін береді, 
ал 
0
!-І, калган жагдайларла бұл функция цикл ішінде факториалды есептейді.
4.5 
сссп,  Берілген 
m,  п 
бүтін саидары үшін  мынадай врнекті  есептеу 
ксрек:
ШЙН
( т  + я)!
/ /   О" (  ® ? *n !) /  (mfn)  f  e c iiiT ty
linoludt  
#include  
"
long  fakt (int  k)
(  if  (k<0)  return  0;
if  
'
r8 S ^ H
long р м і ;
for  (int  j«l;  j<*k; j++) 
.|||
ш Я М  
p#* J / 
Щ
return  (p) ;
main  О
(int m,n;  float o; 
| г
Щ
| '


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   11




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет