Notepad++ có chức năng sắp xếp các dòng theo thứ tự alphabet đồng thời remove các dòng trùng. Nếu sắp xếp lại cũng không sao thì bạn có thể dùng chức năng này ở menu TextFX/TextFX Tools/Sort outputs only UNIQUE... (select all trước)
Mình có một danh sách số điện thoại, tương ứng vỡi mỗi số điện thoại là 1 dòng.
Hiện tại tìm trên internet chưa có chương trình nào như thế nào ? Anh em C việt nhà mình có thể giúp mình được điều này không nhỉ ?
Danh sách dạng như sau:
0903931403
0903835698
0918143064
0907403555
0902207766
0903707989
0903413326
0902778499
0909105793
0933931555
....
Khoảng mấy ngàn số.. Làm thế nào mình kiểm tra 1 hàng rồi đem đi so sánh với các hàng khác nếu trùng nhau thì bỏ dòng được tìm thấy, còn không nếu không tiếp thấy thì chạy dòng tiếp theo ... viết giống như kiểu vòng lặp for vậy ?
Anh em nào có code được ko nhỉ ? Viết bằng chương trình gì cũng dc ?
Notepad++ có chức năng sắp xếp các dòng theo thứ tự alphabet đồng thời remove các dòng trùng. Nếu sắp xếp lại cũng không sao thì bạn có thể dùng chức năng này ở menu TextFX/TextFX Tools/Sort outputs only UNIQUE... (select all trước)
Code mình chỉ chạy nếu file nguồn .txt của bạn có dạng đúng như bạn đã trình bày trên thôi, là:C++ Code:
#include<iostream> #include<fstream> #include<vector> using namespace std; int main() { vector<string>ListV; string buff; // //Lay thong tin tu file goc, ghi cac gia tri vao vector ListV // ifstream IN_FILE (/*đường dẫn file gốc của bạn*/); if(!IN_FILE.good()) { return 1; } else { while(!IN_FILE.eof()) { IN_FILE>>buff; ListV.push_back(buff); } } IN_FILE.close(); // //Tien hanh so sanh va loai bo nhung gia tri lap lai bang cach //sua cac gia tri do ve "0" // for(int i=0;i<ListV.size();i++) { for(int l=i+1;l<ListV.size();l++) { if(ListV[i]=="0") break; else if (ListV[i]==ListV[l]) { ListV[l]="0"; } } } // //Tien hanh ghi cac gia tri trong vector ListV vao file ket qua //bo qua cac gia tri "0" // ofstream OUT_FILE (/*đường dẫn file kết quả*/); for(int i=0;i<ListV.size();i++) { if(ListV[i]!="0") OUT_FILE<<ListV[i]<<endl; } OUT_FILE.close(); return 0; }
//FILE
<số>
<số>
.....
<số>
//END FILE
Ngoài ra mình cũng ko biết nếu nhiều số quá thì có chạy đc nữa ko biết?? (ko rõ cái cap của vector chứaa đc bao nhiêu)
ngồi rảnh viết thử đoạn bằng C (mới hoc C):
Bạn thử nhé, mình đã test ok.
C Code:
#include <stdio.h> #define MAX 100000 main() { FILE * pf; char fname[200]; long long count = 0, i, j, t, a[MAX], temp2; if(pf == NULL) { }else { { count++; } for(i = 0;i < count;i++) { for(j = i + 1;j < count; j++) { if(a[i] == a[j]) { for(t = j; t < count; t++) a[t] = a[t + 1]; j--; count--; } } } } //write for(i = 0;i < count; i++) { } }
Chạy không được pro ơi ! Xem giúp mình thử !
bạn xài code nào để chạy vậy ? nếu là xài code mình thì bạn nên lưu ý phần điền đường dẫn vào. Ví dụ như bạn để file gốc vào mục C thì chỗ đường dẫn vào phải là :
Lưu ý tương tự khi nhập đường dẫn file kết quảC++ Code:
ifstream IN_FILE ("C:\\new2.txt"); // giả sử đây là file new2.txt , nằm ở C:\ // lưu ý trong đường dẫn gồn 2 dấu \\
p.s: mà bạn bị lỗi chỗ nào thế? nó báo thế nào?