১০০টি বইয়ের তথ্য রাখার জন্য সি ভাষায় একটি প্রোগ্রাম কিভাবে লিখতে পারি? এই ধরণের প্রোগ্রাম বোঝার জন্য আমার সিনট্যাক্সসহ লজিক দরকার। আমার প্রোগ্রামিং লজিকের ধারণা তৈরি করতে সিনট্যাক্সসহ সাহায্য দরকার। অগ্রিম ধন্যবাদ।

asked 16 Jan, 22:57

md_nayeem's gravatar image

md_nayeem
655

edited 17 Jan, 07:08

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
63118

ইংরেজিতে প্রশ্ন করতে তীব্রভাবে নিরুৎসাহিত করা হলো। সাইটের নীতিমালা মেনে প্রশ্ন না করলে প্রশ্নটি মুছে ফেলা হতে পারে। প্রশ্ন করার আগে পরিচিতি এবং FAQ পড়তে হবে।

(17 Jan, 07:46) Mosharraf Hosain ♦

একটি বইয়ের তথ্য সংরক্ষণ করতে আমাদের এর বিভিন্ন রকম তথ্য যেমনঃ বইয়ের নাম, লেখক, পৃষ্ঠাসংখ্যা ইত্যাদি সংরক্ষণ করতে হবে। এগুলো সংরক্ষণ করার জন্য আমাদের কিছু ভ্যারিয়েবল নিতে হবে। এখন প্রথম বইয়ের জন্য আমরা নিম্নোক্ত ভ্যারিয়েবলগুলো ডিক্লেয়ার করতে পারিঃ

char title[50];
char author[20];
int n_pages;

একইভাবে দ্বিতীয় বইয়ের তথ্য রাখার জন্য আমাদের ভিন্ননামে একইরকম কিছু ভ্যারিয়েবল নিতে হবে:

char title2[50];
char author2[20];
int n_pages2;

তো এভাবে ১০০টি বইয়ের জন্য আমাদের ৩০০টি ভ্যারিয়েবল ডিক্লেয়ার করতে হবে! প্রোগ্রামের ভেতর সেগুলো নিয়ে আবার কাজও করতে হবে(ভ্যারিয়েবলে মান রাখা, প্রিন্ট করা ইত্যাদি)! যেকারণে প্রোগ্রাম ম্যানেজ করাটা খুবই কষ্টকর এবং ঝামেলার হয়ে যাবে।

এই ঝামেলা দূর করার জন্য আমরা একই কাজ মাত্র তিনটি অ্যারে দিয়ে করে ফেলতে পারি:

char title[100][50]    // 50 sized string array of size 100 to store 100 book's title
char author[100][20]   // 20 sized string array of size 100 to store 100 book's author
int n_pages[100]       // 100 size integer array to store 100 book's page information

এখন ১০০ বইয়ের তথ্য নিয়ে কাজ করার জন্য আমাদের মাত্র তিনটি অ্যারে নিয়ে কাজ করলেই হচ্ছে। আবার এক্ষেত্রে আমরা লুপের সাহায্য সহজেই তথ্যগুলো নিয়ে কাজ করার সুবিধা পাচ্ছি।

স্ট্রাকচার ব্যাবহার করে এই কাজটাকে আমরা আরও সহজ করতে পারি। স্ট্রাকচার হচ্ছে বিভিন্ন ডেটা টাইপের সংকলন। স্ট্রাকচার দিয়ে আমরা নিজেদের কাস্টম ডেটা টাইপ তৈরি করতে পারি। যেমন ইন্টিজার নিয়ে কাজ করার জন্য আমাদের int টাইপ আছে। ক্যারেক্টার নিয়ে কাজ করার জন্য আছে char। এখন আমরা বই এর তথ্য নিয়ে কাজ করার জন্য স্ট্রাকচার ব্যবহার করে Book ডেটা টাইপ তৈরি করবো। এতে থাকবে বইয়ের টাইটেল এবং লেখকের নাম রাখার জন্য দুটি char অ্যারে আর বইয়ের পৃষ্ঠা সংখ্যা রাখার জন্য একটি int টাইপ।

struct Book{
    char title[50];
    char author[20];
    int n_pages;
};

এখন আমরা একটি বইয়ের তথ্য রাখার জন্য আমাদের তৈরি করা Book টাইপের একটি ভ্যারিয়েবল ডিক্লেয়ার করতে পার

struct Book cpbook;

আমাদের Book টাইপ ভ্যারিয়েবলটি নিয়ে আমরা নিচের পদ্ধতিতে কাজ করতে পারি:

// This how you access in different fields of our custom Book type
strcpy(cpbook.title, "The C Programming Language"); // will store title
strcpy(cpbook.author, "K&R"); // will store author
cpbook.n_pages = 200; // pages

printf("Title: %s\nAuthor: %s\nPages: %d\n", cpbook.title, cpbook.author, cpbook.pages)

এখন ১০০টি বইয়ের তথ্য নিয়ে কাজ করার জন্য আমরা ১০০ সাইজের একটি Book টাইপ অ্যারে নিতে পারি।

struct Book books[100];

এখন ১০০ টি বইয়ের তথ্য নিয়ে কাজ করার জন্য আমাদের শুধুমাত্র একটি অ্যারে নিয়েই কাজ করতে হবে। নিম্নোক্তভাবে আমরা অ্যারেটি ব্যবহার/পরিবর্তন করতে পারি। প্রথম দুটি বইয়ের তথ্য রাখতেঃ

strcpy(books[0].title, "The C Programming Language");
strcpy(books[0].author, "K&R");
books[0].n_pages = 200;

strcpy(books[1].title, "The Metamorphosis");
strcpy(books[0].author, "Franz Kafka");
books[0].n_pages = 201;
permanent link

answered 17 Jan, 05:34

Ashfaqur%20Rahman's gravatar image

Ashfaqur Rahman
7839

edited 18 Jan, 06:29

ইংরেজিতে উত্তর দেয়া থেকে বিরত থাকার আহ্বান জানাচ্ছি। সাইটের নীতিমালার দিকে সকলের লক্ষ্য রাখা উচিত।

(17 Jan, 07:49) Mosharraf Hosain ♦

এভাবে না জানিয়ে আরেকজনের কন্ট্রিবিউশন এডিট করাটা প্রচন্ড বিরক্তিকর! আবার যখন সেটা অনুবাদের মত কাজ হয়। এতে উত্তরের ভাবই পরিবর্তন হয়ে যেতে পারে। যদি কোন কিছু নীতিমালার লঙ্ঘন মনে হয় সেক্ষেত্রে অবশ্যই প্রথমে সেটা জানানো উচিত। মন্তব্য ফিচারটাতো এজন্য আছেই। আপনি আমাকে বিষয়টা আগে জানাতে পারতেন। আমি ব্যবস্থা নিতাম। সময় না পেলে হয়তো কমিউনিটির সাহায্য নিতাম।

@Mosharraf Hosain

(17 Jan, 08:09) Ashfaqur Rahman

যাইহোক ইংরেজিতে উত্তর দেয়ার কারণ হল প্রশ্নটা ইংরেজিতে করা হয়েছে। আর FAQ থেকে সাইটের নীতিমালা সম্পর্কে আমি যতটুকু জানি বাংলা ব্যাবহার করাটাকে এখানে খুব উৎসাহিত করা হয়েছে কিন্তু কোথাও এ ব্যাপারে কোন স্ট্রিক্ট রুল করা হয়নি যে কারণে হুট করেই একটা প্রশ্ন এডিট করে ফেলা যায় প্রশ্নকারীকে আগে এডিট করার সুযোগ না দিয়েই! এ ব্যাপারে আমি অন্যান্য মডারেটরদের দৃষ্টি আকর্ষণ করব।

(17 Jan, 08:10) Ashfaqur Rahman

আমাকে যেভাবে নির্দেশনা দেয়া হয়েছে সেভাবেই করছি। তাছাড়া সাইটের উদ্দেশ্য সম্পর্কে বলা হয়েছে "বাংলা ভাষায়" একটা প্লাটফর্ম তৈরি করা যেখানে....। অতএব এখানে ইংরেজিতে প্রশ্ন/উত্তর অবশ্যই নীতিমালা বিরোধী। ভাষাগত দিকটি বিশেষভাবে দেখার জন্য আমাকে নির্দেশনা দেয়া হয়েছে। সেজন্য আমি যে কারো যেকোনো লেখাতে হাত দিতে পারি। ভাষান্তর বা অনুবাদে মূল লেখার অনেক কিছুই নষ্ট হয়ে যায়। সেজন্য আমি সবাইকে বাংলায় লেখার অনুরোধ করি। অধিকাংশ ক্ষেত্রে উত্তরদাতারা তাদের লেখায় দ্বিতীয়বার ফিরে আসে না। তাই হাত না দিয়ে উপায় থাকে না। এখানে বর্তমানে মেনন ভাই ছাড়া অন্য কোনো সক্রিয় মডারেটর সম্ভবত নেই। আপনি কষ্ট পেয়ে থাকলে আমি দুঃখিত।

(17 Jan, 09:11) Mosharraf Hosain ♦

না না কষ্ট পাবো কেনো? প্রোগ্রামাবাদে মাঝে মাঝে এডিট করাটা যে খুব দরকার হয়ে যায় এটা আমি ভালই বুঝতে পারি। আমারটা এডিট করাতে কিছুটা বিরক্ত হয়েছি কারণ অনুবাদ করলে লেখার ভাব ঠিক থাকে না আর আমি কিন্তু মোটামুটি এক্টিভ এটা আপনার খেয়াল করার কথা, আমাকে বললে আমি নিজেই এডিট করে নিতাম। আমার মনে হয় যে সবার ক্ষেত্রে প্রথমে নোটিফিকেশন দেয়া উচিত, তারপর রেসপন্স না করলে ব্যাবস্থা নেয়া উচিত।

যাইহোক আমি এটা সময় পেলে এডিট করে নেবো।

(17 Jan, 10:17) Ashfaqur Rahman

আলোচনা করার মূল উদ্দেশ্যটা আসলে ব্যাক্তিগত অনুভুতি প্রকাশ করা না। এটা একটা কমিউনিটি। আমরা এর বিভিন্ন দিক যত আলোচনা করব এটা তত উন্নততর হবে। আমার মনে হয় FAQ সেকশনটা সময় সময় আপডেট করার উচিত কমিউনিটির ইভ্যুইলিউশনের সাথে সাথে। এটা শুরুর দিকে যা ছিল এখনও তাই আছে। বাংলা ভাষায় জোড় দেয়ার ব্যপারটা আরও পরিষ্কার করে লিখে দেয়া উচিত। একটা আলাদা সেকশন রাখা যেতে পারে। কি ধরনের প্রশ্ন করা যাবে আর কি ধরনের যাবে না সেটাও মনে হয় আরেকটু বিস্তারিত আকারে লেখা যায়।

(17 Jan, 10:24) Ashfaqur Rahman

আপনার গুরুত্বপূর্ণ মতামতের জন্য ধন্যবাদ। আপনি মোটামুটি নিয়মিত তা আমি খেয়াল করেছি। FAQ আপডেট করার বিষয়ে আমি তাহমিদ ভাইয়ের সাথে কথা বলবো। উনি আপাতত বইমেলা নিয়ে ব্যস্ত আছেন। সময় হলেই এ বিষয়ে বিস্তারিত আলোচনা হবে। তাছাড়া সাইটের আরো কিছু উন্নয়ন ও সংস্কার হবে। আশা করি মাস ছয়েকের মধ্যে সাইটটি আপডেটেড ও আরো সুন্দর হবে।

(17 Jan, 12:26) Mosharraf Hosain ♦
showing 5 of 7 show 2 more comments
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×401
×13

question asked: 16 Jan, 22:57

question was seen: 373 times

last updated: 18 Jan, 06:29