এই অধ্যায়ে আমরা প্রোগ্রামিংয়ের নতুন কিছু শিখব না। এখন পর্যন্ত আমরা যতটুকু প্রোগ্রামিং শিখেছি, তা দিয়েই কিছু সহজ-সরল গাণিতিক সমস্যার সমাধান করব।
১) x + y = 15, x – y = 5 হলে x ও y-এর মান কত?
সমীকরণদুটি যোগ করলে পাই 2x = 20, বা x = 10। আবার বিয়োগ করলে পাই, 2y = 10, বা y = 5। এখন একটি প্রোগ্রাম লিখতে হবে যেখানে x + y ও x – y-এর মান দেওয়া থাকবে, x ও y-এর মান বের করতে হবে। আমি প্রোগ্রামটি একটু পরে লিখে দেব। এর মধ্যে তুমি নিজে লিখার চেষ্টা করো। সহজ প্রোগ্রাম।
২) 4x + 5y = 14, 5x + 6y = 17 হলে x ও y-এর মান কত?
সমীকরণদুটিকে আমরা এভাবে লিখতে পারি:
a1x + b1y = c1, a2x + b2y = c2। তোমরা বিভিন্নভাবে এর সমাধান করতে পার। এর মধ্যে দুটি জনপ্রিয় উপায় হচ্ছে প্রতিস্থাপন (substitution) ও নির্ণায়কের (determinant) সাহায্যে সমাধান। পদ্ধতিগুলো জানা না থাকলে ক্লাস এইট বা নাইনের গণিত বই দেখো। সমাধান করলে দেখবে,
x = (b2c1 – b1c2) / (a1b2 – a2b1) এবং y = (a1c2 – a2c1) / (a1b2 – a2b1)। এখন a1, a2, b1, b2, c1, c2-এর জায়গায় নির্দিষ্ট মান বসিয়ে দিলেই x ও y-এর মান পেয়ে যাবে।
এই ধরনের সমীকরণ সমাধানের জন্যও আমরা একটি প্রোগ্রাম লিখব, যার ইনপুট হবে a1, a2, b1, b2, c1, c2 এবং আউটপুট হবে x ও y-এর মান। এটিও সহজ প্রোগ্রাম। নিজে চেষ্টা করো।
আশা করি, তোমরা দুটি সমস্যারই সমাধান নিজে করে ফেলতে পারবে। এখন আমি প্রথম সমস্যার কোড দিচ্ছি:
সমাধান খুবই সহজ। তবে লক্ষ করো যে আমি ভেরিয়েবলের ডাটা টাইপ int ব্যবহার না করে double ব্যবহার করেছি।
এবারে দ্বিতীয় সমস্যার কোড:
এটিও সহজ প্রোগ্রাম! তবে তোমরা দেখো (a1 * b2 - a2 * b1)-এর মান আমি দুবার বের করেছি (x-এর মান বের করার সময়, আবার y-এর মান বের করার সময়)। কাজটি একবারেই করা যেত এবং একবারে করলেই ভালো, তাহলে আমাদের প্রোগ্রাম দুটি গুণ ও একটি বিয়োগের কাজ কম করবে। আবার (a1 * b2 - a2 * b1)-এর মান যদি শূন্য হয়, তাহলে একটি ঝামেলা হয়ে যাচ্ছে, কারণ কোনো কিছুকে তো শূন্য দিয়ে ভাগ করা যায় না। তাই ওই মানটি শূন্য হলে আসলে সমীকরণের কোনো সমাধান নেই। এবার প্রোগ্রামটি আরও ভালোভাবে লিখে ফেলি।
এখানে একটি ব্যাপার খেয়াল করো। আমি if-এর ভেতর লিখেছি (int) d == 0। এখানে আমি প্রথমে d (যা একটি double টাইপের ভেরিয়েবল)-কে ইন্টিজারে টাইপ কাস্ট করে তারপর তার মানটি 0-এর সমান কি না তা পরীক্ষা করেছি। পরীক্ষাটা এভাবেও করা যেত: if (d == 0.0) তবে এতে মাঝে মাঝে ঝামেলা হয়, ফ্লোটিং পয়েন্ট-সংক্রান্ত হিসাব-নিকাশের জন্য। তোমরা কম্পিউটার আর্কিটেকচার নিয়ে লেখাপড়া করলে বিষয়টা বুঝতে পারবে।
তোমাদের মনে একটি প্রশ্ন আসতে পারে যে এই সহজ সমস্যাগুলো প্রোগ্রামিং করে সমাধান করে কী লাভ? আসলে একবার প্রোগ্রাম লিখে ফেলার পরে কিন্তু আর সমাধান করতে হয় না। তারপর শুধু ইনপুট দেবে, প্রোগ্রামটি নিজেই সমস্যার সমাধান করে তোমাকে আউটপুট দেবে।
৩) আমি যদি তোমাকে দশ হাজার টাকা ঋণ দিই 35% সুদে এবং টাকাটা পাঁচ বছর সময়ের মধ্যে তোমাকে সুদে-আসলে পরিশোধ করতে বলি, তাহলে পাঁচ বছরে মোট কত টাকা তোমার দিতে হবে এবং প্রতি মাসে কত টাকা দিতে হবে? ঋণটা যদি জটিল কিছু না হয়, তাহলে তোমার মোট পরিশোধ করতে হবে 10000 + 10000 * 35 / 100 টাকা। এই সহজ-সরল ঋণের জন্য একটি প্রোগ্রাম লিখে ফেলা যাক:
আমাদের ফর্মুলাতে একটু সমস্যা আছে। আসলে 35% সুদ দিতে হলে সেটা বাৎসরিক সুদ হবে। অর্থাৎ প্রতি বছর মোট ঋণের উপর 35% সুদ দেওয়া লাগবে। তাহলে দেখা যাচ্ছে পাঁচ বছরে তোমার মোট পরিশোধ করতে হবে 10000 + 10000 * 35 * 5 / 100 টাকা। এখন এই ফর্মুলা অনুযায়ী প্রোগ্রাম লিখে ফেলো।
তবে বাস্তবে ঋণের হিসাব-নিকাশ কিন্তু এত সরল নয়। তুমি ব্যাংক থেকে ঋণ নিতে গেলেই সেটি টের পাবে।
৪) পদার্থবিজ্ঞানের একটি সমস্যার সমাধান করা যাক।
কোনো বস্তু u আদিবেগে (initial velocity) এবং a ত্বরণে (acceleration) যাত্রা শুরু করল (ত্বরণের মান সব সময় a থাকবে, বাড়বে বা কমবে না)। t সময় পরে এর বেগ যদি v হয় তাহলে 2t সময়ে বস্তুটি কত দূরত্ব অতিক্রম করবে? (সমস্যাটি দিয়েছেন শাহরিয়ার মঞ্জুর, এটি ভ্যালাডলিড অনলাইন জাজের 10071 নম্বর সমস্যা)।
2t সময়ে অতিক্রান্ত দূরত্ব হবে v x 2t। এটি প্রমাণ করে ফেলো। তারপর আবার পড়া শুরু করো। নবম-দশম শ্রেণীর পদার্থবিজ্ঞান বইতে তোমরা দুটি সূত্র পাবে:
v = u + at
s = ut + 0.5 at^2 (এখানে s হচ্ছে t সময়ে অতিক্রান্ত দূরত্ব)।
তাহলে 2t সময় পরে অতিক্রান্ত দূরত্ব হবে
u x 2t + 0.5 x a x (2t)^2 = u x 2t + 0.5 x a x 4t^2 = u x 2t + a x 2t^2 = 2t (u + at) = 2tv
এখন, তোমাদেরকে একটি প্রোগ্রাম লিখতে হবে, যেখানে v ও t-এর মান ইনপুট হিসেবে দেওয়া হবে, 2t সময়ে অতিক্রান্ত দূরত্ব নির্ণয় করতে হবে। প্রোগ্রামটি নিজে নিজে লিখে ফেলো।
৫) 1 + 2 + 3 + … + 998 + 999 + 1000 এই ধারার সমষ্টি কত?
তোমরা যারা ধারার যোগফলের সূত্র জানো, তারা চট করে বলে দিতে পারবে, এই ধারাটির যোগফল হচ্ছে 1000 x 1001 / 2। তাহলে এর জন্য একটি প্রোগ্রাম লিখে ফেলা যাক, যেখানে শেষ পদের মান হবে ইনপুট আর আউটপুট হবে যোগফল।
ধারার যোগফল নির্ণয়ের সূত্র জানা না থাকলে আমরা লুপ ব্যবহার করে প্রোগ্রামটি লিখতে পারি।
সুতরাং ধারার সমস্যা নিয়ে আর চিন্তা নেই। তুমি যদি একটি পদের মান তার আগের পদের চেয়ে কত করে বাড়ছে, সেটি বের করতে পারো, তাহলেই লুপ ব্যবহার করে যোগফল বের করে ফেলতে পারবে। তবে সূত্র বের করতে পারলে লুপ ব্যবহার না করাই ভালো। কারণ প্রথম প্রোগ্রামটি দেখো (যেখানে সূত্র ব্যবহার করেছি)। সেখানে একটি যোগ, একটি গুণ আর একটি ভাগ করতে হয়েছে, n-এর মান যত বড়ই হোক না কেন। আর দ্বিতীয় প্রোগ্রামে (যেখানে লুপ ব্যবহার করেছি) n-এর মান যত, ততবার যোগ করতে হয়েছে, আবার সেই যোগফলটি sum ভেরিয়েবলে রাখতে হয়েছে (ভেরিয়েবলে কোনো মান রাখতেও কিন্তু একটু সময় লাগে)।
এখন তোমাদের একটি সহজ প্রোগ্রাম লিখতে হবে। প্রথম n সংখ্যক ধনাত্মক বেজোড় সংখ্যার যোগফল নির্ণয়ের প্রোগ্রাম। n-এর মান হবে ইনপুট, আর যোগফল হবে আউটপুট।
৬) আমাদের এবারকার প্রোগ্রামটি হবে তাপমাত্রাকে সেলসিয়াস (Celsius) থেকে ফারেনহাইটে (Farenheit) রূপান্তর করার প্রোগ্রাম।
সেলসিয়াসকে ফারেনহাইটে রূপান্তরের সূত্র হচ্ছে: °F = (°C × 1.8) + 32।
এখন তোমাদের কাজ হচ্ছে ফারেনহাইট থেকে সেলসিয়াসে রূপান্তরের প্রোগ্রাম লেখা।
৭) এখন আমরা দুটি সংখ্যার গসাগু (GCD → Greatest Common Divisor বা HCF → Highest Common Factor) ও লসাগু (LCM → Least Common Multiple) নির্ণয় করার জন্য প্রোগ্রাম লিখব।
দুটি সংখ্যার গসাগু হচ্ছে যেসব সংখ্যা দিয়ে ওই দুটি সংখ্যা নিঃশেষে বিভাজ্য হয়, তাদের মধ্যে সবচেয়ে বড় সংখ্যা। তাহলে আমরা যেটি করব, দুটি সংখ্যা a ও b নেব। তারপর এদের মধ্যে যেটি ছোট, সেই মানটি আবার x ভেরিয়েবলে রাখব। গসাগু এর মান x-এর চেয়ে বড় হওয়া সম্ভব নয় (5 ও 10-এর গসাগু-এর মান নিশ্চয়ই 5-এর চেয়ে বড় হবে না)। এখন a ও b, x দিয়ে নিঃশেষে বিভাজ্য হয় কি না (a % x == 0 এবং b % x == 0) সেটি পরীক্ষা করব। যদি হয় তবে আমরা গসাগু পেয়ে গেছি। যদি a ও b উভয়েই নিঃশেষে বিভাজ্য না হয়, তখন x-এর মান এক কমিয়ে পরীক্ষা করব। যতক্ষণ না আমরা গসাগু পাচ্ছি x-এর মান কমাতেই থাকব। একসময় আমরা গসাগু পাবই, কারণ x-এর মান যখন 1 হবে, তখন তো x দিয়ে a ও b দুটি সংখ্যাই নিঃশেষে বিভাজ্য। তোমরা কি প্রোগ্রামটি নিজে লিখার চেষ্টা করবে? না পারলে আমার কোড দেখো:
প্রোগ্রামে দেখো gcd পাওয়ার সঙ্গে সঙ্গে লুপ থেকে বের হয়ে যেতে হবে (আমি break ব্যবহার করেছি এই জন্য)। break ব্যবহার না করলে কী হবে সেটি পরীক্ষা করে দেখো।
তবে গসাগু বের করার জন্য আমি যেই পদ্ধতি ব্যবহার করেছি সেটি খুব সহজ পদ্ধতি হলেও ইফিশিয়েন্ট (efficient) নয়। যেমন, সংখ্যা দুটি খুব বড় হলে এবং সহমৌলিক (co-prime) হলে লুপটি কিন্তু অনেকবার ঘুরবে। কারণ সহমৌলিক হলে গসাগু হবে 1। তোমরা নিশ্চয়ই জানো যে, দুটি সংখ্যার মধ্যে 1 ছাড়া আর কোনো সাধারণ উৎপাদক না থাকলে সংখ্যা দুটি সহমৌলিক।
গসাগু বের করার জন্য ইউক্লিডের একটি চমৎকার পদ্ধতি আছে। ইউক্লিড ভাগশেষ উপপাদ্যের (division algorithm) সাহায্যে গসাগু বের করার উপায় দেখিয়েছেন। এই পদ্ধতিতে খুব সহজে গসাগু বের করা যায় এবং প্রোগ্রামটিও বেশ ইফিশিয়েন্ট হয়। এর জন্য দুটি জিনিস জানা লাগবে:
a ও 0-এর গসাগু-এর মান a।
a ও b-এর গসাগু = b ও a % b-এর গসাগু।
তাহলে প্রোগ্রামে যেটি করতে হবে, একটি লুপের সাহায্যে a-এর মান b আর b-এর মান a%b বসিয়ে যেতে হবে, যতক্ষণ না b-এর মান শূন্য হয়। b-এর মান শূন্য হলেই বুঝে যাব যে গসাগু হচ্ছে a (এটা কিন্তু প্রোগ্রাম শুরুর সময় a-এর মান না, b-এর মান যখন শূন্য হবে সেই সময় a-এর মান)।
এই প্রোগ্রামটি আরও ইফিশিয়েন্ট করার চেষ্টা করো।
এবার লসাগু বের করার প্রোগ্রাম। তোমরা নিশ্চয়ই স্কুলে শিখেছ, কীভাবে লসাগু বের করতে হয়। সেই পদ্ধতি অবলম্বন করে প্রোগ্রাম লিখে ফেলো। আর যারা সেই পদ্ধতি জানো না, তাদের জন্য একটি সূত্র বলে দিচ্ছি। আশা করি, লসাগু বের করার প্রোগ্রাম লিখতে আর সমস্যা হবে না।
দুটি সংখ্যার লসাগু x দুটি সংখ্যার গসাগু = সংখ্যা দুটির গুণফল।
পরের অধ্যায়
১) x + y = 15, x – y = 5 হলে x ও y-এর মান কত?
সমীকরণদুটি যোগ করলে পাই 2x = 20, বা x = 10। আবার বিয়োগ করলে পাই, 2y = 10, বা y = 5। এখন একটি প্রোগ্রাম লিখতে হবে যেখানে x + y ও x – y-এর মান দেওয়া থাকবে, x ও y-এর মান বের করতে হবে। আমি প্রোগ্রামটি একটু পরে লিখে দেব। এর মধ্যে তুমি নিজে লিখার চেষ্টা করো। সহজ প্রোগ্রাম।
২) 4x + 5y = 14, 5x + 6y = 17 হলে x ও y-এর মান কত?
সমীকরণদুটিকে আমরা এভাবে লিখতে পারি:
a1x + b1y = c1, a2x + b2y = c2। তোমরা বিভিন্নভাবে এর সমাধান করতে পার। এর মধ্যে দুটি জনপ্রিয় উপায় হচ্ছে প্রতিস্থাপন (substitution) ও নির্ণায়কের (determinant) সাহায্যে সমাধান। পদ্ধতিগুলো জানা না থাকলে ক্লাস এইট বা নাইনের গণিত বই দেখো। সমাধান করলে দেখবে,
x = (b2c1 – b1c2) / (a1b2 – a2b1) এবং y = (a1c2 – a2c1) / (a1b2 – a2b1)। এখন a1, a2, b1, b2, c1, c2-এর জায়গায় নির্দিষ্ট মান বসিয়ে দিলেই x ও y-এর মান পেয়ে যাবে।
এই ধরনের সমীকরণ সমাধানের জন্যও আমরা একটি প্রোগ্রাম লিখব, যার ইনপুট হবে a1, a2, b1, b2, c1, c2 এবং আউটপুট হবে x ও y-এর মান। এটিও সহজ প্রোগ্রাম। নিজে চেষ্টা করো।
আশা করি, তোমরা দুটি সমস্যারই সমাধান নিজে করে ফেলতে পারবে। এখন আমি প্রথম সমস্যার কোড দিচ্ছি:
#include <stdio.h>
int main()
{
double x, y, x_plus_y, x_minus_y;
printf("Enter the value of x + y: ");
scanf("%lf", &x_plus_y);
printf("Enter the value of x - y: ");
scanf("%lf", &x_minus_y);
x = (x_plus_y + x_minus_y) / 2;
y = (x_plus_y - x_minus_y) / 2;
printf("x = %0.2lf, y = %0.2lf\n", x, y);
return 0;
}
প্রোগ্রাম: ৫.১
সমাধান খুবই সহজ। তবে লক্ষ করো যে আমি ভেরিয়েবলের ডাটা টাইপ int ব্যবহার না করে double ব্যবহার করেছি।
এবারে দ্বিতীয় সমস্যার কোড:
#include <stdio.h>
int main()
{
double a1, a2, b1, b2, c1, c2, x, y;
printf("a1 = ");
scanf("%lf", &a1);
printf("a2 = ");
scanf("%lf", &a2);
printf("b1 = ");
scanf("%lf", &b1);
printf("b2 = ");
scanf("%lf", &b2);
printf("c1 = ");
scanf("%lf", &c1);
printf("c2 = ");
scanf("%lf", &c2);
x = (b2 * c1 - b1 * c2) / (a1 * b2 - a2 * b1);
y = (a1 * c2 - a2 * c1) / (a1 * b2 - a2 * b1);
printf("x = %0.2lf, y = %0.2lf\n", x, y);
return 0;
}
প্রোগ্রাম: ৫.২
এটিও সহজ প্রোগ্রাম! তবে তোমরা দেখো (a1 * b2 - a2 * b1)-এর মান আমি দুবার বের করেছি (x-এর মান বের করার সময়, আবার y-এর মান বের করার সময়)। কাজটি একবারেই করা যেত এবং একবারে করলেই ভালো, তাহলে আমাদের প্রোগ্রাম দুটি গুণ ও একটি বিয়োগের কাজ কম করবে। আবার (a1 * b2 - a2 * b1)-এর মান যদি শূন্য হয়, তাহলে একটি ঝামেলা হয়ে যাচ্ছে, কারণ কোনো কিছুকে তো শূন্য দিয়ে ভাগ করা যায় না। তাই ওই মানটি শূন্য হলে আসলে সমীকরণের কোনো সমাধান নেই। এবার প্রোগ্রামটি আরও ভালোভাবে লিখে ফেলি।
#include <stdio.h>
int main()
{
double a1, a2, b1, b2, c1, c2, d, x, y;
printf("a1 = ");
scanf("%lf", &a1);
printf("a2 = ");
scanf("%lf", &a2);
printf("b1 = ");
scanf("%lf", &b1);
printf("b2 = ");
scanf("%lf", &b2);
printf("c1 = ");
scanf("%lf", &c1);
printf("c2 = ");
scanf("%lf", &c2);
d = a1 * b2 - a2 * b1;
if ((int) d == 0) {
printf("Value of x and y can not be determined.\n");
}
else {
x = (b2 * c1 - b1 * c2) / d;
y = (a1 * c2 - a2 * c1) / d;
printf("x = %0.2lf, y = %0.2lf\n", x, y);
}
return 0;
}
প্রোগ্রাম: ৫.৩
এখানে একটি ব্যাপার খেয়াল করো। আমি if-এর ভেতর লিখেছি (int) d == 0। এখানে আমি প্রথমে d (যা একটি double টাইপের ভেরিয়েবল)-কে ইন্টিজারে টাইপ কাস্ট করে তারপর তার মানটি 0-এর সমান কি না তা পরীক্ষা করেছি। পরীক্ষাটা এভাবেও করা যেত: if (d == 0.0) তবে এতে মাঝে মাঝে ঝামেলা হয়, ফ্লোটিং পয়েন্ট-সংক্রান্ত হিসাব-নিকাশের জন্য। তোমরা কম্পিউটার আর্কিটেকচার নিয়ে লেখাপড়া করলে বিষয়টা বুঝতে পারবে।
তোমাদের মনে একটি প্রশ্ন আসতে পারে যে এই সহজ সমস্যাগুলো প্রোগ্রামিং করে সমাধান করে কী লাভ? আসলে একবার প্রোগ্রাম লিখে ফেলার পরে কিন্তু আর সমাধান করতে হয় না। তারপর শুধু ইনপুট দেবে, প্রোগ্রামটি নিজেই সমস্যার সমাধান করে তোমাকে আউটপুট দেবে।
৩) আমি যদি তোমাকে দশ হাজার টাকা ঋণ দিই 35% সুদে এবং টাকাটা পাঁচ বছর সময়ের মধ্যে তোমাকে সুদে-আসলে পরিশোধ করতে বলি, তাহলে পাঁচ বছরে মোট কত টাকা তোমার দিতে হবে এবং প্রতি মাসে কত টাকা দিতে হবে? ঋণটা যদি জটিল কিছু না হয়, তাহলে তোমার মোট পরিশোধ করতে হবে 10000 + 10000 * 35 / 100 টাকা। এই সহজ-সরল ঋণের জন্য একটি প্রোগ্রাম লিখে ফেলা যাক:
#include <stdio.h>
int main()
{
double loan_amount, interest_rate, number_of_years, total_amount, monthly_amount;
printf("Enter the loan amount: ");
scanf("%lf", &loan_amount);
printf("Enter the interest rate: ");
scanf("%lf", &interest_rate);
printf("Number of years: ");
scanf("%lf", &number_of_years);
total_amount = loan_amount + loan_amount * interest_rate / 100.00;
monthly_amount = total_amount / (number_of_years * 12);
printf("Total amount: %0.2lf\n", total_amount);
printf("Monthly amount: %0.2lf\n", monthly_amount);
return 0;
}
প্রোগ্রাম: ৫.৪
আমাদের ফর্মুলাতে একটু সমস্যা আছে। আসলে 35% সুদ দিতে হলে সেটা বাৎসরিক সুদ হবে। অর্থাৎ প্রতি বছর মোট ঋণের উপর 35% সুদ দেওয়া লাগবে। তাহলে দেখা যাচ্ছে পাঁচ বছরে তোমার মোট পরিশোধ করতে হবে 10000 + 10000 * 35 * 5 / 100 টাকা। এখন এই ফর্মুলা অনুযায়ী প্রোগ্রাম লিখে ফেলো।
তবে বাস্তবে ঋণের হিসাব-নিকাশ কিন্তু এত সরল নয়। তুমি ব্যাংক থেকে ঋণ নিতে গেলেই সেটি টের পাবে।
৪) পদার্থবিজ্ঞানের একটি সমস্যার সমাধান করা যাক।
কোনো বস্তু u আদিবেগে (initial velocity) এবং a ত্বরণে (acceleration) যাত্রা শুরু করল (ত্বরণের মান সব সময় a থাকবে, বাড়বে বা কমবে না)। t সময় পরে এর বেগ যদি v হয় তাহলে 2t সময়ে বস্তুটি কত দূরত্ব অতিক্রম করবে? (সমস্যাটি দিয়েছেন শাহরিয়ার মঞ্জুর, এটি ভ্যালাডলিড অনলাইন জাজের 10071 নম্বর সমস্যা)।
2t সময়ে অতিক্রান্ত দূরত্ব হবে v x 2t। এটি প্রমাণ করে ফেলো। তারপর আবার পড়া শুরু করো। নবম-দশম শ্রেণীর পদার্থবিজ্ঞান বইতে তোমরা দুটি সূত্র পাবে:
v = u + at
s = ut + 0.5 at^2 (এখানে s হচ্ছে t সময়ে অতিক্রান্ত দূরত্ব)।
তাহলে 2t সময় পরে অতিক্রান্ত দূরত্ব হবে
u x 2t + 0.5 x a x (2t)^2 = u x 2t + 0.5 x a x 4t^2 = u x 2t + a x 2t^2 = 2t (u + at) = 2tv
এখন, তোমাদেরকে একটি প্রোগ্রাম লিখতে হবে, যেখানে v ও t-এর মান ইনপুট হিসেবে দেওয়া হবে, 2t সময়ে অতিক্রান্ত দূরত্ব নির্ণয় করতে হবে। প্রোগ্রামটি নিজে নিজে লিখে ফেলো।
৫) 1 + 2 + 3 + … + 998 + 999 + 1000 এই ধারার সমষ্টি কত?
তোমরা যারা ধারার যোগফলের সূত্র জানো, তারা চট করে বলে দিতে পারবে, এই ধারাটির যোগফল হচ্ছে 1000 x 1001 / 2। তাহলে এর জন্য একটি প্রোগ্রাম লিখে ফেলা যাক, যেখানে শেষ পদের মান হবে ইনপুট আর আউটপুট হবে যোগফল।
#include <stdio.h>
int main()
{
int n, sum;
scanf("%d", &n);
sum = (n * (n + 1)) / 2;
printf("Summation is %d\n", sum);
return 0;
}
প্রোগ্রাম: ৫.৫
ধারার যোগফল নির্ণয়ের সূত্র জানা না থাকলে আমরা লুপ ব্যবহার করে প্রোগ্রামটি লিখতে পারি।
#include <stdio.h>
int main()
{
int i, n, sum;
scanf("%d", &n);
for(i = 1, sum = 0; i <= n; i++) {
sum = sum + i;
}
printf("Summation is %d\n", sum);
return 0;
}
প্রোগ্রাম: ৫.৬
সুতরাং ধারার সমস্যা নিয়ে আর চিন্তা নেই। তুমি যদি একটি পদের মান তার আগের পদের চেয়ে কত করে বাড়ছে, সেটি বের করতে পারো, তাহলেই লুপ ব্যবহার করে যোগফল বের করে ফেলতে পারবে। তবে সূত্র বের করতে পারলে লুপ ব্যবহার না করাই ভালো। কারণ প্রথম প্রোগ্রামটি দেখো (যেখানে সূত্র ব্যবহার করেছি)। সেখানে একটি যোগ, একটি গুণ আর একটি ভাগ করতে হয়েছে, n-এর মান যত বড়ই হোক না কেন। আর দ্বিতীয় প্রোগ্রামে (যেখানে লুপ ব্যবহার করেছি) n-এর মান যত, ততবার যোগ করতে হয়েছে, আবার সেই যোগফলটি sum ভেরিয়েবলে রাখতে হয়েছে (ভেরিয়েবলে কোনো মান রাখতেও কিন্তু একটু সময় লাগে)।
এখন তোমাদের একটি সহজ প্রোগ্রাম লিখতে হবে। প্রথম n সংখ্যক ধনাত্মক বেজোড় সংখ্যার যোগফল নির্ণয়ের প্রোগ্রাম। n-এর মান হবে ইনপুট, আর যোগফল হবে আউটপুট।
৬) আমাদের এবারকার প্রোগ্রামটি হবে তাপমাত্রাকে সেলসিয়াস (Celsius) থেকে ফারেনহাইটে (Farenheit) রূপান্তর করার প্রোগ্রাম।
সেলসিয়াসকে ফারেনহাইটে রূপান্তরের সূত্র হচ্ছে: °F = (°C × 1.8) + 32।
#include <stdio.h>
int main()
{
double celsius, farenheit;
printf("Enter the temperature in celsius: ");
scanf("%lf", &celsius);
farenheit = 1.8 * celsius + 32;
printf("Temperature in farenheit is: %lf\n", farenheit);
return 0;
}
প্রোগ্রাম: ৫.৭
এখন তোমাদের কাজ হচ্ছে ফারেনহাইট থেকে সেলসিয়াসে রূপান্তরের প্রোগ্রাম লেখা।
৭) এখন আমরা দুটি সংখ্যার গসাগু (GCD → Greatest Common Divisor বা HCF → Highest Common Factor) ও লসাগু (LCM → Least Common Multiple) নির্ণয় করার জন্য প্রোগ্রাম লিখব।
দুটি সংখ্যার গসাগু হচ্ছে যেসব সংখ্যা দিয়ে ওই দুটি সংখ্যা নিঃশেষে বিভাজ্য হয়, তাদের মধ্যে সবচেয়ে বড় সংখ্যা। তাহলে আমরা যেটি করব, দুটি সংখ্যা a ও b নেব। তারপর এদের মধ্যে যেটি ছোট, সেই মানটি আবার x ভেরিয়েবলে রাখব। গসাগু এর মান x-এর চেয়ে বড় হওয়া সম্ভব নয় (5 ও 10-এর গসাগু-এর মান নিশ্চয়ই 5-এর চেয়ে বড় হবে না)। এখন a ও b, x দিয়ে নিঃশেষে বিভাজ্য হয় কি না (a % x == 0 এবং b % x == 0) সেটি পরীক্ষা করব। যদি হয় তবে আমরা গসাগু পেয়ে গেছি। যদি a ও b উভয়েই নিঃশেষে বিভাজ্য না হয়, তখন x-এর মান এক কমিয়ে পরীক্ষা করব। যতক্ষণ না আমরা গসাগু পাচ্ছি x-এর মান কমাতেই থাকব। একসময় আমরা গসাগু পাবই, কারণ x-এর মান যখন 1 হবে, তখন তো x দিয়ে a ও b দুটি সংখ্যাই নিঃশেষে বিভাজ্য। তোমরা কি প্রোগ্রামটি নিজে লিখার চেষ্টা করবে? না পারলে আমার কোড দেখো:
#include <stdio.h>
int main()
{
int a, b, x, gcd;
scanf("%d %d", &a, &b);
if (a < b) {
x = a;
}
else {
x = b;
}
for(; x >= 1; x--) {
if (a % x == 0 && b % x == 0) {
gcd = x;
break;
}
}
printf("GCD is %d\n", gcd);
return 0;
}
প্রোগ্রাম: ৫.৮
প্রোগ্রামে দেখো gcd পাওয়ার সঙ্গে সঙ্গে লুপ থেকে বের হয়ে যেতে হবে (আমি break ব্যবহার করেছি এই জন্য)। break ব্যবহার না করলে কী হবে সেটি পরীক্ষা করে দেখো।
তবে গসাগু বের করার জন্য আমি যেই পদ্ধতি ব্যবহার করেছি সেটি খুব সহজ পদ্ধতি হলেও ইফিশিয়েন্ট (efficient) নয়। যেমন, সংখ্যা দুটি খুব বড় হলে এবং সহমৌলিক (co-prime) হলে লুপটি কিন্তু অনেকবার ঘুরবে। কারণ সহমৌলিক হলে গসাগু হবে 1। তোমরা নিশ্চয়ই জানো যে, দুটি সংখ্যার মধ্যে 1 ছাড়া আর কোনো সাধারণ উৎপাদক না থাকলে সংখ্যা দুটি সহমৌলিক।
গসাগু বের করার জন্য ইউক্লিডের একটি চমৎকার পদ্ধতি আছে। ইউক্লিড ভাগশেষ উপপাদ্যের (division algorithm) সাহায্যে গসাগু বের করার উপায় দেখিয়েছেন। এই পদ্ধতিতে খুব সহজে গসাগু বের করা যায় এবং প্রোগ্রামটিও বেশ ইফিশিয়েন্ট হয়। এর জন্য দুটি জিনিস জানা লাগবে:
a ও 0-এর গসাগু-এর মান a।
a ও b-এর গসাগু = b ও a % b-এর গসাগু।
তাহলে প্রোগ্রামে যেটি করতে হবে, একটি লুপের সাহায্যে a-এর মান b আর b-এর মান a%b বসিয়ে যেতে হবে, যতক্ষণ না b-এর মান শূন্য হয়। b-এর মান শূন্য হলেই বুঝে যাব যে গসাগু হচ্ছে a (এটা কিন্তু প্রোগ্রাম শুরুর সময় a-এর মান না, b-এর মান যখন শূন্য হবে সেই সময় a-এর মান)।
#include <stdio.h>
int main()
{
int a, b, t, x, gcd;
scanf("%d %d", &a, &b);
if (a == 0) gcd = b;
else if (b == 0) gcd = a;
else {
while (b != 0) {
t = b;
b = a % b;
a = t;
}
gcd = a;
}
printf("GCD is %d\n", gcd);
return 0;
}
প্রোগ্রাম: ৫.৯
এই প্রোগ্রামটি আরও ইফিশিয়েন্ট করার চেষ্টা করো।
এবার লসাগু বের করার প্রোগ্রাম। তোমরা নিশ্চয়ই স্কুলে শিখেছ, কীভাবে লসাগু বের করতে হয়। সেই পদ্ধতি অবলম্বন করে প্রোগ্রাম লিখে ফেলো। আর যারা সেই পদ্ধতি জানো না, তাদের জন্য একটি সূত্র বলে দিচ্ছি। আশা করি, লসাগু বের করার প্রোগ্রাম লিখতে আর সমস্যা হবে না।
দুটি সংখ্যার লসাগু x দুটি সংখ্যার গসাগু = সংখ্যা দুটির গুণফল।
পরের অধ্যায়
প্রোগ্রাম: ৫.৬ এর পর যে সমস্যা দেয়া হয়েছে,(এখন তোমাদের একটি সহজ প্রোগ্রাম লিখতে হবে। প্রথম n সংখ্যক ধনাত্মক বেজোড় সংখ্যার যোগফল নির্ণয়ের প্রোগ্রাম। n-এর মান হবে ইনপুট, আর যোগফল হবে আউটপুট।) এটা সমাধান করতে গিয়ে সমস্যায় পড়েছি।
উত্তরমুছুনআমি যে প্রোগ্রামটি লিখেছি সেটি হলোঃ
#include
int main()
{
int i, n, sum;
scanf("%d", &n);
for(i = 1, sum = 0; i <= n; i = i + 2) {
sum = sum + i;
}
printf("Summation is %d\n", sum);
return 0;
}
এই কোড এ n এর মান ১ দিলে রেজাল্ট ১ আসে; ২ দিলেও ১(কিন্তু আসা উচিত ছিলো ৪) আসে। আবার ৩ দিলে ৪ আসে( আসা উচিত ছিলো ৯) আবার ৫ দিলেও ৯ আসে। এভাবে করে হয়। এটা কেনো হচ্ছে। আমি আসলে এটা কোনভাবে এফিশিয়েন্ট করতে পারছি না। একটু হিন্ট দিলে সুবিধা হত। এরকম হবার কারন কি এটাও বলে দিবেন, দয়া করে।
তুমি লুপ চালানোর জন্য i ব্যবহার করছো। আবার সব বিজোড় সংখ্যা বের করার জন্যও i ব্যবহার করছো, যা সমস্যার সৃষ্টি করছে। 2-এর জন্য প্রথমে i-এর মান 1, কিন্তু পরেরবার i = i + 2 এর কারণে i এর মান 3 হয়ে যাচ্ছে, যা n-এর চেয়ে বড়, তাই আর লুপের ভেতর ঢুকছে না। তাই n-এর মান 2 হলেও লুপটা কিন্তু দুইবার ঘুরছে না, একবার ঘুরছে। :)
উত্তরমুছুনn সংখ্যক ধনাত্মক বেজোড় সংখ্যার যোগফল নির্ণয়ের জন্য একটা প্রোগ্রাম দঁআড় করাতে পেরেছি। তবুও মনে শান্তি পাচ্ছি না। মনে হচ্ছে কোথাও একটা সমস্যা আছে। একটু চেক করে দিলে খুশি হতাম।
উত্তরমুছুন#include
int main()
{
int i, n, oddcons, sum;
scanf("%d", &n);
for(i = 1, sum = 0; i <= 2 * n; i = i = i + 2) {
sum = sum + i;
}
printf("Summation is %d\n", sum);
return 0;
}
আপাতত আউটপুট ঠিক থাকলেই চলবে।
উত্তরমুছুনএকটা প্রশ্ন, আমি ওপরের প্রোগ্রামে i সীমা n এর দ্বিগুন করে দিয়েছি [for(i = 1, sum = 0; i <= 2 * n; i = i = i + 2)]
উত্তরমুছুনএক্ষেত্রে, আমি যদি n এর মান ৫ দেই তাহলে লুপ ১০ বার ঘুরার কথা। মানে আউটপুট ১০১ হবার কথা। কিন্তু আউটপুট ঠিকঠাক ২৫ দেখাচ্ছে কেনো?
লুপ কতবার ঘুরবে তা কেবল n-এর মানের উপর নির্ভর করে না, i-এর মান প্রতিবার কত বাড়ছে তার উপরও নির্ভর কর। এখানে i-এর মান 1, 2, 3, ... হলে ১০ বার ঘুরত, কিন্তু i-এর মান এখানে হচ্ছে 1, 3, 5, ... তাই ৫ বার ঘুরার পর i-এর মান 2 * n এর চেয়ে বড় হয়ে যাচ্ছে এবং i <= 2 * n কন্ডিশনটি মিথ্যা হয়ে যাচ্ছে, ফলে লুপ আর ঘুরছে না (2 * n = 10, আর ৫ বার ঘুরার পরে i-এর মান দাঁড়ায় 11)।
উত্তরমুছুনএই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।
উত্তরমুছুন#include
উত্তরমুছুনint main()
{
int n,a,p,sum=0;
scanf("%d",&n);
for(a=1;a<=n;a++)
{p=2*a-1;
sum=sum+p;}
printf("sum is %d",sum);
return(0);}
i think i could com to a solution for the problem of odd number.i m a 1st year EEE student but i have great interest for programming.thanks subeen bhia for giving problms to enhance our thinking capability
Good work. There are many different ways in which you can solve a problem. I hope you will give enough time for programming and enjoy it.
মুছুনGood Job
মুছুনএই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।
উত্তরমুছুনভাইয়া,5.6 এ
উত্তরমুছুনfor(i=1,sum=0;i<=n;i++) এ i=1, এর জায়গাতে i=1; দিলে হয় না কেনো?
আবার, (i=1,sum=0;i<=n;i++) এর বদলে (i=1,i<=n;i++;sum=0) দিলেও হয় না কেন?
দয়া করে বলুন!
আর ৫.৯ এ t এর মানে কি?
৫.৯ একটু ডিটেইল বুঝিয়ে দিবেন প্লিজ!!!!
বুঝিয়ে দিলে খুউউউউব উপকৃত হব!
আর ভাইয়া আমি তো ক্লাস সেভেন এ পই তাই অনেক অঙ্ক আআর পক্ষে যানা সম্ভব না, তাই কি করব?
১। for লুপের ক্ষেত্রে প্রথম বন্ধনীর ভেতর তিনটি অংশ আছে। আর এই তিনটি অংশকে সেমিকোলন (;) দিয়ে আলাদা করা হয়। লুপ শুরুর সময় কেবল মাত্র একবার প্রথম অংশের কাজ সম্পন্ন হয়। এই অংশে সাধারণত কোনো কিছুর প্রাথমিক (মানে শুরুর সময়) মান নির্ধারণ করে দেওয়া হয়। প্রথম অংশের কাজ হওয়ার পরে হয় দ্বিতীয় অংশের (মানে দুটি সেমিকোলনের মধ্যের অংশ) কাজ। এই অংশে কোনো একটি শর্ত (কন্ডিশন) দেওয়া হয়। দ্বিতীয় অংশের কাজের পরে লুপের ভেতরের অংশের কাজ হয়। আর ভেতরের অংশের কাজ একবার হওয়ার পরে প্রথম বন্ধনীর ভেতর যে তৃতীয় অংশটি আছে, সেটির কাজ হয়। তৃতীয় অংশে আসলে এমন কিছু করা হয় যেন লুপটি চলতে পারে (যেমন, i-এর মান ১ বাড়ানো)। তৃতীয় অংশের কাজের পরে আবার দ্বিতীয় অংশের কাজ (মানে শর্ত পরীক্ষা) হয়। তারপরে আবার লুপের ভেতরের কাজ। এভাবে চলতে থাকে। যখন দ্বিতীয় অংশের কাজ, মানে ওখানে যে শর্ত দেওয়া আছে, সেটি মিথ্যা হয়ে যায় (যেমন i-এর মান বাড়তে বাড়তে n-এর চেয়ে বড় হয়ে যায় আর i <= n শর্তটি মিথ্যা হয়) তখন লুপটি শেষ হয়ে যায়, মানে এর পর আর লুপের ভেতরের কোনো কাজ হয় না। সুতরাং, i=1,sum=0; মানে লুপের শুরুতে i-এর মান 1 আর sum-এর মান 0 দেওয়া হয়। আর i<=n দিয়ে i, n-এর চেয়ে ছোট কিংবা সমান কী না, সেটি পরীক্ষা করা হয়। তাই এর বদলে i=1,i<=n; i++; sum=0 লিখলে কাজ হবে না। আশা করি বুঝতে পেরেছ। না বুঝলে আমি আবার বোঝানোর চেষ্টা করতে পারি।
মুছুনআর ৫.৯-এ t একটি ভেরিয়েবল। এটি ব্যবহার করা হয়েছে যাতে এটি b-এর মান ধরে রাখে এবং a-এর মধ্যে b-এর মান পরে দিয়ে দেওয়া যায়। t = b; না লিখে শুরুতেই যদি b-এর মান a-এর মধ্যে রাখা হতো, তাহলে কী সমস্যা হতো?
কোনো অঙ্ক না বুঝলে সেটি বোঝার চেষ্টা করবে এবং চেষ্টা করার পরেও না বুঝলে সেটি আপাতত বাদ দিয়ে পরের অংশ পড়বে।
আচ্ছা ভাইয়া পরিশিষ্টে যে বই গুলার কথা বলা হয়েছে, ওগুলার বদলে কি বাংলা বই পড়া যাবে?
উত্তরমুছুনওগুলোর বদলে তো কোনো বাংলা বই নাই এখনও। ভবিষ্যতে কেউ যদি লিখে তবে অবশ্যই পড়া যাবে।
মুছুনসুবীন ভাইয়ার হয়তো জানা নেই যে প্রোগ্রামিঙের ওপর বাংলায় অনেক ভালো ভালো বই বের হয়েছে,সে সব বই হয়তো সুবীন ভাইয়ার বইয়ের মতো এতো সুন্দর ভাবে লেখা হয়নি কিন্তু সে বই গুলো (আমার ধারণা) ইংরেজি বইয়ের থেকে সোজা । আমার এ মুহূর্তে নাম মনে পড়ছে না, তবে নীলক্ষেতে গিয়ে একটু ঘাটলেই পাওয়া যাবে ।
মুছুনধন্যবাদ ।
ধন্যবাদ
উত্তরমুছুনআপনি খুব ভালো একটা কাজ শুরু করেছেন, আমি সৃষ্টিকর্তার কাছে আপনার মঙ্গলের জন্য প্রার্থনা করব!
আপনারফেসবিক আইডি দেয়া যাবে?
তোমাকেও ধন্যবাদ। আমার ব্যক্তিগত ফেসবুক একাউন্ট বর্তমানে ডিএক্টিভ করা। বইয়ের ফেসবুক ফ্যান পেজে যোগ দিতে পারো: https://www.facebook.com/computerprogrammingbook
মুছুন#include
উত্তরমুছুনint main()
{
int a, b, t, x, gcd;
scanf("%d %d", &a, &b);
if (a == 0) gcd = a;
else if (b == 0) gcd = b;
else {
while (b != 0) {
t = b;
b = a % b;
a = t;
}
gcd = a;
}
printf("GCD is %d\n", gcd);
return 0;
}
এই সমস্যাটাতে আপনি if এর পর কেন {} ব্যবহার করেন নি, এবং এখানে x ফাংশনের কাজাটা কি, বুঝলাম না । (আমি x ছাড়া চালিয়ে দেখেছি )
Dont Worry, X ছাড়াও কাজ করবে কোড, আর তোমার if condition এর execution code যদি এক লাইনের বেশি না হয়, তাহলে {} - বন্ধনি না ব্যাবহার করলেও চলে। একই জিনিস for ও while loop এর ক্ষেত্রেও প্রযোজ্য।
উত্তরমুছুনDear Subeen Bhai please tell me its a good approach to solve the problem you have asked for or another way to do it more efficient means less time to compile the program? I have another query I didn't understand the method of gcd(5.9).If(a==0) gcd=a; if(b==0) gcd=b;if we take the value of a and b from the users then how it will equal to 0(let take a=3, b=5). Please clarify this.It is totally vauge to me still after I have passed two days for this problem to understand.
উত্তরমুছুন#include
void main()
{
int i,n,sum;
printf("please enter your odd number you want to see: ");
scanf("%d",&n);
sum=0;
{
for(i=1;i<=n;i=i+2)
{
printf("%d\t",i);
sum=sum+i;
}
}
printf("\n\nSum of 1+3+5+--------+%d=%d\n\n",n,sum);
}
5.9 এত কঠিন ভাবে না লিখে
উত্তরমুছুন#include
int main()
{
int a, b, gcd;
scanf("%d %d", &a, &b);
if (a == 0) gcd = b;
else if (b == 0) gcd = a;
else {
while (b != 0) {
a = b;
b = a % b;
}
}
printf("GCD is %d\n", a);
return 0;
}
লিখলে ভাল হত না?
তোমার প্রোগ্রামে তো বাগ আছে। বিভিন্ন ইনপুট দিয়ে পরীক্ষা করে দেখো। ৫.৯ কঠিন করে লেখার পিছনে কারণ খুঁজে বের করো। :)
মুছুনsir , I'm facing problem to make a program of lcm in the method of 5.9
উত্তরমুছুনPlease write details about your problem here: https://www.facebook.com/computerprogrammingbook
মুছুনএই মন্তব্যটি লেখক দ্বারা সরানো হয়েছে।
উত্তরমুছুনbecause the value of a and b are changing in your code. ur while loop is running untill b!=0. that's why a*b = a*0 = 0 and lcm = 0/gcd = 0. :). Correct this problem.
মুছুনভাইয়া GCD এই কোড টা একটু দেখবেন । কোন ভুল যদি থাকে
উত্তরমুছুন#include
int main ()
{
int M,N,reminder;
printf("Input M: ");
scanf("%d",&M);
printf("Input N: ");
scanf("%d",&N);
while (M<=N)
{printf("N must be smaller then M.\nInput M: ");
scanf("%d",&M);
printf("Input N: ");
scanf("%d",&N);}
reminder=M%N;
while (reminder!=0)
{
M=N;
N=reminder;
reminder=M%N;
}
printf("-----\n");
printf("GCD: %d",N);
getch();
return 0;
}
Your code is ok but why are you using the getch() at the end?
উত্তরমুছুনas far as i know getch(); is used to stop screen output so that output screen doesnt invisible after process untill u "press any key" !!!
উত্তরমুছুন#include
উত্তরমুছুনint main(){
int v,t,s;
printf("enter the value of v and t: \n");
scanf("%d &d",&v,&t);
s=(2*t)*v;
printf("distance in the time of 2t is: %d",s);
return 0;
}
প্রোগ্রামটা কি ঠিক আছে?
#include
উত্তরমুছুনint main()
{
int a,b,x,lcm;
printf("Enter one number: ");
scanf("%d", &a);
printf("Enter another number: ");
scanf("%d", &b);
if(a>b) {
x=a;
}
else {
x=b;
}
for (;x>=1;x++) {
if (x%a==0 && x%b==0) {
lcm=x;
break;
}
}
printf("LCM is :%d\n",lcm);
return 0;
}
LCM er code ki thik ase, vaia?
৫ বছরে মোট পরিশোধ ... সুবিন ভাইয়া দেখবেন ঠিক আছে কিনা ?
উত্তরমুছুন#include
int main(){
double loan_amount,interest_amount,total_amount,monthly_amount,number_years;
printf("Enter Loan-amount: ");
scanf("%lf",&loan_amount);
printf("Enter Interest amount: ");
scanf("%lf",&interest_amount);
printf("Enter Number of years: ");
scanf("%lf",&number_years);
total_amount = loan_amount + loan_amount*number_years*interest_amount/100;
monthly_amount = total_amount / (number_years * 12);
printf("Total Amount : %0.2lf\n",total_amount);
printf("Monthly Amount : %0.2lf\n",monthly_amount);
}
#include
উত্তরমুছুনint main()
{
double v,t,s;
printf ("v=");
scanf ("%lf", &v);
printf ("t=");
scanf ("%lf", &t);
s=2tv;
printf ("s= %0.2lf\n",s);
return 0;
}
এই কোডটিতে সমস্যা কোথায়? "s=2tv;" এই লাইনটিতে error দেখাচ্ছে............
s = 2 * t * v;
মুছুনভাইয়া,পাওয়ার কিভাবে দিব? যেমন p=v to the power 8
উত্তরমুছুনThere is a function named pow() under math.h (you have to include math.h header file).
মুছুন#include
উত্তরমুছুনint main()
{
int dividend , divisor , quotient , remainder , a , b ,gcd ;
scanf("%d %d" , &a , &b) ;
if (a<b) {
dividend=b ;
divisor=a ;
}
else {
dividend=a ;
divisor=b ;
}
quotient=dividend/divisor ;
remainder=dividend % divisor ;
while (remainder !=0) {
dividend=divisor*quotient +remainder ;
divisor=dividend ;
if(remainder==0) {
divisor=gcd ;
}
break ;
}
printf("%d" , gcd) ;
return 0 ;
}
where is the problem vaiya???
ভাইয়া প্রোগ্রাম-৫.৯-এ একটু কারেকশন আছে!!
উত্তরমুছুন5 ও 0 এর গ.সা.গু করতে হলে যদি a= 5 ; b = 0 হয় তখন আউটপুট হয় 5 আর যদি a=0 ; b = 5 হয় তখন আউটপুট হয় 0
তাই gcd = a; লাইনটি printf("GCD is %d\n", gcd); এর আগে লিখতে হবে!!
#include
void main()
{
int a, b, t, x, gcd;
scanf("%d %d", &a, &b);
if (a == 0) gcd = b;
else if (b == 0) gcd = a;
else {
while (b != 0) {
t = b;
b = a % b;
a = t;
}
}
gcd = a;
printf("GCD is %d\n", gcd);
}
ভাইয়া কেমন হয়েছে কোডিংটা?
উত্তরমুছুন#include
int main()
{
int a, b, c;
int d, e, f;
/* first line*/
printf("Enter value for x = ");
scanf("%d", &a);
printf("Enter value for y = ");
scanf("%d", &b);
printf("Enter value for x + y = ");
scanf("%d", &c);
/* second line*/
printf("type other value\n");
printf("Enter value for x = ");
scanf("%d", &d);
printf("Enter value for y = ");
scanf("%d", &e);
printf("Enter value for x - y = ");
scanf("%d", &f);
/*now the result*/
int num1;
printf("What do you want?\n 1. Plus\n 2. Minus\n");
scanf("%d", &num1);
/*start new form*/
if(num1 == 1){ /*<----first condition*/
printf("%dx + %dy = %d\n", a,b,c);
printf("%dx - %dy = %d\n", d,e,f);
int tt, vv, mm;
tt = a+d;
vv = b-e;
mm = c+f;
if(d < e){
printf("%dx%dy = %d", tt,vv,mm);
}
else
printf(" %dx + %dy = %d", tt, vv, mm);
}
else if(num1 == 2){ /*<---second condition*/
printf("%dx + %dy = %d\n", a,b,c);
printf("%dx - %dy = %d\n", d,e,f);
int rr,ww,qq;
rr = a-d;
ww = b+e;
qq = c-f;
printf("%dx + %dy = %d\n", rr,ww,qq);
}
return 0;
}
Sir, where is my program incorrect ? please look the program.
উত্তরমুছুন#include
int main()
{
double loan_amount, interest_amount, number_of_year, total_amount, monthly_amount;
printf("Enter the loan amount :" );
scanf("lf", &loan_amount);
printf("Enter the interest amount :" );
scanf("lf", &interest_amount);
printf("Enter the number of year :" );
scanf("lf", &number_of_year);
printf("Enter the total amount :" );
scanf("lf", &total_amount);
printf("Enter the monthly amount :" );
scanf("lf", &monthly_amount);
total_amount = loan_amount + loan_amount * interest_amount * number_of_year / 100.00;
monthly_amount = total_amount / number_of_year * 12;
printf("total amount %0.2lf\n", total_amount);
printf("monthly amount %0.2lf\n", monthly_amount);
return 0;
}
loan_amount, interest_amount, number_of_year, total_amount, monthly_amount এদের প্রত্যেকটা ভেরিয়েবল scan নেওয়ার ৫টা স্টেটমেন্টেই ভুল । format specifier ঠিক মতো লিখেন নাই, lf এর স্থলে %lf হবে ।
মুছুনI hope this is the easiest and most efficient program for Determination of (GCD → Greatest Common Divisor বা HCF → Highest Common Factor) ও লসাগু (LCM → Least Common Multiple)
উত্তরমুছুন#include
int main ()
{
int n1,n2,a,b,c,gcd,lcm;
scanf("%d %d", &n1, &n2);
a = n1;
b = n2;
while(a != 0) {
c = a;
a = b % a;
b = c;
}
gcd = b;
lcm = (n1 * n2) / gcd;
printf("Gcd is : %d\n", gcd);
printf("Lcm is : %d\n", lcm);
}
Subeen bhai, please check if this program is correct.
উত্তরমুছুনHints: sum of n positive integers is square of n i.e., n*n
#include
int main()
{
int n, sum;
printf("Enter number of positive odd integers: ");
scanf("%d", &n);
sum = n * n;
printf("Sum of %d positive odd integers: %d", n, sum);
return 0;
}