ไฟล์เป็นตำแหน่งหน่วยความจำที่จัดเก็บกระแสของคำ ในไฟล์มีคำหลายคำ ในโปรแกรมนี้ เราจะหาคำที่ไม่ซ้ำกัน (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