You are on page 1of 6

ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

1 Ñàíàõ îéí õàÿã


# include < stdio .h >
int main () {
int n = 5;
printf ( " % u \ n " , & n ) ; // n - iin haygiig hevlene
return 0;
}

int n; çàðëàãäàõ ³åä Ñè õýë stack äýýð 4byte ñàíàõ îé í°°ö°ëí°. n-èéí õàÿãèéã õýâëýõäýý
%u ãýæ çààæ °ã÷ áàéãàà íü unsigned int ò°ðëèéã õýâëýæ áàéãààã Ñè ãàðàëòûí ñèñòåìä õýëæ
°ã÷ áàéíà.
Ñàíàõ îé 32bit-èéí ³éëäëèéí ñèñòåì äýýð 0..232 − 1 õ³ðòýë äóãààðëàãäñàí áàéäàã. Òèéìýýñ
ñàíàõ îéí õàÿã 4byte áóþó 32bit ñàíàõ îéä áàãòàíà.
int ò°ð°ë 231-èéã õàñàõ òîîíä, àõèàä 231-èéã íýìýõ òîîíä, íèéòäýý 231 + 231 = 2 ∗ 231 = 232
çýðýãò áóþó 4byte-èéã ýçýëäýã. Õýðâýý áèä ñàíàõ îéí õàÿãèéã int ò°ð°ëä õàäãàëàõ ãýæ áàéãàà
áîë unsigned int ò°ð°ëä õàäãàëáàë îðîí õýòðýë ³³ñýõã³é. Ó÷èð íü int ò°ð 231 − 1 õ³ðòýëõ íýìýõ
òîîíóóäûã õàäãàëæ ÷àääàã áàéõàä ñàíàõ îé 232 − 1 õ³ðòýë äóãààðëàãäñàí áàéõ þì. Õàðèí
unsigned int õàñàõ òîî õàäãàëäàãã³é ó÷ðààñ á³õ 4byte-èéã ýåðýã òîî õàäãàëàõàä çîðèóëäàã òóë
232 − 1 õ³ðòýë òîîã õàäãàëæ ÷àäíà.
# include < stdio .h >
int main () {
int n ;
unsigned int addr = ( unsigned int ) & n ;
scanf ( " % d " , addr ) ; // scanf ("% d " , & n ) ; ene uildeltei ijil
// uchir ni scanf - ruu n - iin haygiig damjuulna
printf ( " % d \ n " , n ) ;
}

# include < stdio .h >

int main () {
int n = 5;
int s = 3;
unsigned int addr_n = ( unsigned int ) & n ;
unsigned int addr_s = ( unsigned int ) & s ;
printf ( " % u \ n " , addr_n - addr_s ) ;
return 0;
}

Stack õàìãèéí ñ³³ëä îðñîí ýëåìåíòèéã ýõýëæ ãàð-


äàã °ã°ãäëèéí á³òýö. Stack-èéã íàðèéí õîîëîéòîé ç³éð-
Stack
ëýâýë õàìãèéí äîîð áàéãàà ç³éëèéã àâàõûí òóëä äýýð
íü áàéãàà á³ãäèéã ãàðãàíà. Stack-èéí îðîéí çààã÷,
õàìãèéí ñ³³ëä îðñîí ýëåìåíòèéí õàÿãèéã çààäàã.
5 4byte
Çóðàã 1-ä õóâüñàã÷èéí íýðèéí àðä òîäîðõîéëîõ öýã
òàâèàä òóõàéí õóâüñàã÷èéí ñàíàõ îéí õàÿãèéã áè÷èã-
n:1200
3 4byte
s:1196
äýæ, òóõàéí õàÿã äîòîðõ óòãà ä°ðâ°ëæèí äîòîð áè-
÷èãäñýí. Ñè õýëýíä stack äýýðýýñ äîîøîî °ñä°ã. Äýýðõ
1200
addr_n:1192
1188
addr_s:1188 оройн_заагч

Çóðàã 1: stack
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

õî¼ð õóâüñàã÷èéí õóâüä n ò³ð³³ëæ çàðëàãäñàí ó÷ðààñ


ò³ð³³ëæ stack äýýð ³³ñ÷, stack-èéí õýìæýý 4byte-ààð
íýìýãäýõ áà stack-èéí îðîéí çààã÷èéí õàÿã 4byte-ààð
õîðîãäîíî (äîîøîî °ñä°ã). n, s íü int, stack äýýð äà-
ðààëààä ³³ññýí ó÷ðààñ õàÿãóóäûíõ íü õîîðîíäûí ç°ð°°
4byte.
1.1 Õàÿãàí õóâüñàã÷

Ñàíàõ îéí õàÿã 4byte-èéã õàäãàëàõ çîðèóëàãäñàí õóâüñàã÷äûã õàÿãàí õóâüñàã÷èä ãýíý. Õàÿãàí
õóâüñàã÷ óòãààðàà ñàíàõ îéí õàÿã àâäàã.
ijðýì:
ò°ð°ë *íýð;
Æèðèéí õóâüñàã÷ààñ ÿëãàõäàà íýðèéíõ íü °ìí° îä (*) òàâèíà.
# include < stdio .h >
int main () {
int n = 5;
int * p ;
p = &n;
printf ( " % u \ n " , & n ) ;
printf ( " % u \ n " , p ) ;
return 0;
}

n-èéí õàÿã, õàÿãàí õóâüñàã÷ p-èéí óòãà õî¼ð èæèë


áàéíà.
Stack

n:1200 5 4byte

*p:1196 1200 4byte

Çóðàã 2: õàÿãàí õóâüñàã÷


Õàÿãàí õóâüñàã÷ ñàíàõ îéí õàÿã áîëîõ 4byte
òîîã õàäãàëàõààñ ãàäíà òóõàéí ñàíàõ îéðóó õàíäàõ áîëîìæèéã îëãîäîã. Õàÿãàí õóâü-
ñàã÷èéí íýðèéí °ìí° îä (*) òàâèõàä, õàäãàëæ áàéãàà õàÿãàí äîòîðõ óòãàðóó õàíäàíà. “³íèéã
äàì õàíäàëò ãýæ íýðëýäýã.
# include < stdio .h >

int main () {
int n = 5;
int * p ;
p = &n;
printf ( " % d \ n " , * p ) ;
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

* p = 3;
printf ( " % d \ n " , n ) ;
return 0;
}

Á³òýö ò°ðëèéí õàÿãèéã õàäãàëàõ õàÿãàí õóâüñàã÷èéí õóâüä äîîðõ áàéäëààð ãèø³³äýä íü
õàíäàæ áîëäîã.
struct Student {
char name [20];
float mark ;
};
int main ()
{
struct Student bat ;
struct Student * p = & bat ;
p - > mark = 100;
strcpy (p - > name , " Bat " ) ;
// ...
}

2 Äàñãàëóóä
2.1 Àíãèä

1. x õóâüñàã÷èä õàÿãààð íü äàìæóóëàí óòãà îíîî.


int main ()
{
int x ;
// Utga onoox uildel ....

printf ( " % d \ n " , x ) ;


return 0;
}

2. even() ôóíêöèéã òîäîðõîéë. Óã ôóíêö íü n òýãø òîî áàéâàë äàìæóóëñàí int ò°ðëèéí
õàÿã äîòîðõ óòãàä 1-ã, ³ã³é áîë 0-ã îíîîíî.
void even ( int n , int * p )
{
// ....
}
int main ()
{
int x , n ;
scanf ( " % d " , & n ) ;
even (n , & x ) ;
if ( x == 1)
printf ( " tegsh \ n " ) ;
else
printf ( " sondgoi \ n " ) ;
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

return 0;
}

3. Ïàðàìåòðýýð äàìæóóëñàí õ³ñíýãòýýñ òýãø òîîíóóäûí òîîã îëæ, ïàðàìåòðò äàìæóóëñàí


addr õàÿãò, ñîíäãîé òîîíóóäûí òîîã îëæ addr1 õàÿãò òóñ òóñ õàäãàë.
void find ( int a [] , int n , int * addr , int * addr1 ) ;

int main ()
{
int a [100];
read (a , 5) ; // lab 9.3 - iin read , print funkts
print (a , 5) ;
int x , y ;
find (a , 5 , &x , & y ) ;
printf ( " tegsh toonuudiin too : % d \ n " , x ) ;
printf ( " sondgoi toonuudiin too : % d \ n " , y ) ;
return 0;
}

4. Õî¼ð òîîíû óòãûã ñîëüäîã äîîðõ ôóíêöèéã áè÷.


void swap ( int *a , int * b ) ;
int main ()
{
int x = 1 , y = 2;
swap (& x , & y ) ;
printf ( " % d % d \ n " , x , y ) ;
return 0;
}

5. Triangle á³òöýí ò°ð°ëä ãàðààñ óòãà àâàõ äàðààõ ôóíêöèéã áè÷.


struct Triangle {
int a , b , c ;
};
void read ( struct Triangle * p )
{
// ...
}
int main ()
{
struct Triangle g ;
read (& g ) ;
// ...
}

6. Îþóòàí á³òöýä ãàðààñ óòãà àâàõ read_student() ôóíêö, íýðèéã íü °°ð÷ë°õ change_name()
ôóíêö³³äèéã òóñ òóñ òîäîðõîéë.
struct Student {
char fname [20] , lname [20] , id [10];
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

float golch ;
};
void read ( struct Student * s )
{
// ...
}
// oyutnii medeelel hewlex funkts
void print ( struct Student s )
{
// ...
}

void set_fname ( struct Student *p , char ner []) ;


void set_lname ( struct Student *p , char ovog []) ;
void set_id ( struct Student *p , char id []) ;
void set_golch ( struct Student *p , float golch ) ;
int main ()
{
struct Student bat , t ;
read (& bat ) ;
print ( bat ) ;
set_fname (& t , " dorj " ) ;
set_lname (& t , " bold " ) ;
set_id (& t , " 1324 " ) ;
set_golch (& t , 3) ;
print ( t ) ;
return 0;
}

2.2 Ãýðò

1. Õ³ñíýãòèéí õàìãèéí èõ áà áàãà ýëåìåíò³³äèéã ïàðàìåòðò èðñýí õàÿãò õàäãàëàõ äîîðõ


ôóíêöèéã õýðýãæ³³ë.
void find ( int a [] , int n , int * min , int * max ) ;

2. Õ³ñíýãòýýñ value ýëåìåíòèéã õàéæ, îëäñîí õàÿãèéã áóöààõ äîîðõ ôóíêöèéã õýðýãæ³³ë.
Îëäîõã³é áîë NULL õàÿã áóþó 0-ã áóöààíà.
int * search ( int a [] , int value , int size ) ;
int main ()
{
int a [100];
read (a , 5) ;
print (a , 5) ;
int * p ;
p = search (a , 3 , 5) ;
if ( p == NULL )
printf ( " Oldsongui \ n " ) ;
else
printf ( " % d too % d bairlald oldloo \ n " , *p , p - a ) ;
return 0;
ÌÓÈÑ-ÕØÓÈÑ ÌÊÓÒ

3. Rationalá³òýö íü ýíãèéí áóòàðõàéí õ³ðòâýð õóâààðèéã õàäãàëàõ áîë òýäãýýðèéí õîîðîíä


³éëäýë õèéõ äàðààõ ôóíêö³³äèéã õýðýãæ³³ë.
struct Rational {
int d , n ; // d / n butarxai
};
Rational add ( const Rational *a , const Rational * b ) ;
Rational sub ( const Rational *a , const Rational * b ) ;
Rational mult ( const Rational *a , const Rational * b ) ;
Rational div ( const Rational *a , const Rational * b ) ;
void simplify ( Rational * a ) ; // xuraax
void read ( Rational * a ) ; // unshih
void print ( Rational * a ) ; // xevlex

You might also like