SlideShare a Scribd company logo
1 of 20
Òºðºëò áèø çààã÷
õóâüñàã÷, ôóíêöûí
çààã÷
Õè÷ýýë 12
Õè÷ýýëèéí Àãóóëãà
 Òºðºëò çààã÷
 Òºðºëò áèø çààã÷
 Õºðâ¿¿ëýëò õèéõ
 Ôóíêö ðóó õàÿãààð äàìæóóëàõ
 Ôóíêöûí çààã÷
 Çààã÷ áà ìàññèâ
 [ ] ¿éëäýë
2
Çààã÷ äýýðõ ¿éëäë¿¿ä 3
Äàðààõ ¿éëäë¿¿äèéã çààã÷èä çºâøººðäºãã¿é.
 Õî¸ð çààã÷èéã íýìýõ
 ßëãààòàé îáüåêò äýýðõ 2 çààã÷èéã õàñàõ
 Áîäèò òîîòîé çààã÷èéã íýìýõ
 Çààã÷èéã ¿ðæ¿¿ëýõ
 Çààã÷èéã õóâààõ
 Çààã÷èéã øèëæ¿¿ëýõ ¿éëäýë
Òºðºëò çààã÷
4
 Òºðºëò çààã÷èéã àøèãëàí ººð òºðºëòýé
îáüåêòîä õàíäàæ áîëíî.
#include <stdio.h>
main()
{ char c[10]=”ababababab”;
int i, *p1=c;
for(i=0;i<5;i++)
printf(“%c ”,*p1++);
}
 ¯ð ä¿í:
a a a a a
charòºðëèéí îáüåêò
int òºðëèéí çààã÷
int òºðëèéí õýìæýýãýýð íýìýãäýõ
Òºðºëò çààã÷
#include <stdio.h>
main()
{ char c[10]=”ababababab”;
int i, *p1=c+1;
for(i=0;i<5;i++)
printf(“%c ”,++*p1++);
}
• ¯ð ä¿í:
c c c c c
5
++(*(p1++))
Òºðºëò áèø çààã÷
• Òºðºë íü òîäîðõîéëîãäîîã¿é çààã÷èéã òºðºëò áèø çààã÷
ãýíý.
• Èéì çààã÷èéã àøèãëàí á¿õ òºðëèéí îáüåêòîä õàíäàõ
áîëîìæòîé.
• Òºðºëò áèø çààã÷èéã çàðëàõäàà void ò¿ëõ¿¿ð ¿ãèéã
àøèãëàäàã.
6
Æèøýý
#include <stdio.h>
int x=567; double y=56.23;
main()
{ void *p;
p=&x;
printf(“x=%d n”,*(int *)p);
p=&y;
printf(“y=%lf n”,*(double *)p);
}
7
Òºðºëò áèø çààã÷
int òºðëèéí îáüåêòûã çààëãàõ
double òºðëèéíîáüåêò çààëãàõ
Òºðºëò áèø çààã÷
• Òºðºëò áèø çààã÷èéíçààæ áóé îáüåêòîäõàíäàõäààçààâàëõºðâ¿¿ëýëò õèéæ
ºãíº.
• Õºðâ¿¿ëýëò õèéõ ¿éëäýë íü åðäèéí õóâüñàã÷ äýýð õèéäýã ¿éëäýëòýé
òºñòýé.
• int i; float f;
f=(float)i/2;
• Çààã÷îáüåêò äýýð õºðâ¿¿ëýëò õèéõäýý äàðààõõºðâ¿¿ëýëò õèéõäýý
äàðààõáè÷ëýã àøèãëàíà.
• Áè÷ëýã : (Òºðºë*)
8
Åðäèéí îáüåêòäýýðõºðâ¿¿ëýëòõèéõ
Õºðâ¿¿ëýëò õèéõ
Äýýðõ áè÷ëýãèéã àøèãëàí òºðºëò áèø p çààã÷ äýýð
õºðâ¿¿ëýëò õèéâýë :
• int òºðëèéí çààã÷ áîëãîõ
(int *)p
• int òºðëèéí çààã÷ áàéäëààð õàíäàæ óòãûã óíøèõ
*(int *)p
• double òºðëèéí çààã÷ áàéäëààð õàíäàæ óíøèõ
*(double *)p
9
Æèøýý
#include<stdio.h>
char c[12]="ababababab"; inti=10;
void*p1=(void*)c;
main()
{ for(i=0;i<3;i++)
{ printf("%c",*(char*)(p1));
(long*)p1=(long*)p1+1; /* ((long*)p1) ++ */
}
}
/* ¯ðä¿í íü: a a a */
10
char òºðëèéíçààã÷ áàéäëààð
õàíäàõ
long òºðëèéí çààã÷ààð õàíäàæ çààã÷èéã
øèëæ¿¿ëýõ
Ôóíêö ðóó õàÿãààð äàìæóóëàõ
• Æèøýý : A[N] ìàññèâûí MAX ýëåìåíòèéã ìàññèâûí
òºãñãºëä àâàà÷.
#include<stdio.h>
Swap(int *p1, int *p2)
{ int tmp; tmp=*p1; *p1=*p2; *p2=tmp; }
main()
{ int A[10]={4,2,5,1,3,1,3,6,2,1}, n=10, i;
for(i=0;i<n-1;i++) if(A[i]>A[i+1])
Swap(&A[i], &A[i+1]); printf(“MAX=%d”,A[n-1]);
}
11
Ôóíêöèéí çààã÷
• Ñè õýëýíä ôóíêöèéã äóóäàõ 2 àðãà áàéäàã.
• Øóóä äóóäàõ
• Øóóä áóñ äóóäàõ
• Áèä ºìíº íü ôóíêöèéã øóóä äóóäàæ áàéñàí . ª.õ
øóóä íýðýýð íü õàíäàæ äóóäíà.
int Sum(int x,int y) { . . . }
main()
{ Sum(5,6); /* Øóóä íýðýýð íü äóóäàõ */
}
12
Ôóíêöûí çààã÷
• Ôóíêöèéã øóóä áóñààð äóóäàõäàà ôóíêöèéí çààã÷
ãýæ íýðëýãäýõ çààã÷ õóâüñàã÷èéã àøèãëàäàã.
• Ôóíêöèéí çààã÷èéã çàðëàõ :
<Áóöààõ òºðºë> (*<ÔóíêöèéíÍýð>)(<Òºðºë>, ..);
• Øóóä áóñààð äóóäàõ ãýæ áàéãàà ôóíêöûí çàðëàëò
ÿìàð áàéíà, ÿã òèéì áàéäëààð çàðëàäàã.
13
Ôóíêöûí çààã÷
• /* int ºãºãäºë áóöààäàã, àðãóìåíòã¿é ôóíêöèéã
äóóäàõàä àøèãëàõ ôóíêöèéí çààã÷ */
• int (*func)();
• Óòãà îëãîõäîî :
• <Ôóíêöèéí çààã÷>=&<Ôóíêö>;
• Àæèëëóóëàõäàà áóþó äóóäàõäàà :
• <Ôóíêöèéí çààã÷>( [àðãóìåíòóóä] );
14
Ôóíêöûí çààã÷
• Æèøýý : 2 òîîíû íèéëáýð îëîõ
#include<stdio.h>
int Sum(int a,int b)
{ return (a+b); }
main()
{ int (*func)(int,int);
func=&Sum;
printf("%d", func(5,3)); /* 8 */
}
15
Çàðëàõ
Óòãà îëãîõ áóþó çààëãàõ
Ôóíêö äóóäàõ
Çààã÷ áà ìàññèâ
• Ìàññèâûí ýõíèé ýëåìåíòèéí õàÿã íü ìàññèâûí íýð
áàéäàã.
• Íýã õýìæýýñò ìàññèâ ñàíàõ îéä äàðààëæ
áàéðëàäàã.
À Ìàññèâûí 0-ð ýëåìåíòèéí õàÿã áóþó &À[0]
A+1 1-ð ýëåìåíòèéí õàÿã áóþó &A[1]
A+2 2-ð ýëåìåíòèéí õàÿã áóþó &A[2]
A+3 3-ð ýëåìåíòèéí õàÿã áóþó &A[3]
. . .
A+i i-ð ýëåìåíòèéí õàÿã áóþó &A[i]
16
Çààã÷ áà ìàññèâ
17
 Ýíäýýñ ìàññèâûí ýëåìåíòýä õàíäàõäàà äàðààõ 2 àðãààð õàíäàæ
áîëîõ íü õàðàãäàæ áàéíà.
 A[i]=10; ýñâýë *(A+i)
 A[50] Ìàññèâûã õýâëýâýë :
for(i=0; i<50; i++) printf(“%d n”, *(A+i));
À ìàññèâûí ýõëýëèéí õàÿãààñ ýõëýí i-ð
ýëåìåíòèéã óíøèõ
Æèøýý
#include<stdio.h>
#include<stdlib.h>
int a[10],i,min;
main()
{ for(i=0;i<10;i++) *(a+i)=random(100);
min=*a;
for(i=1;i<10;i++) if(min>*(a+i)) min=*(a+i);
printf(" MIN = %d n",min);
}
18
Çààã÷ áà ìàññèâ
• Ýíý á¿õíýýñ ä¿ãíýæ¿çâýë ìàññèâûí íýð áîë çààã÷ õóâüñàã÷áîëæ áàéíà.
• Áèä a[i] ìàññèâûíýëåìåíòýä èíãýæ õàíääàã.
• Òýãâýë [ ] ¿éëäýë ìààíü à õàÿãààñ ýõëýí i -ð øèëæèëòýä áóé
îáüåêòûí óòãûã àâäàã ¿éëäýë áîëæ áàéíà.
int i=259; char *p=&i;
printf(" p[0] = %d ",p[0]); /* 3 */
printf(" p[1] = %d ",p[1]); /* 1 */
• ª.õýëáýë *(p+1) = p[i] ¿éëäë¿¿ä èæèë ¿ð ä¿íòýé.
19
Æèøýý : [ ] ¿éëäýë
#include <stdio.h>
char c[12]="ababababab"; int i=10;
void *p1=(void*)c;
main()
{ clrscr();
for(i=0; i<12; i+=2)
printf("%c ",((char*)p1)[i]);
} /* ¯ð ä¿ííü : a a a a a */
20

More Related Content

What's hot

Lecture 13
Lecture 13Lecture 13
Lecture 13tserenda
 
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èì
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èìÒðàíñôîðìàòîðûí àæèëëàõ çàð÷èì
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èìzaluu_medleg
 
L4: Решающие деревья
L4: Решающие деревьяL4: Решающие деревья
L4: Решающие деревьяTechnosphere1
 
Lecture1 kомпьютерт мэдээлэл_дүрслэх
Lecture1 kомпьютерт мэдээлэл_дүрслэхLecture1 kомпьютерт мэдээлэл_дүрслэх
Lecture1 kомпьютерт мэдээлэл_дүрслэхGantur Togtokh
 
NBB Lecture 12
NBB Lecture 12NBB Lecture 12
NBB Lecture 12Bbujee
 
Lecture 3
Lecture 3Lecture 3
Lecture 3Muuluu
 
Лекц 11
Лекц 11Лекц 11
Лекц 11Muuluu
 
Lecture 9, 10
Lecture 9, 10Lecture 9, 10
Lecture 9, 10Muuluu
 

What's hot (16)

H.el205 l9
H.el205 l9H.el205 l9
H.el205 l9
 
H.el308 l5
H.el308 l5H.el308 l5
H.el308 l5
 
Lecture 13
Lecture 13Lecture 13
Lecture 13
 
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èì
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èìÒðàíñôîðìàòîðûí àæèëëàõ çàð÷èì
Òðàíñôîðìàòîðûí àæèëëàõ çàð÷èì
 
H.el205 l7
H.el205 l7H.el205 l7
H.el205 l7
 
L4: Решающие деревья
L4: Решающие деревьяL4: Решающие деревья
L4: Решающие деревья
 
Lecture9
Lecture9Lecture9
Lecture9
 
H.el205 l10
H.el205 l10H.el205 l10
H.el205 l10
 
Lecture1 kомпьютерт мэдээлэл_дүрслэх
Lecture1 kомпьютерт мэдээлэл_дүрслэхLecture1 kомпьютерт мэдээлэл_дүрслэх
Lecture1 kомпьютерт мэдээлэл_дүрслэх
 
H.el205 l12
H.el205 l12H.el205 l12
H.el205 l12
 
H.el205 l6
H.el205 l6H.el205 l6
H.el205 l6
 
NBB Lecture 12
NBB Lecture 12NBB Lecture 12
NBB Lecture 12
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Лекц 11
Лекц 11Лекц 11
Лекц 11
 
Lecture 9, 10
Lecture 9, 10Lecture 9, 10
Lecture 9, 10
 
Lecture914
Lecture914Lecture914
Lecture914
 

More from Tuguldurbayar Gantogoo (12)

Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
Lecture 6
Lecture 6Lecture 6
Lecture 6
 
Lecture 7
Lecture 7Lecture 7
Lecture 7
 
Lecture 8
Lecture 8Lecture 8
Lecture 8
 
Lecture 9
Lecture 9Lecture 9
Lecture 9
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 
Lecture 13
Lecture 13Lecture 13
Lecture 13
 
Lecture 14
Lecture 14Lecture 14
Lecture 14
 
Chap15
Chap15Chap15
Chap15
 

Lecture 12

  • 1. Òºðºëò áèø çààã÷ õóâüñàã÷, ôóíêöûí çààã÷ Õè÷ýýë 12
  • 2. Õè÷ýýëèéí Àãóóëãà  Òºðºëò çààã÷  Òºðºëò áèø çààã÷  Õºðâ¿¿ëýëò õèéõ  Ôóíêö ðóó õàÿãààð äàìæóóëàõ  Ôóíêöûí çààã÷  Çààã÷ áà ìàññèâ  [ ] ¿éëäýë 2
  • 3. Çààã÷ äýýðõ ¿éëäë¿¿ä 3 Äàðààõ ¿éëäë¿¿äèéã çààã÷èä çºâøººðäºãã¿é.  Õî¸ð çààã÷èéã íýìýõ  ßëãààòàé îáüåêò äýýðõ 2 çààã÷èéã õàñàõ  Áîäèò òîîòîé çààã÷èéã íýìýõ  Çààã÷èéã ¿ðæ¿¿ëýõ  Çààã÷èéã õóâààõ  Çààã÷èéã øèëæ¿¿ëýõ ¿éëäýë
  • 4. Òºðºëò çààã÷ 4  Òºðºëò çààã÷èéã àøèãëàí ººð òºðºëòýé îáüåêòîä õàíäàæ áîëíî. #include <stdio.h> main() { char c[10]=”ababababab”; int i, *p1=c; for(i=0;i<5;i++) printf(“%c ”,*p1++); }  ¯ð ä¿í: a a a a a charòºðëèéí îáüåêò int òºðëèéí çààã÷ int òºðëèéí õýìæýýãýýð íýìýãäýõ
  • 5. Òºðºëò çààã÷ #include <stdio.h> main() { char c[10]=”ababababab”; int i, *p1=c+1; for(i=0;i<5;i++) printf(“%c ”,++*p1++); } • ¯ð ä¿í: c c c c c 5 ++(*(p1++))
  • 6. Òºðºëò áèø çààã÷ • Òºðºë íü òîäîðõîéëîãäîîã¿é çààã÷èéã òºðºëò áèø çààã÷ ãýíý. • Èéì çààã÷èéã àøèãëàí á¿õ òºðëèéí îáüåêòîä õàíäàõ áîëîìæòîé. • Òºðºëò áèø çààã÷èéã çàðëàõäàà void ò¿ëõ¿¿ð ¿ãèéã àøèãëàäàã. 6
  • 7. Æèøýý #include <stdio.h> int x=567; double y=56.23; main() { void *p; p=&x; printf(“x=%d n”,*(int *)p); p=&y; printf(“y=%lf n”,*(double *)p); } 7 Òºðºëò áèø çààã÷ int òºðëèéí îáüåêòûã çààëãàõ double òºðëèéíîáüåêò çààëãàõ
  • 8. Òºðºëò áèø çààã÷ • Òºðºëò áèø çààã÷èéíçààæ áóé îáüåêòîäõàíäàõäààçààâàëõºðâ¿¿ëýëò õèéæ ºãíº. • Õºðâ¿¿ëýëò õèéõ ¿éëäýë íü åðäèéí õóâüñàã÷ äýýð õèéäýã ¿éëäýëòýé òºñòýé. • int i; float f; f=(float)i/2; • Çààã÷îáüåêò äýýð õºðâ¿¿ëýëò õèéõäýý äàðààõõºðâ¿¿ëýëò õèéõäýý äàðààõáè÷ëýã àøèãëàíà. • Áè÷ëýã : (Òºðºë*) 8 Åðäèéí îáüåêòäýýðõºðâ¿¿ëýëòõèéõ
  • 9. Õºðâ¿¿ëýëò õèéõ Äýýðõ áè÷ëýãèéã àøèãëàí òºðºëò áèø p çààã÷ äýýð õºðâ¿¿ëýëò õèéâýë : • int òºðëèéí çààã÷ áîëãîõ (int *)p • int òºðëèéí çààã÷ áàéäëààð õàíäàæ óòãûã óíøèõ *(int *)p • double òºðëèéí çààã÷ áàéäëààð õàíäàæ óíøèõ *(double *)p 9
  • 10. Æèøýý #include<stdio.h> char c[12]="ababababab"; inti=10; void*p1=(void*)c; main() { for(i=0;i<3;i++) { printf("%c",*(char*)(p1)); (long*)p1=(long*)p1+1; /* ((long*)p1) ++ */ } } /* ¯ðä¿í íü: a a a */ 10 char òºðëèéíçààã÷ áàéäëààð õàíäàõ long òºðëèéí çààã÷ààð õàíäàæ çààã÷èéã øèëæ¿¿ëýõ
  • 11. Ôóíêö ðóó õàÿãààð äàìæóóëàõ • Æèøýý : A[N] ìàññèâûí MAX ýëåìåíòèéã ìàññèâûí òºãñãºëä àâàà÷. #include<stdio.h> Swap(int *p1, int *p2) { int tmp; tmp=*p1; *p1=*p2; *p2=tmp; } main() { int A[10]={4,2,5,1,3,1,3,6,2,1}, n=10, i; for(i=0;i<n-1;i++) if(A[i]>A[i+1]) Swap(&A[i], &A[i+1]); printf(“MAX=%d”,A[n-1]); } 11
  • 12. Ôóíêöèéí çààã÷ • Ñè õýëýíä ôóíêöèéã äóóäàõ 2 àðãà áàéäàã. • Øóóä äóóäàõ • Øóóä áóñ äóóäàõ • Áèä ºìíº íü ôóíêöèéã øóóä äóóäàæ áàéñàí . ª.õ øóóä íýðýýð íü õàíäàæ äóóäíà. int Sum(int x,int y) { . . . } main() { Sum(5,6); /* Øóóä íýðýýð íü äóóäàõ */ } 12
  • 13. Ôóíêöûí çààã÷ • Ôóíêöèéã øóóä áóñààð äóóäàõäàà ôóíêöèéí çààã÷ ãýæ íýðëýãäýõ çààã÷ õóâüñàã÷èéã àøèãëàäàã. • Ôóíêöèéí çààã÷èéã çàðëàõ : <Áóöààõ òºðºë> (*<ÔóíêöèéíÍýð>)(<Òºðºë>, ..); • Øóóä áóñààð äóóäàõ ãýæ áàéãàà ôóíêöûí çàðëàëò ÿìàð áàéíà, ÿã òèéì áàéäëààð çàðëàäàã. 13
  • 14. Ôóíêöûí çààã÷ • /* int ºãºãäºë áóöààäàã, àðãóìåíòã¿é ôóíêöèéã äóóäàõàä àøèãëàõ ôóíêöèéí çààã÷ */ • int (*func)(); • Óòãà îëãîõäîî : • <Ôóíêöèéí çààã÷>=&<Ôóíêö>; • Àæèëëóóëàõäàà áóþó äóóäàõäàà : • <Ôóíêöèéí çààã÷>( [àðãóìåíòóóä] ); 14
  • 15. Ôóíêöûí çààã÷ • Æèøýý : 2 òîîíû íèéëáýð îëîõ #include<stdio.h> int Sum(int a,int b) { return (a+b); } main() { int (*func)(int,int); func=&Sum; printf("%d", func(5,3)); /* 8 */ } 15 Çàðëàõ Óòãà îëãîõ áóþó çààëãàõ Ôóíêö äóóäàõ
  • 16. Çààã÷ áà ìàññèâ • Ìàññèâûí ýõíèé ýëåìåíòèéí õàÿã íü ìàññèâûí íýð áàéäàã. • Íýã õýìæýýñò ìàññèâ ñàíàõ îéä äàðààëæ áàéðëàäàã. À Ìàññèâûí 0-ð ýëåìåíòèéí õàÿã áóþó &À[0] A+1 1-ð ýëåìåíòèéí õàÿã áóþó &A[1] A+2 2-ð ýëåìåíòèéí õàÿã áóþó &A[2] A+3 3-ð ýëåìåíòèéí õàÿã áóþó &A[3] . . . A+i i-ð ýëåìåíòèéí õàÿã áóþó &A[i] 16
  • 17. Çààã÷ áà ìàññèâ 17  Ýíäýýñ ìàññèâûí ýëåìåíòýä õàíäàõäàà äàðààõ 2 àðãààð õàíäàæ áîëîõ íü õàðàãäàæ áàéíà.  A[i]=10; ýñâýë *(A+i)  A[50] Ìàññèâûã õýâëýâýë : for(i=0; i<50; i++) printf(“%d n”, *(A+i)); À ìàññèâûí ýõëýëèéí õàÿãààñ ýõëýí i-ð ýëåìåíòèéã óíøèõ
  • 18. Æèøýý #include<stdio.h> #include<stdlib.h> int a[10],i,min; main() { for(i=0;i<10;i++) *(a+i)=random(100); min=*a; for(i=1;i<10;i++) if(min>*(a+i)) min=*(a+i); printf(" MIN = %d n",min); } 18
  • 19. Çààã÷ áà ìàññèâ • Ýíý á¿õíýýñ ä¿ãíýæ¿çâýë ìàññèâûí íýð áîë çààã÷ õóâüñàã÷áîëæ áàéíà. • Áèä a[i] ìàññèâûíýëåìåíòýä èíãýæ õàíääàã. • Òýãâýë [ ] ¿éëäýë ìààíü à õàÿãààñ ýõëýí i -ð øèëæèëòýä áóé îáüåêòûí óòãûã àâäàã ¿éëäýë áîëæ áàéíà. int i=259; char *p=&i; printf(" p[0] = %d ",p[0]); /* 3 */ printf(" p[1] = %d ",p[1]); /* 1 */ • ª.õýëáýë *(p+1) = p[i] ¿éëäë¿¿ä èæèë ¿ð ä¿íòýé. 19
  • 20. Æèøýý : [ ] ¿éëäýë #include <stdio.h> char c[12]="ababababab"; int i=10; void *p1=(void*)c; main() { clrscr(); for(i=0; i<12; i+=2) printf("%c ",((char*)p1)[i]); } /* ¯ð ä¿ííü : a a a a a */ 20