Menu
CoddyTech

Menyelesaikan Alat

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 22 dari 56.

challenge icon

Tantangan

Mudah

Selesaikan tool daftar tugasmu dengan mengimplementasikan perulangan program utama yang menghubungkan semua fungsi. Pelajaran terakhir ini membuat aplikasi manajemen tugas yang berfungsi penuh, yang berulang kali menampilkan menu dan memproses perintah pengguna hingga pengguna memilih untuk keluar.

Input berikut akan diberikan:

  • Serangkaian pilihan menu (bilangan bulat: 1 untuk Add Task, 2 untuk View Tasks, 3 untuk Remove Task, 4 untuk Quit)
  • Untuk Add Task (pilihan 1): string yang mewakili deskripsi tugas
  • Untuk Remove Task (pilihan 3): bilangan bulat yang mewakili nomor tugas yang akan dihapus (indeks dimulai dari 1)

Programmu harus:

  1. Memulai dengan penyiapan yang sama seperti di pelajaran sebelumnya ( std::vector<std::string> kosong bernama tasks dan pesan selamat datang)
  2. Membuat perulangan utama yang terus berjalan hingga pengguna memilih untuk keluar
  3. Menampilkan menu dan membaca pilihan pengguna pada setiap iterasi
  4. Memproses setiap opsi menu:
    • Pilihan 1: Membaca deskripsi tugas dan menambahkannya menggunakan push_back()
    • Pilihan 2: Menampilkan semua tugas dalam format bernomor, atau menampilkan "No tasks available." jika kosong
    • Pilihan 3: Membaca nomor tugas, memvalidasinya, lalu menghapus tugas menggunakan .erase()
    • Pilihan 4: Keluar dari perulangan program
  5. Untuk pilihan menu yang tidak valid, menampilkan pesan error dan melanjutkan perulangan
  6. Mencetak pesan perpisahan saat pengguna keluar

Gunakan format output berikut secara persis:

Penyiapan awal dan tampilan menu:

Welcome to Task List Tool!

Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit

Task list system initialized and ready!

Untuk setiap iterasi menu, tampilkan:

Choose an option: 

Untuk Add Task (pilihan 1):

Task "[task description]" added successfully!
Total tasks: [number of tasks]

Untuk View Tasks (pilihan 2) jika ada tugas:

Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]

Untuk View Tasks (pilihan 2) jika kosong:

No tasks available.

Untuk Remove Task (pilihan 3) dengan nomor tugas yang valid:

Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]

Untuk Remove Task (pilihan 3) dengan nomor tugas yang tidak valid:

Error: Invalid task number. Please enter a number between 1 and [total tasks].

Untuk pilihan menu yang tidak valid:

Invalid choice. Please try again.

Saat pengguna keluar (pilihan 4):

Thank you for using Task List Tool!

Gunakan perulangan while yang terus berjalan hingga pengguna memasukkan 4. Untuk fungsi Remove Task, pastikan kamu memvalidasi bahwa nomor tugas berada di antara 1 dan tasks.size() sebelum menggunakan tasks.erase(tasks.begin() + index). Jika list menjadi kosong setelah penghapusan, cetak "No tasks remaining." alih-alih daftar tugas yang tersisa.

Coba sendiri

#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> tasks;
    
    std::cout << "Welcome to Task List Tool!" << std::endl;
    std::cout << std::endl;
    std::cout << "Menu Options:" << std::endl;
    std::cout << "1. Add Task" << std::endl;
    std::cout << "2. View Tasks" << std::endl;
    std::cout << "3. Quit" << std::endl;
    std::cout << std::endl;
    std::cout << "Task list system initialized and ready!" << std::endl;
    
    int n;
    std::cin >> n;
    std::cin.ignore();
    
    for (int i = 0; i < n; i++) {
        std::string task;
        std::getline(std::cin, task);
        tasks.push_back(task);
    }
    
    int taskNumber;
    std::cin >> taskNumber;
    
    if (taskNumber < 1 || taskNumber > tasks.size()) {
        std::cout << "Error: Invalid task number. Please enter a number between 1 and " << tasks.size() << "." << std::endl;
    } else {
        std::string removedTask = tasks[taskNumber - 1];
        tasks.erase(tasks.begin() + (taskNumber - 1));
        
        std::cout << "Task \"" << removedTask << "\" removed successfully!" << std::endl;
        
        if (tasks.empty()) {
            std::cout << "No tasks remaining." << std::endl;
        } else {
            std::cout << "Remaining Tasks:" << std::endl;
            for (int i = 0; i < tasks.size(); i++) {
                std::cout << (i + 1) << ". " << tasks[i] << std::endl;
            }
        }
        
        std::cout << "Total tasks: " << tasks.size() << std::endl;
    }
    
    return 0;
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online