Saturday, March 17, 2012

Өмнөх нөхцөлт давталт


Өмнөх нөхцөлт давталт нь дараах хэлбэртэй байна. 

while (давталтыг төгсгөх нөхцөл)
{

үйлдэл1;

үйлдэл2;

...

үйлдэлN;

}

Төгсгөх нөхцөлийг шалгаж эхэлж байгаа учир түүн доторхи хувьсагч давталт эхлэхээс өмнө ямар нэгэн утга авсан байна.

Жишээлбэл үйлдлийг n удаа давтаад зогсох бол 

int a=0

while(a<=n)

{

үйлдлүүд;

a++;

}

хэлбэртэй байна.

Үүнийг ашиглан жишээ болгож Фибоначчийн дарааллын эхний N гишүүнийг хэвлэх програм бичье.


Фибоначчийн дараалал нь 1, 1-ээр эхлэн 1, 1, 2, 3, 5, 8... гэх мэтчилэн гишүүн бүр нь өмнөх 2 гишүүний нийлбэрээр илэрхийлэгддэг натурал тоон дараалал юм. 



Эхний гишүүнийг 0, дараагийхыг 1 гэж үзээд 0, 1, 1, 2, 3, 5...-ийн эхний гишүүнийг алгасан хэвлэнэ. int last=1 зарласан ба printf("%d",last) гэсэн учир бидний програм зөв ажиллаж чадна. 


#include "stdio.h"

main
()

{

int
 n

int 
c=1

int 
next=0;
 // Дараагийн гишүүнийг гаргах нэмэгдэхүүнүүдийн эхний нэмэгдэхүүнийг 0 гэж сэтгэе. 
int
 last=1; 
// 2 дах нэмэгдэхүүнийг 1 гэж үзье.
int 
sum; 
// 2 гишүүнийг нэмж гарсан нийлбэрийг тэмдэглэе. 
scanf 
("%d",&n); 
//гараас N тоог авна. 
while
 (c<=n) 
// с тоог 1-ээс эхлэн нэмэгдүүлэх буюу дарааллын дараалсан 2 гишүүнийг нэмж дараагийн гишүүнийг гаргах үйлдэл n-1 хийгдэнэ гэсэн үг.
{

printf
("%d ",last)
// Нэмэх үйлдэл хийж гаргасан гишүүдийг хэвлэх үйлдэл 
sum=next+last;
 //Өмнөх 2 гишүүнийг нэмж дараагтийн гишүүнийг гаргана. 
next=last
//Өмнөх үйлдэл хийхэд оролцсон сүүлчийн гишүүнийг дараагийн үйлдлийн эхний нэмэгдэхүүн гэж үзнэ. 
last=sum;
 
//Түрүүчийн үйлдлийг хийгээд гарсан үр дүнг дараагийн үйлдлийн 2 дахь нэмэгдэхүүн болгон санах ойд хадгална. 
c
++; 
//Хэдэн удаа үйлдэл хийхийг заах үйлдэл. Өмнөх нөхцөл шалгахдаа c<=n гэж зааж өгсөн
}

}
Жишээ нь:
Оролт:
6
Гаралт:
1 1 2 3 5 8

No comments:

Post a Comment