Friday, December 5, 2008

Нэг хэмжээст массивийн хэрэглээ

SPOJ-ын бодлогын архив2889.
Орлуулга
Бодлогын дугаар: ABR0632


a1, ..., an, p болон k натурал тоонууд өгөгдөв (a1 ≤ a2 ≤ ... ≤ an, k ≤ n ≤ 2000). a1,..., an дарааллаас k дугаартай элементийг (өөрөөр хэлбэл ak) устгаж, эрэмбийг нь алдагдуулахгүйгээр p гэсэн утгатай элементийг нэм.

Input

Эхний мөрөнд n, k, p тоонууд зайгаар тусгаарлагдан өгөгдөнө. Дараагийн мөрөнд a1, ..., an тоонууд зайгаар тусгаарлагдан байрлана.

Output

Зохих хувиргалтууд хийгдсэн a1, ..., an тоонуудыг зайгаар тусгаарлан нэг мөрөнд хэвлэнэ.

Example

Input:

7 2 6
1 2 3 4 5 7 7

Output:
1 3 4 5 6 7 7

Энэ бодлогын шийдэл нь k дугаартай элементэд р гэсэн утгыг оноож үүссэн n элемэнт бүхий массиваа эрэмбэлэх явдал болно. Харин k дугаар элемэнтэд p утгыг оноохдоо массивийг 0 - ээс эхлэн дугаарладагийг мартаж болохгүй.

1.#include <stdio.h>
2.main()
3.{
4. int n,p,k;
5. int a[2000];
6. int i,j,r;
7. scanf("%d%d%d",&n,&k,&p);
8. for(int q=0; q<n; q++)
9. {
10. scanf("%d",&a[q]);
11. if(q==(k-1)) a[q]=p;
12. }
13.
14. for(i=1;i<n;i++)
15. { j=i;
16. while(j>0 && a[j-1]>a[j])
17.
18. {
19. r=a[j];
20. a[j]=a[j-1];
21. a[j-1]=r;
22. j--;
23. }
24. }
25. for(int w=0; w<n; w++)
26. printf("%d ",a[w]);
27.
28. return 0;
29.}

Хоёр хэмжээст массивийн хэрэглээ

SPOJ-ын бодлогын архив2797.
Жимс
Бодлогын дугаар: CODE0004

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


InputN:

Эхний мөр нийт шилжилтийн тоо. a(i,j), 1 < = j < = i < = N Чулуу болгон дээр байгаа жимсний тоо 0 < = N, a(i,j) <= 200,


Output


Цуглуулж чадах хамгийн их жимсний тоо



Example


Input:


3

0

3 1

1 2 2


Output:

5


Шийдэл: Эхлээд N-1 дэх мөрийг авч үзье. Тэгвэл a[n-1,i] дээр max(a[n,i],a[n,i+1]) ийг нэмье.Дараа нь N-2 дэх мөрийг авч мөн уг үйлдлийг хийнэ. Энэ алхмыг үргэлжлүүлсээр 1 дэх мөр хүртэл хийнэ. Ингээд a[1,1] нь анхны бодлогын хариу болно.



#include "stdio.h"
main()
{
int n,i,j;
int a[90][90]={0};
scanf("%d",&n);
for(i=0; i<n; i++)
{
for(j=0; j<=i; j++)
scanf("%d",&a[i][j]);
}

for(i=n-2; i>=0; i--)
{
for(j=0; j<=n-2; j++)
if(a[i+1][j]>a[i+1][j+1]) a[i][j]+=a[i+1][j];
else a[i][j]+=a[i+1][j+1];
}
printf("%d",a[0][0]);
return 0;
}

Бодлогын эх сурвалж:
Програмчлал, Алгоритм сонирхогчдод зориулав
Чимэдээ ахын бодлогын сайт
Шийдлийг: Кодер.МН блог

Saturday, November 22, 2008

Шөнийн галт тэрэг - Цагаан өнгөт асар

Шөнийн галт тэрэг - Зөөлөн

Татар - Эрх чөлөө

Татар - Жаргалтай хосууд

Wednesday, November 12, 2008

Mahru Humanoid robot - Videos

Сарын өмнө нь Солонгосчуудын бүтээсэн Humanoid robot болох Marhu-гийн талаар бичиж байсан билээ. Харин одоо Marhu роботын үйлдэл хийж байгаа видеог YouTube-ээс тавилаа.



Sunday, November 9, 2008

Linkin Park - From The Inside

Sunday, November 2, 2008

C хэлэнд хийх үйлдлүүдийн эрэмбэ

Доор бичигдсэн үйлдлүүд эхэлж бичигдсэнээсээ эхлэн өндөр эрэмбэтэй буюу түрүүлж биелнэ. (Математикийн арифметик илэрхийллийн үржих, хуваах үйлдлийг нэмэх, хасах үйлдлээс түрүүлж хийдэг шиг)


Үйлдэл
Унар
!, ++, --, -
Арифметик
*, /, %
+, -
Харьцуулах
<, >, <=, >=
==, !=
Логик
&&
Нөхцөлт
?:
Утга оноох
=, +=, -=, *=, /=, %=

Windows 7 шинэ үйлдлийн системийн сураг дуулдлаа

Анх 2005 оны сүүлээр сүр дуулиантайгаар туршилтын хувилбараа гаргаж байсан Windows Vista үйлдлийн систем худалдаанд гарснаасаа хойш компьтер хэрэглэгчдийн дунд хамгийн багадаа 1 GB RAM гэх мэт өндөр үзүүлэлттэй компьютер шаардагддэг гэсэн шалтгаанаас болж хэрэглээнд төдийлөн өргөнөөр нэвтэрч чадаагүй билээ. Хуучин ХР хэрэглэгчдийн 90 гаруй хувь нь энэ шалтгаанаар Vista-г хэрэглэхээс татгалзсан гэнэ. (Би ч гэсэн энэ 90 хувьд нь ороод л явж байгаа юм байна.)

Харин Microsoft корпраци бүхий л тоног төхөөрөмжүүдтэй харьцахад хялбар байх шийдэлтэйгээр Windows 7 хэмээх дараачийн үйлдлийн системээ хөгжүүлж байгаа бөгөөд ирэх оны эхээр туршилтын хувилбараа гаргахаар зэхэж байгаа гэнэ.

Windows 7 үйлдлийн систем хэрэглээнд нэвтэрч, хэрэглэгч биднээс ямар дүгнэлт авахыг хараад байж дээ.

Мэдээллийн эх сурвалж: http://www.msnbc.msn.com/

Monday, October 27, 2008

The Beatles - Yesterday


Yesterday
All my troubles seemed so far away
Now it looks as though they're here to stay
Oh, I believe
In yesterday

Suddenly
I'm not half the man I used to be
There's a shadow hanging over me
Oh, yesterday
Came suddenly

Why she
Had to go I don't know
She wouldn't say
I said
Something wrong now I long
For yesterday

Yesterday
Love was such an easy game to play
Now I need a place to hide away
Oh, I believe
In yesterday

Why she
Had to go I don't know
She wouldn't say
I said
Something wrong now I long
For yesterday

Yesterday
Love was such an easy game to play
Now I need a place to hide away
Oh, I believe
In yesterday

(hum to "I believe in yesterday")

John Lennon - Imagine


imagine there's no heaven
it's easy if you try
no hell below us
above us only sky
imagine all the people
living for today...

imagine there's no countries
it isn't hard to do
nothing to kill or die for
and no religon too
imagine all the people
living life in peace...

imagine no possesions
iwonder if you can
no need for greed or hunger
in a brotherhood of man
imagine all the people
sharing all the world...

you may say i'm a dreamer
but i'm not the only one
i hope some day you'll join us
and the world will be as one

Moonlight Sonata

Онч мэргэн үгс

Хэрэв амьдралд хайртай бол цагийг дэмий бүү үр. Амьдрал гэдэг цагийн хэлхээ юм.

Бенжамин Франклин


Жинхэнэ мэдлэгийн эх булаг нь баримтууд байдаг.

Ф. Бауст


Хүнийг зөвхөн төрөлхийн төдийгүй олдмол зан чанарууд тодорхойлж байдаг.

Гёте


Шунал тачаалыг захирч сур, тэгэхгүй бол тэр чамайг эзэмдэнэ.

Эпиктет


Огт юу ч мэдэхгүй байх нь тийм ч айхтар хортой зүйл биш. Харин дулимаг эзэмшсэн мэдлэг түүнээс ч дор.

Платон


Мэргэдийн үйлс ухаанаар, арай бага сэтгэдэг хүмүүсийх туршлагаар, хамгийн муу сэтгэдэг хүмүүсийх хэрэгцээгээр, амьтдых байгалиар сэдээгдэж байдаг.

Цицерон


Чиний санааг зовоогоод байгаа эд юмст хандах хандлагаа өөрчил. Тэгвэл чи тэднээс айх аюулгүй болно.

Марк Аврелий


Аливааг хүч чапдаар бус ухаанаар зохицуулна.
Бүх зүйл ертөнц дээр ажил хөдөлмөр, зориг хүчний өмнө сөхөрнө.

Вольтер


Хийж дуусгаагүй бол юу ч хийгээгүйтэй адил. Ямар нэг зүйл хийвэл хийсэн шиг хий. Чадахгүй, эсвэл сайн хийхийг үл хүсвэл огт хийгээгүй нь дээр.

Л. Толстой


Хүний суу билэг өөрийх нь гарт бий. Сэлж сурахын тулд ус руу үсрэх хэрэгтэй. Ухаанд үнэ цэнэ гэж үгүй, хүмүүжилд хязгаар гэж үгүй.


Ухаантай байхыг хүсвэл ухаалаг асуулт тавьж, анхааралтай сонсч, тайван хариулж, хэлэх ярих зүйлгүй бол дууруй бай.

Лафатер


Юуг ч маргааш гэж бүү хойшлуул. Энэ нь цаг хугацааны үнэ цэнийг мэддэг хүний давуу тал юм.

Э. Лабуле


Өөрийгөө ялан дийлэхээс бүхий л ялалт эхэлнэ.

Л. Монов


Зан чанар гэдэг нь зарчмын дагуу ажиллах чадвар юм.

Л. Кант


Уурандаа хэлсэх зүйл ичиж дуусдаг.

Л. Толстой


Зоригтны талд дандаа аз жаргал ирдэг.

Багриатон


Хулчгар зан дайснаас ч аймшигтай... Дайснаас болгоомжилж явдаг бол найздаа итгэж байдаг.

Л. Толстой


Бид яг юу хийхийг хүсч байгаагаа мэддэг сэн бол бидний туйлын хүсэл тийм ч их байхгүй сэн.


Хамгийн том нүгэл - Айдас
Хамгийн сайн өдөр - Өнөөдөр
Хамгийн сайхан хот - Чиний ажиллаж, амьдарч буй газар
Хамгийн сайн амралт - Ажил
Хамгийн том алдаа - Итгэл алдах
Хамгийн айхтар сул тал - Үзэн ядалт
Амар тайвныг алдуулалч хамгийн хэцүү хүн - Чалчигч
Хамгийн тэнэг зан - Биеэ тоох
Хамгийн аюултай хүн - Худалч
Хамгийн их хэрэгцээ - Хоорондын харьцаа
Хамгийн том баялаг - Эрүүл мэнд
Бусдад өгч бусдаас авч чадах хамгийн том өглөг - Хайр сэтгэл
Хамгийн сайн, хамгийн дотно нөхөр - Сайн ном
Чиний дайснууд - Атаархал, шунал, бусдын сул талыг тагнах, өөрийгөө өрөвдөх явдал.
Хамгийн үзэн ядах зүйл - Харгислал, хэрцгийлэл.
Хамгийн зэвүүн зан чанар - Ихэмсэг яравгар зан
Чамд саад болох хамгийн том сул тал - Мэдлэггүй сул дорой байх
Хамгийн ухаантай хүн - Хийх ёстой зүйлээ ямагт хийдэг хүн

Энэ дүрмийг баримталсан хүн ухаантай болж чадна.

Пол Брен


Хүний аз жаргал, гай тотгор өөрийх нь ааш төрх, хувь заяанаас адилхан хамааралтай.
Хувь заяаныхаа илгээсэн бүхнийг бид сэтгэлийн хөдөлгөөнөөс хамааран янз бүрээр үнэлж цэгнэдэг:
Үзэн ядалтыг үүсгэсан хүн л зөвхөн үүнээсээ айдаг.
Үхэгсдийн нэгэн адил бид бүгдээрээ айдаг гэсэн атлаа мөнхийн юм шиг аяглаж, юм бүхнийг хүсдэг.
Мэдлэгийн хүрээнээсээ хальж гарсан зүйлд итгэхэд бэрх.
Өөртөө итгэж чадвал бусдад итгэнэ.
Хувь заяаг эрүүл мэндийн адил авч үзэх нь зүй.
Хувь тохиол ивээвэл - баясан жаргаж, хувь тохиол аашилбал - тэвчин хүлээж, онцын шаардлагагүй бол яаран хүч хэрэглэх гэсний хэрэггүй.
Сайн хүн болохын тулд хувь заяаныхаа төөргийг урлагтай ашиглаж сур.
Бага зүйлд хэт махруу хүн агуу зүйлд голдуу чадваргүй байдаг.
Хүний сайн талыг түүний сайн чанараар нь бус, харин тэр яаж сайн чанараа ашиглаж байгаагаар нь цэгнэх ёстой.
Бид өөрсдөө дутагдалгүй ариухан байсан бол бусдын дутагдлыг олж харах тийм ч таатай байхгүй байх байсан.
Ам хэлээрээ бус ажил үйлсээрээ шамд.
Зөрүүд зан - Тэнэгүүдийн хаяг.
Залуур хатуу чанга гарт байвал завь ямар ч ширүүн салхийг тэснэ.
Махран зүтгэх нь амжилтын нөхөр, сүүдэр.
Уулыг чулуу, хүнийг толгой чимнэ.
Хүний чаддаг бүх зүйл ердөө л тэвчээр, цаг хугацааны нийлэмж юм.

Бальзак


Хэн ч чамайг гомдоогоогүй мэт бусдыг хүндэл.
Хэн ч чамайг хараагүй байна гэж бодоод бүжиглэ.
Хэн ч чамайг сонсоогүй мэт дуул.


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


Хэрэв чи хангалттай гэлгүйгээр улам ихийг мэдэхгүй байвал хэзээ ч хангаттай мэдлэгтэй болохгүй.

У. Блэйк


Гавьяа гэдэг бол өндөр зорилгод тэмүүлсний шан мөн.

Фирдоуси


Чи мэдлэгийн ачаар л маш их зоригтой, ажил үйлс бүртээ төгс төгөлдөр байх болно.

А. Дюрер


Хүний чин зорилго амьд явахдаа бус, амьдрахдаа буй.

Жек Лондон



Урлаг - Бодит байдлыг дүрслэн, угтаа цоо шинээр бүтээсэн ертөнц мөн.

В. Г. Белинский


Хамгийн эрхэм дээд гавьяа гэж хүмүүс олон гэрчийн нүдэн дээр л хийж зүрхэлдэг зүйлийг ганцаархнаа байхдаа бүтээхийн хэлнэ.

Ларошфуко


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

Хун Ци Чен


Ганц ганцаар хийж хүчрэхгүй зүйлийг хүмүүс хамтдаа бүтээж чаддаг. Хүч ухаанаа нэгтгэчих юм бол тэд бараг л бүхнийг чадагчид болно.

Даниэл Уибстер


Хичнээн хүсээд ч чи өөрийхөө амьдралыг хүн төрөлхтнөөс тусгаарлаж чадахгүй. Чи түүний дотор, түүний тулд амьдрч яваа. Нэг гар нөгөө гартаал, нэг хөл нөгөө хөлдөө, толгой эрүүндээ тус дэм болдог шиг хүн хүндээ тус болж явахын тулд төрдөг юм.

Марк Аврелий


Аугаа ихэд тэмүүлэгчид ихэнхдээ муу хүмүүс байдаг. Өөдгүй байх нь өөрөө өөрийгөө тэвчих цорын ганц арга юм.

Ницше


Хэний зүрх олны төлөө цохилно, тэр үнэхээр агуу.

Ромен Роллан


Найз нөхөд маань биднии сайн талыг үнэлэхийн зэрэгцээ дутагдлуудыг маань анзаараад байх юм бол бид тэдний тухайд сэтгэл дундуур болчихдоог.

Воверанг


Өөрийхөө тухай хэзээ ч муугаар битгий ярь, найз нөхөд чинь чамайг хангалттай муулж байгаа.

Шарль Талейран


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

Самуэль Жонсон


Хүний сэтгэл үхэх хүртлээ хөгждөг.

Гиппоркрат


Байгалиас заяасан үлэмж их авьяастай хүнийг боловсролтой гэдэггүй. Харин мэдэж байгаа бүхнээ ухаалаг, зөв, байж болох хамгийн их ашиг тустайгаар бүтээж байгаа, өөрийх нь мэдлэгт юу дутуу байгааг харж чаддаг хүнийг боловсролтой хүн гэнэ.

Иохим Рахэл


Тогтсон үзэлгүй бол хамгийн зоригтой хүн ч хулчгар болж хувирдаг.

Эжин Делакруа

Бидний нүдэнд эд юмс бус, тэдгээрийн дүр хэлбэр нь тусдаг шиг бидний сэтгэлд ажил хэрэг, үйл явдлуу бус тэдгээрийн тухай сэтгэгдэл л үлддэг.

Антуан Ривароли


Нэгэнт хэлэгдсэн үгийг тухайн байдалд нийцүүлэхээс цоо шинэ зүйл хэлэх нь амархан.

Воверанг


Өөрийн гэсэн үзэл бодолтой байхаас илүү тэр бодлоо бусдад хүргэхэд илүү ухаан шаардагддаг.

Клод Гелвеций


Машины талаар юу ч мэдэхгүй хүн л шалтгаангүйгээр оролдоно. Оюун ухааны талаар ямар ч ойлголтгүй хүн л нэгэнт тогтсон, маргашгүй үндсүүдийн үл тоомсорлох мөртлөө бясалгах гэж санаархана.

Гилберт Честертон


Бидний мэдэх зүйл маань хязгаартай, харийн мэдэхгүй зүйл маань хязгааргүй.

Пьер Лаплас


Үг цөөн байх тусам жинтэй байдаг.

У. Шекспир


Хэрэв сул талаа мэдэж байвал тэд бидэнд гай тарьдаггүй.

Лихтенбург


Өөрийг чинь магтаж, өрөөл бусдыг муулагчдыг бүү сонс.

Л. Толстой


Гарах гарцгүй манан гэж үгүй. Хамгийг гол нь биеэ захирч урагш алх.

Жан дэ Лабрюер


Бага мэддэгээ ухаарахы тулд маш их суралцах хэрэгтэй.

Монтен


Бэрхшээл зарим хүмүүсийн нурууг авч, зарим хүмүүсийг ялан дийлэгч болгодог.

Полибиус


Аймхай хүний сэтгэлд жаргалын зай байдаггүй.

Сервантес


Гоо үзэсгэлэн шүүдэр мэт богино настай.

Чарьз Швад


Сагсуу ойворгон хүн муу хүнээс ч долоон дор. Муу хүн дайснууд руугаа халддаг бол сагсуу хүн дайсандаа ч, нөхөддөө ч хор учруулдаг.

Жозеф Аддисон


Хүн өөрийгөө хэрхэн үнэлж цэгнэнэ. Түүний үнэ цэнэ нь яг тийм байдаг.

Франсуа Рабле


Хорвоо дэлхий сайн хүмүүсээр дүүрэн. Гэвч үүнийг чи зовлонд учирч байж л анзаарна. Энэ бол амьдралын хүнд хэцүү мөчүүдийн хариуд авч буй нэг ёсны тэтгэлэг юм.

Л. Толстой


Хэн нэгэн тодорхой байх гэж оролдохдоо хэтэрхий зөрүүд байх хэрэггүй. Хамгийн чухал зүйл бол гадаад байдал биш, чин сэтгэл.

Сума Чин Хай


Чи амьдралын туршлага суусан бол цаг зав чинь урлагт зориулагдана. Харин туршлага суугаагүй бол аар саархан тохиолдлууд дунд л өнгөрнө.

Платон


Танигдаагүй нууцлаг зүйлстийг эрж хайж байх явцдаа бид "Нэгэнт мэдэхгүй байгаа зүйлийг хайх шаардлагагүй, хайгаад ч яах юм бэ" гэж бодож байгаа хүмүүсээс зоригтой, бүтээлч болдог.

Платон


Ямар ч ажилд сайхан муухай гэж байдаггүй. Тухайн ажил сайн, зөв хийгдэж байвал тэр сайхан болно.

Платон


Эд хөрөнгө, алдар хүнд гэдэг хүнд ямар ч сайн чанар нэмдэггүй.

Сократ


Залуу хүмүүс өдөр бүр толинд харж байх ёстой. Сайхан харагдаж байгаа бол тэр гоо сайхнаа илүү явдлаар гутаахгүйг хичээ. Царай муутай харагдаж байгаа байвал тэр үзэмж дорой байдлаа зөв хүмүүжлээр засч чимэх хэрэгтэй.

Сократ


Хэдийгээр бүх юм аар саархнаас эхэлдэг боловч юмыг зөв эхэлнэ гэдэг яавч аар саар ажил биш.

Сократ


Өөдрөг үзэлтнүүд онгоц хийдэг бол гутранги үзэлтнүүд шүхэр хийдэг.

Фортен


Хорвоо ертөнцийн захирахаасаа өмнө өөрийгөөр захирч сур.

Сан Мён Мүүн


Ялагдал чухал биш, ялагдаад сэргэж босох нь чухал.

Винс Ломбарди


Өдөр тутмын хөдөлмөрт дассан хүмүүс хичнээн сул дорой, өтөл хөгшин байсан ч ажил хийж сураагүй, хүч чадалтай залуусаас илүү амьдрах чадвар сайтай.

Гиппократ


Атаархал үргэлж сэтгэлийг дундуур байлгадаг. Өөрсдийн чинь бүтэлгүйтэл, бусдын амжилт та бүхний шаналан, зовлон.

Аль Фараже


Агуу их хэрэг ам тангараггүйгээр л бүтдэг.

Пифагор


Уран сэтгэмж мэдлэгээс чухал.

Алберт Эйнштейн


Бид өөрсдийн ихэнх алдааг бусад хүмүүс хийж буй үед таниж мэддэг бөгөөд сая тэр үед л тэдгээр алдааг хаяж орхидог юм.

Карл Гутикоо


Сониуч биш хүн юу ч сурч мэдэхгүй.

Гёте


Хялбархан эхлэлийг бодвол хэцүү эхлэл арав дахин буян болдог.

Зигмунд Графф


Ихэнх хүмүүс ямар нэгэн асуудлыг барьж авахаасаа илүү түүний талаар ярихад их цаг зарцуулдаг.

Генри Форд


Хүн өөрийн авьяас чадлаар амьдардаг. Тэрбээр олон, маш олон янзын хүчийг эзэмшдэг. Эдгээр хүчийг ихэнх нөхцөлд огт дайчилдаггүй.

Дейл Карнеги


Залхуу хүн муухай үнэртэй ялзмаг ялгаруулдаг намгийн хөшүүн устай ав адилхан.

М. Ломоносов

Wednesday, October 22, 2008

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

Өмнөх нөхцөлт давталт нь дараах хэлбэртэй байна.
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

Дараах нөхцөлт давталт

do
{
үйлдлүүд;
}
while(Нөхцөл);

Бидний авах жишээ гараас хоёр тоог авч, тэдгээрийн ноогдвор, үлдэгдэлийг гаргасаны дараа ахин энэ үйлдлүүдийг давтах эсэх талаар нөхцөл шалгана. Гараас 1 оруулбал ахин давтана, 0-ийг оруулбал давталт зогсоно.

#include
main()

{
int x;
int m,n;

do

{

printf("huvaagdagch:\n"); scanf("%d",&m);

printf("huvaagch:"); scanf("%d",&n);

printf("noogdvor: %d \n",(m/n));

printf("uldegdel: %d \n",(m%n));

printf("urgeljluuleh uu ? (Tiim bol 1/ ugui bol 0)\n"); scanf("%d",&x);

}

while (x!=0);

}


Жишээ нь:
huvaagdagch: 16
huvaagch: 5
noogdvor: 3
uldegdel: 1
urgeljluuleh uu ? (Tiim bol 1/ ugui bol 0) 1
huvaagdagch: 97
huvaagch: 20
noogdvor: 4
uldegdel: 17
urgeljluuleh uu ? (Tiim bol 1/ ugui bol 0) 0

Тооллын систем

Тодорхойлолт: Тоог дүрсэлж бичих болон тоон дээр хийх үйлдэл хийх дүрмүүдийн системийг тооллын систем гэнэ.
2-тын тооллын систем дэх тооны төгсгөлд В (binary буюу 2 гэсэн үгийн товчлол)

8-тын тооллын системийн тооны төгсгөлд О (octa)
16-тын тооны төгсгөлд Н (hexa)


Бидний авсан жишээгээр 35 = 100011В гэж гарсан.
35 = 2^5+2^1+2^0=100000 B + 10 B+ 1 B = 100011 B

Харин 2-тын тооллын системээс 10-тын тооллын системд шилжүүлэхэд 2-тын тооны эхний цифрээс эхлэн тухайн цифрийг түүний ард хэдэн орон байгаа, тийм удаа 2-ыг зэрэг дэвшүүлэн үржүүлж нэмнэ.
Жишээ нь: 101011011 B = 1*2^8 + 0*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 256 + 64 + 16 + 8 + 2 + 1 = 347

2-тын тооллын системээс 16-т руу, 16-таас 2-т руу эсвэл 2-тоос 8-т, 8-таас 2-т руу шилжүүлэхэд доорхи хүснэгнийг ашиглан шилжүүлж болно.

2-тоос 16-т руу шилжүүлэхдээ сүүлээс нь 4, 4 оронгоор нь тасалж, түүнд харгалзах утгуудыг залгаж бичнэ. Жишээ нь: 100 ' 1111 ' 0110 B = Н 4F6 16-таас 2-т руу шилжүүлэхдээ цифрүүдэд харгалзах 4, 4 оронгуудыг залгаж бичнэ. Жишээ нь: Н 3F7 = 11 ' 1111 ' 0111
2-тоос 8-т руу 10 ' 111' 110 = 276 O
8-таас 2-т руу 345 = 11 ' 100 ' 101

Saturday, October 18, 2008

TIME.H толгой файлын функцууд

С хэлний time.h толгой файлын зарим сонирхолтой функцуудын үүргүүдийн тайлбарыг жишээ коднуудын хамт найзууддаа хүргэж байна. Та бүхэнд таалагдах болно гэдэгт итгэж байна.

asctime(), ctime() : Системийн цаг, огноог тэмдэгт мөр болгон хэвлэнэ.

char * asctime ( const struct tm * ptr_time );

Хувьсагч Yag_odoo нь системийн цаг, огноог заана.

Буцаах утга:
Системийн цаг, огнооны талаарх мэдээллийг шинэ мөрөнд хэвлэнэ.

Он сар өдөр, цагийн формат: www mmm dd hh:mm:ss yyyy

www = Гариг.
Mmm = Сар.
dd = Өдөр.
hh:mm:ss = Цаг, Минут, Секунд.
yyyy = Он.


asctime() Хэрэглэсэн жишээ:

#include "stdio.h"
#include "time.h"

int main ()
{
time_t time_raw_format;
struct tm * Yag_odoo;

time ( &time_raw_format);
Yag_odoo = localtime ( &time_raw_format );
printf ( "On sar odor tsag : %s", asctime(Yag_odoo));

return 0;
}

Гаралт:

On sar odor tsag: Sat Oct 18 20:23:51 2008

ctime() Хэрэглэх жишээ:

#include "stdio.h"
#include "time.h"
int main ()
{
time_t time_raw_format;

time ( &time_raw_format );
printf ( "On sar odor tsag: %s", ctime(&time_raw_format));

return 0;
}



Гаралт:

On sar odor tsag: Sat Oct 18 20:35:51 2008

gmtime(): Системийн цагаас UTC(Universal Coordinate Time) рүү хөрвүүлнэ.
(Universal Coordinate Time - Лондон хотын Грийнвичийн голдоч дээр одоо цаг хэд болж байгааг хэвлэнэ. Хэрвээ Лондоны цагтай таарахгүй байвал та системийн цагаа тааруулахдаа цагийн бүсээ буруу сонгосон байна гэсэн үг.)

gmtime() Хэрэглэсэн жишээ:

#include "stdio.h"
#include "time.h"
int main(void)
{
time_t time_raw_format;
time(&time_raw_format);
printf ("Tsag: %s\n",
asctime(gmtime(&time_raw_format)));
return 0;
}

Гаралт:

Tsag: Sun Oct 19 01:11:50 2008

clock(): Цаг хугацааг хэмжинэ.
(Энгийнээр тайлбарлавал та бид өөрийн хүссэнээр дурын хугацаатай элсэн цагийг програмчилж болох нь ээ)


Жишээ:

#include "stdio.h"
#include "time.h"

void sec_wait ( int sec )
{
clock_t wait_till_end;
wait_till_end = clock () + sec * CLOCKS_PER_SEC ;
while (clock() <>
}

int main ()
{
int i;

printf ("Tsag ehellee...\n");
for (i=10; i>0; i--)
{
printf ("%d\n",i);
sec_wait (1);
if ( i == 3 )
printf ("Anhaar!!!...\n");
}
printf ("Tsag duuslaa...\n");
return 0;
}

Гаралт:

Tsag ehellee...
10
9
8
7
6
5
4
3
Anhaar!!!...
2
1
Tsag duuslaa...

difftime(): Програм ажиллаад хэр удсаныг олно.

Энэ жишээнд та нэрээ хэр хурдан бичиж байгааг тодорхойлно

#include "stdio.h"
#include "time.h"
int main ()
{
time_t time1,time2;
char get_input [256];
double dif_sec;

time (&time1);
printf ("Tanii ner? ");
gets (get_input);
time (&time2);
dif_sec = difftime (time2,time1);

printf ("Ta neree bichihed %.2lf second zartsuullaa.\n", dif_sec );

return 0;
}

Гаралт:

Tanii ner? Ganaa
Ta neree bichihed 2.00 second zartsuullaa.

Tuesday, October 14, 2008

Шинээр бүтээгдсэн хүн дүрст робот-Mahru


Энэ сарын 13нд дэлхий дахины сонирхлыг татсан мэдэгдлийг Солонгосын Шинжлэх Ухаан Технологийн зохион бүтээгчид хийсэн нь Mahru хэмээх бүжигчин робот юм.
Mahru нь юугаараа бусад роботоос онцлог болсон нэг зүйл гэвэл дуу чимээ, үнэр үнэртсэн үед уруул, хөмсгийн хөдөлгөөнөөрөө хариу үйлдэл үзүүлдэг, сэтгэлийн хөдөлгөөнөө илэрхийлж чаддаг ба алхах үед нь түүний гарын хөдөлгөөн нь огтхон ч саад болдоггүй явдал юм.

"Мару бүжиглэж, хүн төрөлхтөнтэй мөр зэрэгцэн ажиллах авьяастай...", "Гэрийн ажил хийдэг humanoid роботууд худалдаанд гарах боломж нээгдлээ" хэмээн төслийг удирдсан багийн ахлагч Юү Бам Жэ мэдэгдсан байна.

Мару нь хүний хөдөлгөөнийг тэмдэглэж аваад дуурайж хөдөлгөөн хийх, түүнд хүрч саад болсон зүйлсийг гараараа өөрөөсөө холдуулах системээр програмчлагдсан ажээ.

Одоо бас Mahru-M роботыг нэмж хийсэн бөгөөд энэ робот нь хүний хүсэлтээр юм авчирч өгч чаддаг болж байгаа гэнэ.

Мэдээллийн эх сурвалж: http://news.yahoo.com

Sunday, October 12, 2008

MATH.H толгой файлын функцууд

Энэ удаа бидний анхны бие даалтад өгч байсан даалгавар болох С хэлний math.h толгой файлын зарим функцуудын гүйцэтгэх үүргүүдийг дэлгэрэнгүй тайлбарлаж өгье.

Жишээ програмууд гараас хувьсагчийг авахгүй, код дээрээ утгыг авсан байгаа гэдгийг анхаараарай. CTRL+F9 дарж ажиллуулсны дараа ALT+F5 дарж үр дүнг харна.

ceil() : Бодит тоон хувьсагчаас их, хамгийн ойр бүхэл тоо

double ceil(double x);

ceil() Хэрэглэсэн жишээ :

#include "stdio.h"
#include "math.h"
main()
{
printf ("2.5-iin ceil %.1lf\n", ceil (2.5));
return 0;
}

Гаралт:
2.5-iin ceil 3


floor() : Хувьсагчаас бага, хамгийн ойр бүхэл тоо

double floor(double x);

floor() ын жишээ:

#include "stdio.h"
#include "math.h"

main()
{
printf ("3.4-iin floor %.1lf\n", floor(3.4));
return 0;
}

Гаралт:
3.4-iin floor 3.0


fmod() : х-ийг у-т хуваахад гарах үлдэгдэл

( Бүхэл тооны хувьд %-ыг ашигладаг боловч үүнийг бодит тоон олонлогт хэрэглэхэд тохиромжтой )

double fmod(double x, double y);

Жишээ нь:
#include "stdio.h"
#include "math.h"
main()
{
printf ("2.5-g 2-t buhleer huvaahad %lf uldene \n", fmod(2.5,2));
return 0;
}

Гаралт:
2.5-g 2-t buhleer huvaahad 0.500000 uldene

exp() : е тоог өгсөн тоогоор зэрэг дэвшүүлнэ.

double exp(double x);

Жишээ нь:

#include "stdio.h"
#include "math.h"
main()
{
double input, output;
input = 2.0;
output = exp (input);
printf ("e-iin %lf zeregt= %lf.\n", input, output);
return 0;
}

Гаралт:
å-iin 2.000000 zeregt = 7.389056

fabs() : x-ийн абсолют утга(модуль)

double fabs(double x);

fabs()-ийг хэрэглэсэн жишээ:

#include "stdio.h"
#include "math.h"
main()
{
printf ("-3.51-iin absolute utga= %lf\n", fabs(-3.51));
return 0;
}

Гаралт:
-3.51-iin absolute utga=3.510000

frexp() : Өгсөн тооноос их, 2-ын зэрэг болдог тоо ба тэдгээрийн ноогдворыг гаргана.

Миний авсан жишээнд 10-ыг 16 буюу 2^4-д хуваахад 0.625 гарна гэдгийг үзүүлж байна.

double frexp(double x, &int хувьсагч);

Жишээ:

#include "stdio.h"
#include "math.h"
main()
{
double input, output;
int i;
input = 10.0;
output = frexp (input , &i);
printf ("%lf * 2^%d = %f\n", output, i, input);
return 0;
}

Гаралт:
0.625000 * 2^4 = 10.000000

ldexp() : Өгсөн 2 тооны 1-ийг 2-ын зэрэгтээр үржүүлж нөгөө тоог гаргана гэж ойлгож болох юм.

double ldexp(double x, int хувьсагч);

Жишээ нь:

#include "stdio.h"
#include "math.h"
main()
{
double input, output;
int i;
input = 0.50;
i = 2;
output = ldexp (input , i);
printf ("%f * 2^%d = %f\n", input, i, output);
return 0;
}

Гаралт:
0.500000 * 2^2 = 2.000000

modf() : Өгсөн тооны бүхэл ба бутархай хэсгийг олох функц.

double modf(double x, &integer);

Жишээ нь:

#include "stdio.h"
#include "math.h"
main()
{
double input, fractional_part, integer_part;
input = 3.14159265;
fractionalpart = modf (input , &integerpart);
printf ("%lf = %lf + %lf \n", input, integerpart, fractionalpart);
return 0;
}

Гаралт:
3.141593 = 3.000000 + 0.141593

pow() : Өгсөн 2 тооны нэгийг нөгөөгөөр зэрэг дэвшүүлнэ.

double pow(double x, double y);

pow() хэрэглэх жишээ:

#include "stdio.h"
#include "math.h"
main()
{
printf ("2 ^ 8 = %lf\n", pow (2,8));
return 0;
}

Гаралт:
2 ^ 8 = 256.000000

cosh(), coshl(): гиперболлог косинус

cosh(z)=(exp(z) + exp(-z)) / 2

Жишээ код:
#include "stdio.h"
#include "math.h"

main()
{
double x = 0.5;

printf("%lf-iin hyperbolic cosinus = %lf\n", x, cosh(x));
return 0;
}

Гаралт:

0.500000-iin hyperbolic cosinus = 1.127626


sinh(), sinhl()-гиперболлог синус
sinh(z)=(exp(z) - exp(-z)) / 2

Жишээ код:
#include "stdio.h"
#include "math.h"

main()
{
double x = 0.5;

printf("%lf-iin hyperbolic sinus = %lf\n", x, sinh(x));
return 0;
}

Гаралт:

0.500000-iin hyperbolic cosinus = 0.521095


tanh(), tanhl(): гиперболлог тангенс

tanh(z)=sinh(z) / cosh(z)

Жишээ код:
#include "stdio.h"
#include "math.h"

main()
{
double x = 0.5;

printf("%lf-iin hyperbolic tangens = %lf\n", x, cosh(x));
return 0;
}

Гаралт:

0.500000-iin hyperbolic tangens = 0.462117


hypot, hypotl - 2 катетын тусламжтай гипотенузыг олох функц


#include "stdio.h"
#include "math.h"

main()
{
double x = 3.0;
double y = 4.0;

printf("hypotenuse = %lf\n", hypot(x,y));

return 0;
}


hypotenuse = 5.000000


asin, asinl, acos, acosl, atan, atanl, atan2, atan2l - радианаар өгсөн өнцгийн арксинус, арккосинус, арктангенсийг олно.


Жишээ нь:

#include "stdio.h"
#include "math.h"
main()
{
double x=0.5;
printf("%lf - iin arccocinus %lf \n",x,acos(x));
}

Гаралт:

0.500000- iin arcosinus 1.047198

Жишээ нь:
#include
#include

int main(void)
{
double x = 90, y = 5;

printf("%lf - iin arctangens = %lf\n", (y / x), atan2(y, x));
return 0;
}

Гаралт:
0.055556 -iin arctangens = 0.055499

Saturday, October 11, 2008

Блог

Хүн төрөлхтний түүхийн сүүлийн хагас зуун жилд компьютер, мэдээллийн технологийн хөгжилд гарсан үсрэнгүй дэвшилтэт технологуудын дунд интернет нь хүн төрөлхтний харилцаа холбоо, мэдээллийн хэрэгсэл болж чадсан төдийгүй хэн бүхний өмнө шинэ орон зай, шинэ ертөнцийг нээж өгч чадсаны нэгэн илрэл нь чөлөөт цагаараа блог хөтөлж, өөрийн дотоод ертөнцийг нээж чадсан хүмүүс нэлээдгүй олон болсон явдал билээ.

Блог хөтлөх нь хэний ч хараат бус, хүмүүс өөрсдийн ухамсраараа асар том эрх чөлоог эдлэх боломж, хувийн өмч гэж ойлгож болохоор юм.

Эхлэл

Нэлээд хэдэн жилийн өмнөөс мэдээллийн технологийн мэргэжлийг сонирхож эхэлснээс хойш Эрдэнэ бат багш, Хишгээ ах гээд энэ салбарын мэргэжилтнүүдийн блогоор байнга зочлох болж, өөртөө ч бас нэг блогтой болохоор шийдсэн юм.
Харин энэ жилээс КТМС-д Програм хангамжийн чиглэлээр суралцаж эхэлж байгаа ба энэ чиглэлээр хамт суралцаж байгаа найзуудтайгаа өөрийн үзэж судалсан жаахан зүйлсээ хуваалцмаар санагдлаа.