Skill

প্র্যাকটিস প্রোজেক্টস

সি প্রোগ্রামিং উদাহরণ (C Examples) - Computer Science

492

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

1. ক্যালকুলেটর

  • বর্ণনা: একটি কনসোল ভিত্তিক ক্যালকুলেটর তৈরি করুন যা মৌলিক গাণিতিক অপারেশন (যোগ, বিয়োগ, গুণ, ভাগ) সম্পাদন করতে সক্ষম।
  • ফিচারস:
    • ব্যবহারকারীর ইনপুট গ্রহণ করুন।
    • ত্রুটি হ্যান্ডলিং যেমন শূন্য দ্বারা ভাগ।
    • অপারেশন নির্বাচন করার জন্য ইউজার মেনু।

2. স্টুডেন্ট গ্রেডিং সিস্টেম

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা শিক্ষার্থীদের নাম, রোল নম্বর এবং প্রাপ্ত গ্রেড সংরক্ষণ করে।
  • ফিচারস:
    • ডেটা স্ট্রাকচার (স্ট্রাক্ট) ব্যবহার করে শিক্ষার্থীদের তথ্য সংরক্ষণ।
    • শিক্ষার্থীদের গড় গ্রেড গণনা করুন।
    • তথ্য ফাইল থেকে পড়া এবং ফাইলে লেখা।

3. টেক্সট ফাইল প্রক্রিয়াকরণ

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা একটি টেক্সট ফাইল থেকে তথ্য পড়ে এবং কিছু মৌলিক তথ্য প্রদান করে।
  • ফিচারস:
    • শব্দ, পঙক্তি এবং অক্ষরের সংখ্যা গণনা করুন।
    • সবচেয়ে সাধারণ শব্দ খুঁজে বের করুন।
    • ফাইল থেকে তথ্য সংশোধন এবং নতুন ফাইল তৈরি করুন।

4. সিম্পল গেম (যেমন টিক-ট্যাক-টো)

  • বর্ণনা: একটি টেক্সট ভিত্তিক টিক-ট্যাক-টো গেম তৈরি করুন।
  • ফিচারস:
    • প্লেয়ার ১ এবং প্লেয়ার ২ এর জন্য বোর্ড তৈরি করুন।
    • গেমের ফলাফল এবং বিজয়ী নির্ধারণ করুন।
    • গেম পুনরায় খেলার অপশন দিন।

5. কনসোলে টাস্ক ম্যানেজার

  • বর্ণনা: একটি টাস্ক ম্যানেজার তৈরি করুন যা ইউজারকে টাস্ক যোগ, মুছে ফেলা এবং দেখার সুযোগ দেয়।
  • ফিচারস:
    • টাস্কের নাম এবং ডেটার সাথে স্ট্রাক্ট ব্যবহার করুন।
    • টাস্ক সংরক্ষণের জন্য ফাইল ব্যবস্থাপনা।
    • ইনপুট যাচাইকরণ এবং ত্রুটি হ্যান্ডলিং।

6. সিম্পল ব্যাংকিং সিস্টেম

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা ব্যাংক একাউন্টের তথ্য (ব্যালেন্স, ডিপোজিট, উইথড্রয়াল) সংরক্ষণ করে।
  • ফিচারস:
    • গ্রাহক নিবন্ধন এবং লগইন সিস্টেম।
    • ব্যালেন্স চেক, ডিপোজিট, উইথড্রয়াল।
    • ফাইল ব্যবস্থাপনার মাধ্যমে তথ্য সংরক্ষণ।

7. স্টাডি প্ল্যান মেকার

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা ব্যবহারকারীর ইনপুটের ভিত্তিতে একটি স্টাডি প্ল্যান তৈরি করে।
  • ফিচারস:
    • বিষয় ও সময়সূচী অনুযায়ী প্ল্যান তৈরি।
    • র্যান্ডমভাবে বিভিন্ন বিষয় নির্বাচন করা।
    • স্টাডি প্ল্যান ফাইল আকারে সংরক্ষণ।

8. ইনভেন্টরি সিস্টেম

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

9. আবহাওয়া পূর্বাভাস প্রোগ্রাম

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা ইউজার থেকে শহরের নাম নিয়ে এবং সেটি সম্পর্কে পূর্বাভাস তথ্য দেখায়।
  • ফিচারস:
    • স্থানীয় API ব্যবহার করে ডেটা সংগ্রহ।
    • ত্রুটি হ্যান্ডলিং করে তথ্য প্রদর্শন।

10. একটি সিম্পল ফাইল আর্কাইভার

  • বর্ণনা: একটি প্রোগ্রাম তৈরি করুন যা নির্দিষ্ট ফাইল ফরম্যাটের ফাইলগুলোকে একত্রিত করে এবং আর্কাইভ হিসেবে সংরক্ষণ করে।
  • ফিচারস:
    • ফাইল নির্বাচন এবং কপি করা।
    • আর্কাইভ ফাইল তৈরি এবং সংরক্ষণ।

উপসংহার

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

Content added By

একটি বেসিক ক্যালকুলেটর অ্যাপ তৈরি করা একটি চমৎকার প্রকল্প। এই প্রকল্পে আমরা মৌলিক গাণিতিক অপারেশন (যোগ, বিয়োগ, গুণ, ভাগ) সম্পাদন করার জন্য একটি কনসোল ভিত্তিক ক্যালকুলেটর তৈরি করব। নিচে C প্রোগ্রামিং ভাষায় ক্যালকুলেটর অ্যাপের কোড উদাহরণ দেওয়া হলো।

ক্যালকুলেটর প্রোগ্রাম কোড

#include <stdio.h>

int main() {
    char operator; // অপারেটর ধারণ করার জন্য পরিবর্তনশীল
    double num1, num2, result; // সংখ্যার জন্য পরিবর্তনশীল

    // ইউজারের ইনপুট নেয়া
    printf("Enter first number: ");
    scanf("%lf", &num1);
    
    printf("Enter an operator (+, -, *, /): ");
    scanf(" %c", &operator); // স্পেস ব্যবহার করে অতিরিক্ত ইনপুট এড়াতে

    printf("Enter second number: ");
    scanf("%lf", &num2);

    // অপারেটর অনুযায়ী হিসাব করা
    switch (operator) {
        case '+':
            result = num1 + num2;
            printf("%.2lf + %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '-':
            result = num1 - num2;
            printf("%.2lf - %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '*':
            result = num1 * num2;
            printf("%.2lf * %.2lf = %.2lf\n", num1, num2, result);
            break;
        case '/':
            // শূন্য দ্বারা ভাগ এড়াতে যাচাইকরণ
            if (num2 != 0) {
                result = num1 / num2;
                printf("%.2lf / %.2lf = %.2lf\n", num1, num2, result);
            } else {
                printf("Error: Division by zero is not allowed.\n");
            }
            break;
        default:
            printf("Error: Invalid operator.\n");
            break;
    }

    return 0;
}

কোডের ব্যাখ্যা

হেডার ফাইল অন্তর্ভুক্ত করা:

  • #include <stdio.h>: স্ট্যান্ডার্ড ইনপুট এবং আউটপুট ফাংশন ব্যবহারের জন্য।

প্রধান ফাংশন:

  • int main(): প্রোগ্রামের প্রধান ফাংশন।

প্রয়োজনীয় পরিবর্তনশীল সংজ্ঞায়িত করা:

  • char operator: অপারেটর ধারণ করার জন্য।
  • double num1, num2, result: সংখ্যাগুলি এবং ফলাফল ধারণ করার জন্য।

ইনপুট নেয়া:

  • ব্যবহারকারীর কাছ থেকে প্রথম সংখ্যা, অপারেটর এবং দ্বিতীয় সংখ্যা ইনপুট হিসেবে নেওয়া হয়।

অপারেটর অনুযায়ী হিসাব করা:

  • switch স্টেটমেন্ট ব্যবহার করে অপারেটরের ভিত্তিতে সংশ্লিষ্ট গাণিতিক অপারেশন সম্পন্ন করা হয়।

ভাগের ক্ষেত্রে শূন্য যাচাইকরণ:

  • দ্বিতীয় সংখ্যাটি শূন্য হলে একটি ত্রুটি মেসেজ প্রদর্শন করা হয়।

কিভাবে প্রোগ্রামটি রান করবেন

  1. কোডটি একটি .c ফাইলে সংরক্ষণ করুন (যেমন calculator.c)।
  2. কমান্ড লাইন বা টার্মিনাল ওপেন করুন।
  3. কোডটি কম্পাইল করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
gcc calculator.c -o calculator
  1. প্রোগ্রামটি চালাতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
./calculator

উপসংহার

এই ক্যালকুলেটর অ্যাপটি মৌলিক গাণিতিক অপারেশন সম্পন্ন করতে সক্ষম। আপনি যদি আরো উন্নত ফিচার যেমন, ফাংশনালিটি, ইতিহাস সংরক্ষণ, বা ইউজার ইন্টারফেস যুক্ত করতে চান তবে সেগুলোও করতে পারেন। এই প্রকল্পটি আপনার C প্রোগ্রামিং দক্ষতা বাড়ানোর জন্য একটি চমৎকার সুযোগ।

Content added By

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

স্টুডেন্ট ম্যানেজমেন্ট সিস্টেমের ডিজাইন

এই সিস্টেমটি নিম্নলিখিত কার্যকারিতা অন্তর্ভুক্ত করবে:

  1. ছাত্র তথ্য সংরক্ষণ
  2. ছাত্র তথ্য দেখানো
  3. ছাত্র তথ্য আপডেট করা
  4. ছাত্র তথ্য মুছে ফেলা
  5. ছাত্রের তালিকা দেখানো

কোড উদাহরণ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENTS 100

// স্টুডেন্টের ডেটা গঠন
struct Student {
    int id;
    char name[50];
    float grade;
};

// গ্লোবাল ভ্যারিয়েবল
struct Student students[MAX_STUDENTS];
int student_count = 0;

// নতুন ছাত্র যোগ করা
void addStudent() {
    if (student_count >= MAX_STUDENTS) {
        printf("Cannot add more students. Limit reached!\n");
        return;
    }
    struct Student newStudent;
    printf("Enter student ID: ");
    scanf("%d", &newStudent.id);
    printf("Enter student name: ");
    scanf("%s", newStudent.name);
    printf("Enter student grade: ");
    scanf("%f", &newStudent.grade);
    
    students[student_count++] = newStudent; // নতুন ছাত্র যুক্ত করা
    printf("Student added successfully!\n");
}

// ছাত্রের তথ্য প্রদর্শন
void displayStudents() {
    if (student_count == 0) {
        printf("No students available.\n");
        return;
    }
    printf("\nStudent List:\n");
    for (int i = 0; i < student_count; i++) {
        printf("ID: %d, Name: %s, Grade: %.2f\n", students[i].id, students[i].name, students[i].grade);
    }
}

// ছাত্রের তথ্য আপডেট করা
void updateStudent() {
    int id;
    printf("Enter student ID to update: ");
    scanf("%d", &id);
    
    for (int i = 0; i < student_count; i++) {
        if (students[i].id == id) {
            printf("Enter new name: ");
            scanf("%s", students[i].name);
            printf("Enter new grade: ");
            scanf("%f", &students[i].grade);
            printf("Student updated successfully!\n");
            return;
        }
    }
    printf("Student not found!\n");
}

// ছাত্রের তথ্য মুছে ফেলা
void deleteStudent() {
    int id;
    printf("Enter student ID to delete: ");
    scanf("%d", &id);
    
    for (int i = 0; i < student_count; i++) {
        if (students[i].id == id) {
            for (int j = i; j < student_count - 1; j++) {
                students[j] = students[j + 1]; // ছাত্র তথ্য মুছে ফেলা
            }
            student_count--;
            printf("Student deleted successfully!\n");
            return;
        }
    }
    printf("Student not found!\n");
}

// প্রধান ফাংশন
int main() {
    int choice;
    
    do {
        printf("\nStudent Management System\n");
        printf("1. Add Student\n");
        printf("2. Display Students\n");
        printf("3. Update Student\n");
        printf("4. Delete Student\n");
        printf("5. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);
        
        switch (choice) {
            case 1:
                addStudent();
                break;
            case 2:
                displayStudents();
                break;
            case 3:
                updateStudent();
                break;
            case 4:
                deleteStudent();
                break;
            case 5:
                printf("Exiting...\n");
                break;
            default:
                printf("Invalid choice! Please try again.\n");
        }
    } while (choice != 5);
    
    return 0;
}

কোডের কাজের প্রক্রিয়া

  • স্টুডেন্ট স্ট্রাকচার: struct Student গঠন করে ছাত্রের তথ্য (ID, নাম, গ্রেড) সংরক্ষণ করে।
  • স্টুডেন্ট যুক্ত করা: addStudent() ফাংশন নতুন ছাত্রের তথ্য গ্রহণ করে এবং students অ্যারেতে যুক্ত করে।
  • স্টুডেন্টের তালিকা প্রদর্শন: displayStudents() ফাংশন সমস্ত ছাত্রের তথ্য প্রদর্শন করে।
  • স্টুডেন্ট আপডেট করা: updateStudent() ফাংশন একটি ছাত্রের তথ্য আপডেট করে।
  • স্টুডেন্ট মুছে ফেলা: deleteStudent() ফাংশন একটি ছাত্রের তথ্য মুছে ফেলে।

ব্যবহার

এই সিস্টেমটি কম্পাইল এবং রান করে বিভিন্ন অপারেশন সম্পাদন করা যাবে। ব্যবহারকারী মেনু থেকে বিভিন্ন অপশন নির্বাচন করে ছাত্রের তথ্য যুক্ত, প্রদর্শন, আপডেট বা মুছে ফেলতে পারবে।

সারসংক্ষেপ

স্টুডেন্ট ম্যানেজমেন্ট সিস্টেম একটি মৌলিক সফটওয়্যার প্রকল্প যা শিক্ষার্থীদের তথ্য সংরক্ষণ এবং পরিচালনা করার জন্য তৈরি করা হয়েছে। এটি সি প্রোগ্রামিংয়ের মৌলিক ধারণা এবং ডেটা স্ট্রাকচারগুলোর ব্যবহারকে তুলে ধরে।

Content added By

ফাইল থেকে ডেটা পড়া এবং লেখার জন্য সি প্রোগ্রামিং ভাষায় FILE পয়েন্টার এবং বিভিন্ন ফাইল হ্যান্ডলিং ফাংশন ব্যবহার করা হয়। এই ফাংশনগুলোর মধ্যে fopen(), fprintf(), fscanf(), fgets(), fputs(), এবং fclose() অন্তর্ভুক্ত।

ফাইল থেকে ডেটা পড়া এবং লেখা: মৌলিক পদক্ষেপ

  1. ফাইল খোলা: fopen() ব্যবহার করে একটি ফাইল খুলতে হয়।
  2. ডেটা লেখা: fprintf() বা fputs() ব্যবহার করে ফাইলে ডেটা লেখা হয়।
  3. ডেটা পড়া: fscanf() বা fgets() ব্যবহার করে ফাইল থেকে ডেটা পড়া হয়।
  4. ফাইল বন্ধ করা: fclose() ব্যবহার করে ফাইল বন্ধ করতে হয়।

উদাহরণ: ফাইল থেকে ডেটা লেখা এবং পড়া

১. ফাইল লেখার উদাহরণ

#include <stdio.h>

int main() {
    FILE *file;
    
    // "data.txt" নামক ফাইলটি লেখার জন্য খোলা
    file = fopen("data.txt", "w"); // "w" মোডে ফাইল খোলার অর্থ নতুন ফাইল তৈরি করা অথবা পুরনো ফাইলের বিষয়বস্তু মুছে ফেলা
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1; // ত্রুটি ঘটলে প্রোগ্রাম বন্ধ
    }

    // ফাইলে লেখা
    fprintf(file, "Hello, World!\n");
    fprintf(file, "This is a file handling example in C.\n");

    // ফাইল বন্ধ করা
    fclose(file);
    printf("Data written to file successfully.\n");

    return 0;
}

আউটপুট:

Data written to file successfully.

ফাইলের বিষয়বস্তু (data.txt):

Hello, World!
This is a file handling example in C.

২. ফাইল থেকে ডেটা পড়ার উদাহরণ

#include <stdio.h>

int main() {
    FILE *file;
    char buffer[100];

    // "data.txt" নামক ফাইলটি পড়ার জন্য খোলা
    file = fopen("data.txt", "r"); // "r" মোডে ফাইল খোলার অর্থ পড়ার জন্য ফাইল খোলা
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1; // ত্রুটি ঘটলে প্রোগ্রাম বন্ধ
    }

    // ফাইল থেকে ডেটা পড়া
    printf("Data read from file:\n");
    while (fgets(buffer, sizeof(buffer), file) != NULL) { // fgets() ব্যবহার করে লাইন বাই লাইন পড়া
        printf("%s", buffer);
    }

    // ফাইল বন্ধ করা
    fclose(file);
    return 0;
}

আউটপুট:

Data read from file:
Hello, World!
This is a file handling example in C.

ব্যবহারিক বিশ্লেষণ

  1. ফাইল খোলা: fopen() ফাংশনটি ফাইলের নাম এবং মোড (পড়া বা লেখা) নিয়ে কাজ করে। এটি একটি FILE পয়েন্টার রিটার্ন করে।
  2. ডেটা লেখা: fprintf() বা fputs() ফাংশনের মাধ্যমে ফাইলে ডেটা লেখা হয়। fprintf() ফরম্যাটেড আউটপুট দেয়, যেখানে fputs() সরাসরি স্ট্রিং লেখে।
  3. ডেটা পড়া: fscanf() বা fgets() ফাংশনের মাধ্যমে ফাইল থেকে ডেটা পড়া হয়। fscanf() ফরম্যাটেড ইনপুট দেয়, যেখানে fgets() একটি লাইনে পড়ে।
  4. ফাইল বন্ধ করা: কাজ শেষে fclose() ফাংশন ব্যবহার করে ফাইলটি বন্ধ করতে হয়, যা সম্পদ মুক্ত করে।

অতিরিক্ত ফাংশন

  • fread(): বাইনারি ফাইল থেকে ডেটা পড়ার জন্য।
  • fwrite(): বাইনারি ফাইলে ডেটা লেখার জন্য।

উদাহরণ: বাইনারি ফাইল থেকে ডেটা পড়া এবং লেখা

#include <stdio.h>
#include <stdlib.h>

struct Student {
    int id;
    char name[50];
};

int main() {
    struct Student s1 = {1, "Alice"};
    struct Student s2;

    // বাইনারি ফাইলে লেখা
    FILE *file = fopen("student.dat", "wb");
    fwrite(&s1, sizeof(struct Student), 1, file);
    fclose(file);

    // বাইনারি ফাইল থেকে পড়া
    file = fopen("student.dat", "rb");
    fread(&s2, sizeof(struct Student), 1, file);
    fclose(file);

    printf("ID: %d, Name: %s\n", s2.id, s2.name);
    return 0;
}

আউটপুট:

ID: 1, Name: Alice

সারসংক্ষেপ

ফাইল থেকে ডেটা পড়া এবং লেখা সি প্রোগ্রামিংয়ের একটি মৌলিক এবং গুরুত্বপূর্ণ অংশ। fopen(), fprintf(), fscanf(), fgets(), fputs(), এবং fclose() ফাংশনগুলি ব্যবহার করে ফাইলের সাথে কার্যকরীভাবে কাজ করা যায়। সঠিকভাবে ফাইল হ্যান্ডলিং করলে ডেটা সংরক্ষণ ও পুনরুদ্ধার প্রক্রিয়া উন্নত হয়।

Content added By

একটি টু-ডু লিস্ট প্রোগ্রাম তৈরি করা একটি চমৎকার প্রকল্প যা আপনাকে C প্রোগ্রামিংয়ের ডেটা স্ট্রাকচার, ফাইল অপারেশন এবং ইনপুট/আউটপুট পরিচালনা করতে সহায়তা করবে। এই প্রোগ্রামে ব্যবহারকারী টাস্ক যোগ, মুছতে এবং দেখতে সক্ষম হবে।

নিচে একটি কনসোল ভিত্তিক টু-ডু লিস্ট প্রোগ্রামের উদাহরণ দেওয়া হলো:

টু-ডু লিস্ট প্রোগ্রাম কোড

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_TASKS 100
#define TASK_LENGTH 100

// ফাংশন ডিক্লারেশন
void addTask(char tasks[][TASK_LENGTH], int *taskCount);
void viewTasks(char tasks[][TASK_LENGTH], int taskCount);
void deleteTask(char tasks[][TASK_LENGTH], int *taskCount);

int main() {
    char tasks[MAX_TASKS][TASK_LENGTH]; // টাস্ক সংরক্ষণের জন্য 2D অ্যারে
    int taskCount = 0; // বর্তমান টাস্কের সংখ্যা
    int choice;

    while (1) {
        // মেনু প্রদর্শন
        printf("\nTo-Do List Menu:\n");
        printf("1. Add Task\n");
        printf("2. View Tasks\n");
        printf("3. Delete Task\n");
        printf("4. Exit\n");
        printf("Choose an option (1-4): ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addTask(tasks, &taskCount);
                break;
            case 2:
                viewTasks(tasks, taskCount);
                break;
            case 3:
                deleteTask(tasks, &taskCount);
                break;
            case 4:
                printf("Exiting the program.\n");
                exit(0);
            default:
                printf("Invalid choice. Please try again.\n");
        }
    }

    return 0;
}

// টাস্ক যোগ করার ফাংশন
void addTask(char tasks[][TASK_LENGTH], int *taskCount) {
    if (*taskCount >= MAX_TASKS) {
        printf("Error: Task list is full. Cannot add more tasks.\n");
        return;
    }

    printf("Enter a task: ");
    getchar(); // নতুন লাইন অগ্রাহ্য করার জন্য
    fgets(tasks[*taskCount], TASK_LENGTH, stdin);
    // নতুন লাইনটি সরিয়ে ফেলুন
    tasks[*taskCount][strcspn(tasks[*taskCount], "\n")] = 0; 
    (*taskCount)++;
    printf("Task added successfully!\n");
}

// টাস্কগুলি দেখানোর ফাংশন
void viewTasks(char tasks[][TASK_LENGTH], int taskCount) {
    if (taskCount == 0) {
        printf("No tasks available.\n");
        return;
    }

    printf("\nYour To-Do List:\n");
    for (int i = 0; i < taskCount; i++) {
        printf("%d. %s\n", i + 1, tasks[i]);
    }
}

// টাস্ক মুছে ফেলার ফাংশন
void deleteTask(char tasks[][TASK_LENGTH], int *taskCount) {
    int index;

    if (*taskCount == 0) {
        printf("No tasks available to delete.\n");
        return;
    }

    viewTasks(tasks, *taskCount); // প্রথমে টাস্কগুলি দেখান
    printf("Enter the task number to delete: ");
    scanf("%d", &index);

    if (index < 1 || index > *taskCount) {
        printf("Invalid task number.\n");
        return;
    }

    // টাস্ক মুছে ফেলা
    for (int i = index - 1; i < *taskCount - 1; i++) {
        strcpy(tasks[i], tasks[i + 1]);
    }
    (*taskCount)--; // টাস্ক সংখ্যা কমানো
    printf("Task deleted successfully!\n");
}

কোডের ব্যাখ্যা

হেডার ফাইল অন্তর্ভুক্ত করা:

  • #include <stdio.h>: ইনপুট এবং আউটপুট ফাংশন ব্যবহারের জন্য।
  • #include <stdlib.h>: প্রোগ্রাম বন্ধ করার জন্য।
  • #include <string.h>: স্ট্রিং সম্পর্কিত ফাংশন ব্যবহারের জন্য।

নির্ধারিত কনস্ট্যান্টস:

  • MAX_TASKS: সর্বাধিক টাস্কের সংখ্যা।
  • TASK_LENGTH: প্রতিটি টাস্কের সর্বাধিক দৈর্ঘ্য।

প্রধান ফাংশন:

  • int main(): প্রোগ্রামের প্রধান ফাংশন যেখানে মেনু প্রদর্শিত হয় এবং ব্যবহারকারীর ইনপুট নেওয়া হয়।

ফাংশনগুলো:

  • addTask(): নতুন টাস্ক যোগ করার জন্য।
  • viewTasks(): বর্তমান টাস্কগুলি দেখানোর জন্য।
  • deleteTask(): একটি নির্দিষ্ট টাস্ক মুছতে।

কিভাবে প্রোগ্রামটি রান করবেন

  1. কোডটি একটি .c ফাইলে সংরক্ষণ করুন (যেমন todo_list.c)।
  2. কমান্ড লাইন বা টার্মিনাল ওপেন করুন।
  3. কোডটি কম্পাইল করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
  4. প্রোগ্রামটি চালাতে নিম্নলিখিত কমান্ড ব্যবহার করুন:

উপসংহার

এই টু-ডু লিস্ট প্রোগ্রামটি মৌলিক ফিচার সহ একটি কার্যকরী টাস্ক ম্যানেজমেন্ট সিস্টেম তৈরি করতে সহায়তা করে। আপনি এটি উন্নত করতে অন্যান্য ফিচার যেমন ফাইল সেভিং, অনুস্মারক, বা প্রায়োরিটি যুক্ত করতে পারেন। এই প্রকল্পটি C প্রোগ্রামিংয়ের দক্ষতা বাড়ানোর জন্য একটি চমৎকার সুযোগ।

./todo_list
gcc todo_list.c -o todo_list
Content added By
Promotion

Are you sure to start over?

Loading...