tag:blogger.com,1999:blog-9180006589712042369.post7109853667947926282..comments2024-03-26T14:00:03.695+06:00Comments on কম্পিউটার প্রোগ্রামিং বই: [প্রোগ্রামিং বইঃ অধ্যায় আট] বাইনারি সার্চ।Tamim Shahriarhttp://www.blogger.com/profile/03476580865735017742noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-9180006589712042369.post-42330516851927371942018-05-21T14:58:33.187+06:002018-05-21T14:58:33.187+06:00#include
int binsrc(int ar[], int mid, int low, i...#include <br />int binsrc(int ar[], int mid, int low, int high, int num);<br />int main()<br />{<br /> int ara[] = {2,3,4,5,8,9,12,22,34,45};<br /> int mid_indx;<br /> int low_indx = 0;<br /> int high_indx = 9;<br /> int num = 657;<br /> int a;<br /><br /><br /> a = binsrc(ara, mid_indx, low_indx, high_indx, num );<br /><br /><br />return 0;<br />}<br /><br />int binsrc(int ar[], int mid, int low, int high, int num){<br /><br /><br /> while(low <= high) {<br /> mid = (low + high)/2;<br /> if( num == ar[mid]) {<br /> break;<br /> }<br /> if( num < ar[mid])<br /> {<br /> high = mid - 1;<br /> }<br /> else{<br /> low = mid + 1;<br /> }<br /><br /> }<br /><br /> if(low > high) {<br /> printf("The element is not found");<br /> }<br /> else {<br /> printf("%d is found in the array. It is the %d th element of the array.\n", ar[mid], mid);<br /><br /> }<br /> return mid;<br /><br />}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />yah got it <3<br />Shayed Hasan Shakibhttps://www.blogger.com/profile/01703221328194012103noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-34149597974609162242017-01-01T05:47:38.573+06:002017-01-01T05:47:38.573+06:00Perhaps, we can use long long int mid_value instea...Perhaps, we can use long long int mid_value instead of using mid_value variable to avoid overflow. Am I right Subeen sir? Anonymoushttps://www.blogger.com/profile/07530862420030109636noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-85140952438646393232016-10-12T13:42:04.149+06:002016-10-12T13:42:04.149+06:00ধরা যাক, কেউ খুব বিশাল একটি অ্যারে ব্যবহার করছে বা...ধরা যাক, কেউ খুব বিশাল একটি অ্যারে ব্যবহার করছে বাইনারি সার্চের জন্য। এখন অ্যারেতে সার্চ করতে গিয়ে যদি এমন হয় যে left ও right-এর যোগফল ইন্টিজারের সর্বোচ্চ সীমা ছাড়িয়ে যায়, তখন ওভারফ্লো হবে। তাই সেই সম্ভাবনা এড়াতে mid_value = left + (right - left) / 2 ব্যবহার করা হয়, কারণ এখানে প্রথমে right - left করে সেটাকে 2 দিয়ে ভাগ করা হচ্ছে, তারপর left-এর সাথে যোগ করা হচ্ছে।<br /><br />Example: ধরা যাক, অ্যারের ইনডেক্স হচ্ছে ইন্টিজার যার সর্বোচ্চ মান হতে পারে 2147483647। এখন আমরা যদি একটি অ্যারেতে বাইনারি সার্চ করি, যেটিতে মোট 2140000003-টি সংখ্যা আছে, আর খুঁজতে খুঁজতে এমন পর্যায়ে আসি যেখানে left এর মান 2140000000, right-এর মান 2140000002, তখন left + right করলে তাদের যোগফল 2147483647-এর চেয়ে বড় হয়ে যাবে এবং ওভারফ্লো হয়ে সেটি একটি নেগেটিভ নাম্বার হয়ে যাবে। আর যদি right - left করি, তাহলে এর মান হয় 2। একে 2 দিয়ে ভাগ করলে ভাগফল 1। তারপরে একে আমরা left-র সাথে যোগ করলে যোগফল 2140000001। কোনো ওভারফ্লো হচ্ছে না। আশা করি বোঝাতে পেরেছি। Tamim Shahriarhttps://www.blogger.com/profile/03476580865735017742noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-69839943770442201082016-07-10T15:43:33.432+06:002016-07-10T15:43:33.432+06:00mid_value=left+((right-left)/2)
উপরের ফর্মুলাটি ...mid_value=left+((right-left)/2) <br />উপরের ফর্মুলাটি মিড ভ্যালু ফাইন্ড আউট করতে বেশ কিছু জায়গায় ব্যবহার করেছে।সেখানে এটিকে ওভারফ্লো যেনো না হয়,সেজন্যে ব্যবহার করেছে বলে বলতেছে।বিষয়টি ঠিক আমি ক্লিয়ার না,কারণ ওভারফ্লো হতে হলে এখানে একটি ভ্যালুকে নেগেটিভ হতে হবে।আমার প্রশ্ন হলো, লেনথ কি কখনো নেগেটিভ হতে পারে? হলেও গণণাটি কিভাবে হবে? অথবা আমার বুঝতে ভুল হলে স্যার একটু ক্লিয়ার করবেন আশা করি। Anonymoushttps://www.blogger.com/profile/01573101413243089031noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-67381525706945338832016-05-02T14:58:31.227+06:002016-05-02T14:58:31.227+06:00+ কেটে + এবং - কেটে - আরেকবার লিখেন। কাজ হবে।+ কেটে + এবং - কেটে - আরেকবার লিখেন। কাজ হবে।Khan.jahan.alihttps://www.blogger.com/profile/12610148302112490843noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-57354647630256255382014-09-21T11:13:27.052+06:002014-09-21T11:13:27.052+06:00সুবিন ভাই,
বাইনারি সার্চ এর আরেকটি ফাংশান লিখলাম ক...সুবিন ভাই,<br />বাইনারি সার্চ এর আরেকটি ফাংশান লিখলাম কেমন হল বলবেন দয়া করে?<br /><br />#include<br />int binary_search(int num, int ara[], int low_index, int high_index)<br />{<br /> int mid_index;<br /> while (low_index <= high_index)<br /> {<br /> mid_index = (low_index + high_index) / 2;<br /> if(num == ara[mid_index])<br /> {<br /> break;<br /> }<br /> if(num > ara[mid_index])<br /> {<br /> low_index = mid_index + 1;<br /> }<br /> else<br /> {<br /> high_index = mid_index -1;<br /> }<br /> }<br /> if(low_index > high_index)<br /> {<br /> return 0;<br /> }<br /> else<br /> {<br /> return mid_index;<br /> }<br />}<br /><br />int main()<br />{<br /> int ara[] ={1, 4, 6, 8, 9, 11, 14, 15, 20, 25, 33, 83, 87, 97, 100, 101};<br /><br /> int num = 97;<br /> int low_index = 0;<br /> int high_index = 15;<br /> int search = binary_search(num, ara, low_index, high_index);<br /> if(search == 0)<br /> {<br /> printf("%d number is not in array", num);<br /> }<br /> else<br /> {<br /> printf("%d is in %d th position in array", num, search);<br /> }<br /> return 0;<br />}<br />ICT Labhttps://www.blogger.com/profile/05578663952264430919noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-40089635640117814802014-09-21T01:21:46.790+06:002014-09-21T01:21:46.790+06:00বাইনারি সার্চ এর ফাংশান লিখলাম , আশা করি ঠিক আছে।
...বাইনারি সার্চ এর ফাংশান লিখলাম , আশা করি ঠিক আছে।<br />ভুল হলে কেউ দয়া করে বলেন<br /><br />#include <br />int binary_search(int ara[], int num, int low_index, int high_index)<br />{<br />int mid_index;<br />while(low_index <= high_index)<br />{<br />mid_index = (low_index + high_index)/2;<br />if(num == ara[mid_index])<br />{<br />break;<br />}<br />if(num < ara[mid_index])<br />{<br />high_index = mid_index -1;<br />}<br />else<br />{<br />low_index = mid_index + 1;<br />}<br />}<br /><br />return mid_index;<br />}<br /><br />int main()<br />{<br />int ara[] = {1, 2, 5, 10, 20, 30, 35, 40, 45, 52, 62, 73, 84, 94, 97, 98};<br />int low_index = 0;<br />int high_index = 15;<br />int num = 30;<br /><br />int mid_index = binary_search(ara, num, low_index, high_index);<br /><br />if(ara[mid_index] == num )<br />{<br />printf("%d is in array and positon is %d", ara[mid_index], mid_index + 1);<br />}<br />else<br />{<br />printf("%d is not in the array", num);<br />}<br /><br />return 0;<br />}ICT Labhttps://www.blogger.com/profile/05578663952264430919noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-55636810560224350902014-05-22T15:42:16.040+06:002014-05-22T15:42:16.040+06:00This program run
#include
int main()
{
i...This program run <br />#include <br /><br /> int main()<br /> {<br /> int ara[] = {1, 4, 6, 8, 9, 11, 14, 15, 20, 25, 33 ,83, 87, 97, 99, 100};<br /> int low_indx = 0;<br /> int high_indx = 15;<br /> int mid_indx;<br /> int num = 97;<br /> while (low_indx <= high_indx)<br /> {<br /> mid_indx = (low_indx + high_indx) / 2;<br /> if (num == ara[mid_indx])<br /> {<br /> break;<br /> }<br /> if (num < ara[mid_indx])<br /> {<br /> high_indx = mid_indx - 1;<br /> }<br /> else<br /> {<br /> low_indx = mid_indx + 1;<br /> }<br /> }<br /> if (low_indx > high_indx) {<br /> printf("%d is not in the array\n", num);<br /> }<br /> else {<br /> printf("%d is found in the array. It is the %d th element of the array.\n", ara[mid_indx], mid_indx);<br /> }<br /> return 0;<br /> }Anonymoushttps://www.blogger.com/profile/17005984482115615086noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-24443388958207361782014-01-28T14:23:33.114+06:002014-01-28T14:23:33.114+06:00replace - to -(minus) .. put , after 33 it has wor...replace - to -(minus) .. put , after 33 it has worked.. Ayatullahhttps://www.blogger.com/profile/13429466853729055943noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-15394765288909939452013-12-09T17:09:02.627+06:002013-12-09T17:09:02.627+06:00The program don't run
#include
int main()
{
...The program don't run<br />#include <br /><br />int main()<br />{<br /> int a[]={1,2,5,4,7,8,9,6,2,11,25,45,87,88,90,91,92,95,97,100};<br /> int n=97;<br /> int m=0,h=19;<br /> int mid=(m+h)/2;<br /> while(m<=h){<br /> if (n==mid){<br /> break;<br /> }<br /> if (nh){<br /> printf("%d not found",n);<br /> }<br /> else{<br /> printf("%d is found,it is the %d th element of ara",a[mid],mid+1) ;<br /> }<br /> return 0;<br />}<br /><br />Where is the mistake?Thank you.Anonymoushttps://www.blogger.com/profile/11989898699317405896noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-34417668459150734072013-02-20T14:00:48.136+06:002013-02-20T14:00:48.136+06:00পোস্টটি পড়ে ভাল লাগলো, আমি মনে করি বাংলাতে আপনি অন...পোস্টটি পড়ে ভাল লাগলো, আমি মনে করি বাংলাতে আপনি অনেক সুন্দর ভাবে বুঝিয়েছেন, ধন্যবাদ...Herohttps://www.blogger.com/profile/08855701501283093882noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-89256176368028061142012-06-01T20:00:58.285+06:002012-06-01T20:00:58.285+06:00this time it's working but not quite properly....this time it's working but not quite properly. Please point out the mistake...<br /><br />#include <br /><br />int b_search(int ara[], int n, int low, int high, int mid)<br />{<br /> while(1){<br /> (low < high);<br /> mid = (low + high) / 2;<br /> if(n == ara[mid]) {<br /> break;<br /> }<br /> if(n < ara[mid]) {<br /> high = mid - 1;<br /> }<br /> else if(n > ara[mid]) {<br /> low = mid + 1;<br /> }<br /> }<br /> if (low > high) {<br /> n != mid;<br /> }<br /> else {<br /> n = mid;<br /> }<br /> return;<br />}<br /><br />int main()<br />{<br /> int ara[] = {2, 4, 6, 8, 9, 11, 14, 15, 20, 25, 33, 83, 87, 97, 99, 100};<br /> int n = 2;<br /> int low = 0;<br /> int high = 15;<br /> int mid;<br /> if (mid = b_search(ara, n, low, high, mid)) {<br /> printf("%d is found in the array. It is the %d th element of array.\n", ara[mid], mid + 1);<br /> }<br /> else {<br /> printf("%d is not in the array\n", n);<br /> }<br /> return 0;<br />}Unjana Knownhttps://www.blogger.com/profile/03196924826063713199noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-25351412890703901422012-06-01T12:03:36.759+06:002012-06-01T12:03:36.759+06:00function for 8.1 is not working. would you please ...function for 8.1 is not working. would you please tell me the reason...<br /><br />#include <br /><br />int binary_search(int ara[], int num, int low_indx, int high_indx, int mid_indx)<br />{<br /> while (low_indx <= high_indx) {<br /> mid_indx = (low_indx + high_indx) / 2;<br /> if (num == ara[mid_indx]) {<br /> break;<br /> }<br /> if (num < ara[mid_indx]) {<br /> high_indx = mid_indx - 1;<br /> }<br /> else {<br /> low_indx = mid_indx + 1;<br /> }<br /> }<br />}<br />int main()<br /><br />{<br /> int ara[] = {1, 4, 6, 8, 9, 11, 14, 15, 20, 25, 33, 83, 87, 97, 99, 100};<br /> int low_indx = 0;<br /> int high_indx = 15;<br /> int mid_indx;<br /> int num = 97;<br /> mid_indx = binary_search(ara, num, low_indx, high_indx, mid_indx);<br /> if (low_indx > high_indx) {<br /> printf("%d is not in the array\n", num);<br /> }<br /> else {<br /> printf("%d is found in the array. It is the %d th element of the array.\n", ara[mid_indx], mid_indx);<br /> }<br /> return 0;<br />}Unjana Knownhttps://www.blogger.com/profile/03196924826063713199noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-79802036210016248542011-12-06T14:53:06.394+06:002011-12-06T14:53:06.394+06:00হ্যাঁ। তবে ব্যবধি শব্দটা আমি ব্যবহার করব না। তাহলে...হ্যাঁ। তবে ব্যবধি শব্দটা আমি ব্যবহার করব না। তাহলে এটা গণিত পাঠ্যবইয়ের মত লাগবে। ব্যবধির ভদ্র কোনো প্রতিশব্দ থাকলে ব্যবহার করা যেত। তার চেয়ে নিম্নসীমা, উচ্চসীমা শব্দগুলোই ভালো। আমি কী বলতে চাচ্ছি সেটা পরিষ্কারভাবেই বোঝা যাচ্ছে ওখানে।Tamim Shahriarhttps://www.blogger.com/profile/03476580865735017742noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-69126949379431671262011-12-06T14:36:00.376+06:002011-12-06T14:36:00.376+06:00না মানে আমি বলতে চাইছিলাম , কথাটা “সংখ্যাটি যে ব্য...না মানে আমি বলতে চাইছিলাম , কথাটা “সংখ্যাটি যে ব্যবধির মধ্যে অবস্থিত সেই ব্যবধির নিম্ন সীমা - উচ্চ সীমা” হবে না ?? :) :)Tiasahttps://www.blogger.com/profile/01243380723013055263noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-12675653535429833002011-12-06T11:17:14.822+06:002011-12-06T11:17:14.822+06:00আগের অংশটুকু পড়া থাকলে তো বোঝা উচিত, না বুঝলে অধ্য...আগের অংশটুকু পড়া থাকলে তো বোঝা উচিত, না বুঝলে অধ্যায়ের শুরু থেকে আবার পড়তে হবে। :)Tamim Shahriarhttps://www.blogger.com/profile/03476580865735017742noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-45204498610282244892011-12-06T10:48:26.970+06:002011-12-06T10:48:26.970+06:00বেয়াদবি মাফ করবেন দাদা , কিন্তু ”শুরুতে আমাদের ...বেয়াদবি মাফ করবেন দাদা , কিন্তু ”শুরুতে আমাদের তিনটি সংখ্যা জানতে হবে, সংখ্যাটির নিম্নসীমা (low), উচ্চসীমা (high) এবং সেই সংখ্যা (N)”….সংখ্যার নিম্ন সীমা – উচ্চ সীমা কি জিনিস বুঝলাম না :) :)Tiasahttps://www.blogger.com/profile/01243380723013055263noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-91673474301924022742011-11-28T09:02:03.556+06:002011-11-28T09:02:03.556+06:00কপি পেস্ট করলে ঝামেলা আছে। নিজে নিজে টাইপ করলে হবে...কপি পেস্ট করলে ঝামেলা আছে। নিজে নিজে টাইপ করলে হবে। :)Tamim Shahriarhttps://www.blogger.com/profile/03476580865735017742noreply@blogger.comtag:blogger.com,1999:blog-9180006589712042369.post-60154133362046880042011-11-28T09:00:18.848+06:002011-11-28T09:00:18.848+06:00আমি ৮.১ এর পুরো কোড টা কপি করে পেস্ট করলাম। কিন্ত...আমি ৮.১ এর পুরো কোড টা কপি করে পেস্ট করলাম। কিন্তু কিছু এররর দেখাচ্ছে।<br />line 4 error: expected '}' before numeric constant<br />line 15 error: stray '\226' in program<br />line 15 error: expected '}' before numeric constantAnonymoushttps://www.blogger.com/profile/03203242806526018875noreply@blogger.com