SlideShare a Scribd company logo
Òºðºëò áèø çààã÷
õóâüñàã÷, ôóíêöûí
çààã÷
Õè÷ýýë 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

PDF
Çàíãèëààíû õ¿÷äëèéíí àðãà
PDF
PDF
Òðàíñôîðìàòîðûí îðóóëãûí á¿ä¿¿â÷
PDF
Òîãòìîë ã¿éäëèéí ìàøèíû á¿òýö õèéö
PDF
lecture 4
PDF
H.el205 p.6
PDF
Lecture 16
Çàíãèëààíû õ¿÷äëèéíí àðãà
Òðàíñôîðìàòîðûí îðóóëãûí á¿ä¿¿â÷
Òîãòìîë ã¿éäëèéí ìàøèíû á¿òýö õèéö
lecture 4
H.el205 p.6
Lecture 16

What's hot (16)

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

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