Professional Documents
Culture Documents
Lecture - 10
Lecture - 10
Lecture - 10
Е-НЭЭЛТТЭЙ ИНСТИТУТ
Алгоритм ба програмчлал
Лекц - 10
www.emust.edu.mn
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
U.CS101- Алгоритм ба програмчлал
03 Нэмэлт
www.emust.edu.mn
К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru
Функц
Дэд алгоритмыг программчлалын хэлэнд функц болон процедур гэсэн нэрээр
хэрэглэж програмчлалд ашиглана. Програмчлалын хэлэнд функцыг стандарт
болон хэрэглэгчийн функц гэж 2 ангилдаг.
Функц
Хэрэглэгчийн
Стандарт
тодорхойлсон
#include<stdio.h> #include<stdio.h>
void swap(int a, int b); void swap(int *a, int *b);
int main() int main()
{ int m = 22, n = 44; { int m = 22, n = 44;
printf(" m = %d \n and n = %d", m, n); printf(" m = %d \n and n = %d",m,n);
swap(m, n); swap(&m, &n);
} }
void swap(int a, int b) void swap(int *a, int *b)
{ int tmp; { int tmp;
tmp = a; tmp = *a;
a = b; *a = *b;
b = tmp; *b = tmp;
printf(" \n m = %d\n and n = %d", a, b); } printf("\n a = %d \n and b = %d", *a, *b); }
int main() {
int x = 2, y = 3;
Swap ( x, y );
cout << x << " " << y;
}
Алгоритм:
Нийлбэр = 0
n != 0 бол үргэлжлэх
Нийлбэр = Нийлбэр + n % 10
n = n / 10
main()
{
cout << sumDigits(12345);
}
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Функц. Даалгавар
«A»: Хоёр натурал тоо өгөгдсөн бол хамгийн их хуваагчийг олох функц зохиох.
Жишээлбэл:
Өгөгдсөн - тоо: 7006652 112307574
ХИЕХ (7006652,112307574) = 1234.
Алгоритм:
int main()
{
int i;
for ( i = 2; i <= 100; i++)
if ( isPrime(i) )
cout << i << endl; (true/false)
}
cin >> n;
while ( isPrime(n) ){
cout << “ерөнхий тоо\n";cin >> n;
}
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ,
Е-НЭЭЛТТЭЙ ИНСТИТУТ
www.emust.edu.mn
К.Ю. Поляков, Е.А. Ерёмин, 2013 http://kpolyakov.spb.ru
Функц. Тэдгээрийн компьютерт үзүүлэх нөлөө
• Функцийн гол үүргүүдийн нэг нь санах ойг хэмнэх явдал.
• Өөрөөр хэлбэл функцийг дуудах бүрийд программын удирдлага нэг л
газар очдог бөгөөд функц дуудагдах тоогоор программд давтагдан
бичигдэхгүй гэсэн үг юм.
• Функц дуудах командад хүрмэгц удирдлага функцийн эхлэлийн
команд дээр очих ба харин функц дуудахад удирдлага буцаж дуудсан
газраа ирдэг юм.
Функц хэдийгээр санах ойг хэмнэх сайн талтай ч маш олон дуудагдах
тохиолдолд программын хурдад муу нөлөө үзүүлж болох юм.
Өөрөөр хэлбэл, тэр бүрийд шаардлагатай регистрүүдийг стект хийх,
аргументүүдийг мөн хадгалах, удирдлагыг шилжүүлэх, харин буцах
бүрийд регистрүүдийг сэргээх, удирлага буцаах зэрэг үйлдлүүд
хийгдэнэ.
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Функц. Онцлог хэрэглээ
#include <iostream>
using namespace std;
inline float jin (float pounds) * Олон функц хэрэглэж байгаа
{ тохиолдолд зарим функцийг дотоод
return 0.453592 * pounds; гэдгийг inline гэсэн түлхүүр үгээр
} тэмдэглэгээ хийж болдог.
int main()
{
float lbs;
cout << "\n Жин оруулах (фунт): ";
cin >> lbs;
cout << “Жин(кг)"<<jin (lbs);
}
#include<iostream.h>
#include<conio.h>
int fuc(int n){
if(n==0) return 1; Жишээ бодлого : N! нь 0-р төгссөн хамгийн бага n тоог хэвлэх
else return n*fuc(n-1);
}
int c,n;
main(void){ clrscr();n=1;
do{ с=fuc(n)%10;
if(c==0) goto xx;
n+=1;
}while(c!=0);
xx: cout<<"n! 0 төгссөн min тоо:"<<n<<"-iin factorial";
getch();
}
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Функц. хэрэглээ
Жишээ бодлого : N! Цифрүүдийн нийлбэр бүхэл түүны квадрат байх эхний 3 тоог хэвлэх
#include<iostream>
#include<conio.h> for(i=1; i<=s; i++)
using namespace std; if (s==i*i) {
int x, c, i, s, d, j, a[100]; cout<<d<<endl;j+=1;}
main(void){ d=1;j=0; d+=1;
do { c=fuc(d); i=0; s=0; }while(j<3);
do { getch();
a[i]=c%10; }
s+=a[i];
c=(c-a[i])/10; int fuc(int n){
i+=1; if(n==0) return 1;
} while(c>=1); else return n*fuc(n-1);
}
void somefunc()
{
int somevar;
float othervar;
//коммандууд
}
Ажиллах
Функц Бүхэл программ Бүхэл программ
хугацаа