Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ พิมพ์คำที่ไม่ซ้ำกันในไฟล์

ไฟล์เป็นตำแหน่งหน่วยความจำที่จัดเก็บกระแสของคำ ในไฟล์มีคำหลายคำ ในโปรแกรมนี้ เราจะหาคำที่ไม่ซ้ำกัน (unique words) ทั้งหมดจากไฟล์และพิมพ์ออกมา

คำที่ไม่ซ้ำ (Unique word) หมายถึงคำที่ปรากฏในไฟล์เพียงครั้งเดียวเท่านั้น

ตัวอย่าง:

Tutorials point is best for programming tutorials.

ที่นี่ คำว่า "tutorial" ปรากฏมากกว่าหนึ่งครั้ง จึงไม่ถือว่า unique ส่วนคำอื่นๆ ทั้งหมดเป็น unique

อัลกอริทึม

ตรวจสอบคำที่ไม่ซ้ำในไฟล์ที่กำหนด ใช้ iterator กับสองตัวแปร: data และ occurrence
Input: File
ขั้นตอนที่ 1: อ่านแต่ละบรรทัดจากไฟล์ และทำตามขั้นตอนที่ 2
ขั้นตอนที่ 2: ตรวจสอบจำนวนครั้งที่คำปรากฏในโครงสร้างข้อมูลโดยใช้ iterator.data
    ขั้นตอนที่ 2.1: ถ้าข้อมูลตรงกัน ให้เพิ่ม occurrence ขึ้น 1 ตรงกับ data นั้น
    ขั้นตอนที่ 2.2: ถ้าข้อมูลไม่ตรง ให้เพิ่มค่าใหม่และตั้ง occurrence ให้เป็น 1
ขั้นตอนที่ 3: วนลูปผ่านโครงสร้างข้อมูล และตรวจสอบค่า occurrence ของแต่ละค่า
    ขั้นตอนที่ 3.1: ถ้า occurrence เท่ากับ 1 ให้พิมพ์ data ตรงกับค่านั้น มิฉะนั้นไม่ทำอะไร

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int main() {
    char filename[] = "test.txt";
    ofstream fs("test.txt", ios::trunc);
    fs << "tutorials point is best for programming tutorials";
    fs.close();
    fstream fs("test.txt");
    map<string, int> mp;
    string word;
    while (fs >> word) {
        if (!mp.count(word))
            mp.insert(make_pair(word, 1));
        else
            mp[word]++;
    }
    fs.close();
    for (map<string, int>::iterator p = mp.begin(); p != mp.end(); p++) {
        if (p->second == 1)
            cout << p->first << endl;
    }
    return 0;
}

ผลลัพธ์

best
for
is
point
programming