সি প্রোগ্রাম – বার নির্ণয়ক সফটওয়্যার

সি প্রোগ্রাম – বার নির্ণয়ক সফটওয়্যার

ইনপুট হিসেবে যা নেয়া হবেঃ
১.তারিখ
২.মাস নম্বর
৩.প্রথম দুই ডিজিট সালের
৪.বাকি ডিজিট সালের

আউটপুটঃ
বার এর নাম

ধরা যাক তারিখ নেয়া হল-১২,মাস নম্বর-৮,প্রথম দুই ডিজিট সালের-১৯
বাকি ডিজিট সালের-৯৩,তার মানে ১২-৮-১৯৯৩

এখন কিছু নির্দিষ্ট মাস এর জন্য কিছু নির্দিষ্ট নম্বর আছে। যেমনঃ
জানুয়ারী,অক্টোবর-৫
ফেব্রুয়ারী,মার্চ,নভেম্বর-১
এপ্রিল,জুলাই-৪
মে-৬
জুন-২
আগষ্ট-০
সেপ্টেম্বর,ডিসেম্বর-৩

এখানে প্রথম দুইডিজিটসালের-১৯।১৯কে ৪ দ্বারা ভাগ করলে ভাগশেষ থাকে ৩।আবার বিভিন্ন ভাগশেষ এরজন্য কিছু নির্দিষ্ট নম্বর আছে।নিচে এ র তালিকা দেয়া হলঃ
ভাগশেষ ৩ হলে নম্বর হবে ২
ভাগশেষ ২ হলে নম্বর হবে ৪
ভাগশেষ ১ হলে নম্বর হবে৬
ভাগশেষ ০ হলে নম্বর হবে ১

এখন শেষ দুই ডিজ়িট ৯৩।৯৩ কে ৪ দ্বারা ভাগ করলে ভাগফল থাকে ২৩.২৫।কিন্তূ আমরা এখানে পূর্ণ সংখ্যা নিবো। তাহলে ভাগ ফল হবে ২৩।

এরপর যোগ করুন ৯৩+২৩=১১৬।এখন এই যোগফলের সাথে নিচের মানগুলো
যোগ করুন।তাহলে সূত্র হচ্ছেঃ
তারিখ+মাসের জন্য নির্দিষ্ট নম্বর+ভাগশেষএ র জ়ন্য নির্দিষ্টনম্বর+উপরে প্রাপ্তযোগফল
তাহলে আমাদের ধার্যতারিখ উপরেরসূত্রে বসিয়ে পাই
১২+০+২+১১৬=১৩০
এটি হল মোটযোগফল।এখন মোটযোগফলকে ৭ দ্বারা ভাগ করলে যা ভাগশেষ থাকবে সেইসংখ্যানির্দিষ্ট বারকে নির্দেশকরবে।

ভাগশেষ ০ হলে বার হবে রবিবার
ভাগশেষ ১ হলে বার হবে সোম বার
ভাগশেষ ২ হলে বার হবে মঙ্গলবার
ভাগশেষ ৩ হলে বার হবে বুধবার
ভাগশেষ ৪ হলে বার হবে বৃহস্পতিবার
ভাগশেষ ৫ হলে বার হবে শুক্রবার

এখানে ১৩০/৭= ভাগশেষহয় ৪ যা বৃহস্পতিবারকে নির্দেশ করে।সুতরাং নির্নেয় বার=বৃহস্পতিবার

লক্ষ্যকরুনঃ লিপইয়ার এর ক্ষেত্রে জানুয়ারীর নম্বর ৫ এর বদলে ৪ হবে।

কোডিংঅংশঃ
উপরের লজিক অনুযায়ী সি প্রোগ্রামিং দ্বারা কোডিং করা যাক ।

#include <stdio.h>
#include <conio.h>
int main()
{
int date,month,y,y1,y2,a,b,c,d,re,sum,sum1,re1,tot;
printf(“Instruction: At first give date(ex:17), then give year(ex:2014)nthen type 1st two digit of year(ex:20).Next give last two digit of year(ex:14)nAt last give month number(Ex:5)nn”);

printf(“Enter Date=a”);
scanf(“%d”,&date);
printf(“Enter Year=a”);
scanf(“%d”,&y);

printf(“Enter 1st two digits of Year=a”);
scanf(“%d”,&y1);

printf(“Enter last two digits of Year=a”);
scanf(“%d”,&y2);
printf(“Enter Month Number=a”);
scanf(“%d”,&month);

if(month==1||month==10){
a=5;
if(y%4==0 && y%100!=0||y%400==0){
if(month==1)
a=4; //লিপইয়ারহলেজানুয়ারী=৪ হবে ।
}
}
if(month==2)
a=0;
if(y%4==0 && y%100!=0||y%400==0)
{
if(month==2)
a=0;
}
if(month==3||month==11){
a=1;
}
if(month==4||month==7){
a=4;
sum=(date+a);
}
if(month==5){
a=6;
}
if(month==6){
a=2;
}
if(month==8){
a=0;
}
if(month==9||month==12){
a=3;
}

sum=date+a;

re=(y1%4);
if(re==3){
b=2;
}
if(re==2){
b=4;
}
if(re==1){
b=6;
}
if(re==0){
b=1;
}
c=(y2/4);
d=(y2+c);
sum1=(b+d);
tot=(sum+sum1);
re1=tot%7;
if(re1==0){
printf(“nDay= Sundaya”);
}
if(re1==1){
printf(“nDay= Mondaya”);
}
if(re1==2){
printf(“nDay= Tuesdaya”);
}
if(re1==3){
printf(“nDay= Wednesdaya”);
}
if(re1==4){
printf(“nDay= Thursdaya”);
}
if(re1==5){
printf(“nDay= Fridaya”);
}
if(re1==6){
printf(“nDay= Saturdaya”);
}
getch();
}

সি প্রোগ্রাম দিয়ে সিরিজ সমাধান

সি প্রোগ্রাম দিয়ে সিরিজ সমাধান

আমাদেরকে বলা হল এমন একটি সি প্রোগ্রাম লিখ যা নিন্মোক্ত সিরিজের প্রথম n সংখ্যক পদের যোগফল দেখাবে

1 2+ 32 + 52+…. + n2  যেখানে n হচ্ছে যেকোন ইনপুট।

সিরিজটি আমরা লক্ষ করি।সিরিজটি কে এভাবে লেখা যায়-

1 2+ 32 + 52+ 72+…. + n2

(1) 2+ (3)2+ (5)2+ (5+2)2+…. + n2

(1) 2+ (3)2+ (3+2)2+ (5+2)2+…. + n2

(1) 2+ (1+2)2+ (3+2)2+ (5+2)2+…. + n2

সিরিজটির প্রদগুলোকে স্কয়ার বিহীন সিকোয়েন্স কল্পনা করলে তা হবে নিন্মরূপ

(1), (1+2),(3+2) ,(5+2),…. ,n

প্রত্যেকটি পদ তার আগের পদ এবং 2 এর সমস্টির সমান। তার মানে যদি আমরা একটি সংখ্যা (এই অনুক্রমে তা 1) নিয়ে তার সাথে পর্যায়ক্রমে 2 যোগ করতে থাকি তাহলে প্রত্যেকবার আমরা বর্তমান সংখ্যার পরবর্তি সংখ্যাটি পাবো। যেহেতু আমরা একই কাজ বারবার করবো-এই আমরা এইখানে লুপ (for loop) ব্যবহার করবো । অর্থ্যাৎ লুপ হচ্ছে যা একই কাজ বার বার করে। আমরা আমাদের কোড লিখা শুরু করি।

#include
int main()

 

সিরিজটি পাওয়ার জন্য আমাদেরকে তিনটি ভেরিয়েবল নিতে হবে যেগুলি যথাক্রমে n এর মান (যা আমরা ইনপুট হিসেবে নিবো), ধারার যোগফল এবং তৃতীয় টি লুপ ভেরিয়েবল। লুপ ভেরিয়েবল কি তা আমরা একটু পরেই জানব।

int n,i;
int sum=0;
printf("Enter the n i.e. max values of series: ");
scanf("%d",&n);

সিরিজটি শুরু হয়েছে 1 থেকে । তাই আমাদের লুপ শুরু হবে 1 থেকে।এই 1 কে একটি ভেরিয়েবলের মধ্যে রাখা হয়।এটিই লুপ ভেরিয়েবল। সিরিজটিতে পদের মান n এর সমান না হওয়া পর্যন্ত পদের মান 2 করে বাড়তে থাকে।তাই আমাদের লুপটি চলতে থাকবে যতক্ষন না পর্যন্ত লুপ ভেরিয়েবলের মান (আমাদের কোডে i) n এর সমান না হয়। লুপ ডিক্লেয়ার করার সিন্টেক্স নিন্মরুপঃ

for(i =1;i <= n;i+=2)

{

}

এখানে লুপ শুরু হবে i =1 মান টি দিয়ে। i+=2 এর মানে হচ্ছে i এর মান 2 করে বাড়বে। i <= n হচ্ছে লুপের শর্ত বা কন্ডিশন । এটি সত্য হলে লুপ তার কাজ(লুপের মধ্যে যা অ্যাসাইন করা হয় ) চালিয়ে যাবে। এখানে i এর মান n এর চেয়ে কম বা সমান হলেই লুপ চলবে, নতুবা লুপ তার কাজ শেষ করে দিবে।

আমরা বার বার যে কাজ টি করতে যাচ্ছি তা হচ্ছে বারবার বর্গ করে যোগ করা। শুরুতে আমরা ধরে নিয়েছি আমাদের ধারার যোগফল 0 । কাজ টি করার জন্য নিচের লুপের মধ্যে Sum=sum+(i*i) অ্যাসাইন করি।

for(i =1;i <= n;i+=2)

{
Sum=sum+(i*i);
}

i =1 হলে লুপের ভিতর থাকা Sum=sum+(i*i) কমান্ড কম্পাইলার একবার রীড করবে। অর্থ্যৎ Sum মান হবে Sum=0+(1*1)=1 । তারপর i এর মান 2 বৃদ্ধি পেয়ে 3 হবে। কম্পাইলার Sum=1+(2*2)=5 করে দিবে। এভাবে বারবার i এবং sum এর মান বাড়তে থাকবে। যখন i = n হবে তখনও লুপের ভিতরের কমান্ড রীড হবে। ইনপুট হিসেবে n=100 নিলে লুপের সর্বশেষ কাজ হবে
Sum= 328350+(100*100)=338350 করা।

এখন শুধুমাত্র printf(“Sum of the series:%d “,sum); লিখেই আমরা আলোচ্য সিরিজের যোগফল পেতে পারি। তাহলে আমাদের সম্পুর্ন কোড হবে নিন্মরূপ-

#include
int main()

{
int n,i;
int sum=0;
printf("Enter the n i.e. max values of series: ");
scanf("%d",&n);
for(i =1;i <= n;i+=2)
{
Sum=sum+(i*i);
}

printf("Sum of the series:%d ",sum);

return 0;
}

মনে করো আমরা লুপ ব্যবহার করতে চাই না সেক্ষেত্রে আমাদের ধারার যোগফল বের করার সূত্র জানতে হবে।

n সংখ্যক বিজোড় স্বাভাবিক সংখ্যার বর্গের সমষ্টি:

1

2

3

4

5

6

1 2+ 32 + 52+ 72+…. + n2 = (n * (2n + 1)*(2n – 1)) / 3 খুব সহজেই (n * (2n + 1)*(2n – 1)) / 3 সূত্র ব্যবহার করে আমরা উপরের ধারার সমষ্টি নির্ণয় করে ফেলতে পারি ( যদিও দেখলে এভাবে সূত্র বের করা কত কঠিন )। কিন্তু সকল ক্ষেত্রে ধারার সমষ্টি এভাবে বের করা সম্ভব নাও হতে পারে।

#include<stdio.h>
int main()

{ 
   int n,i;
   int sum=0;
   printf("Enter the n i.e. max values of series: ");
   scanf("%d",&n);
   sum=(n * (2n + 1)*(2n - 1)) / 3; 
   printf("Sum of the series:%d ",sum);
   return 0; 
} 

প্রথম n সংখ্যক স্বাভাবিক সংখ্যার বর্গের সমষ্টি:

1 2+ 22 + 32+ 42+…. + n2  = { n(n+1)(2n+1)}/6

খুব সহজেই { n(n+1)(2n+1)}/6 সূত্র ব্যবহার করে আমরা n সংখ্যক স্বাভাবিক সংখ্যার বর্গের সমষ্টি নির্ণয় করে ফেলতে পারি।

#include
int main()
{
    int n;
    int sum=0;
    printf("Enter the n i.e. max values of series:");
    scanf("%d",n);
    sum = { n(n+1)(2n+1)}/6;
    printf("Sum of the series:%d ",sum);
    return 0;
}

আবার আমরা জানি প্রথম n সংখ্যক স্বাভাবিক সংখ্যার ঘনের সমষ্টি:

1 3+ 23 + 33+ 43+…. + n3 = {n(n+1)/2}^2

খুব সহজেই {n(n+1)/2}^2 সূত্র ব্যবহার করে আমরা n সংখ্যক স্বাভাবিক সংখ্যার ঘনের সমষ্টি নির্ণয় করে ফেলতে পারি।

এখন যদি প্রথম n সংখ্যক স্বাভাবিক সংখ্যার চতুর্ঘাতের সমষ্টি নির্ণয় করতে বলা হয়:

1 4+ 24 + 34+ 44+…. + n4  = ? ?

খুব সহজেই হয়তো সূত্র বের করে আমরা n সংখ্যক স্বাভাবিক সংখ্যার চতুর্ঘাতের সমষ্টি নির্ণয় করে ফেলতে পারি।

এখন যদি প্রথম n সংখ্যক স্বাভাবিক সংখ্যার পঞ্চ ঘাত বা ষষ্ঠ ঘাত এর সমষ্টি নির্ণয় করতে বলা হয় কি করবো ?

খুব সহজেই এবার হয়তো সূত্র বের করা যাবে না। তাই আমরা যদি লুপ দিয়ে একটি কম্পিউটার প্রোগ্রাম লিখে ফেলি তাহলেই আমাদের এই সমস্যা সমাধান হয়ে যায়।

যেমন নিচের প্রোগ্রাম এ প্রথম n সংখ্যক স্বাভাবিক সংখ্যার চতুর্ঘাতের সমষ্টি নির্ণয় করতে বলা হয়: 1 5+ 25 + 35+ 45+…. + n5 

#include<stdio.h>
int main()

{ 
   int n,i;
   int sum=0;
   printf("Enter the n i.e. max values of series: ");
   scanf("%d",&n);
   for(i =1;i <= n;i+=1)
   {  
      Sum=sum+(i*i*i*i*i);
   } 
   
   printf("Sum of the series:%d ",sum);

   return 0; 
}