bạn làm như cách loại bỏ cá phần tử mảng trùng mà KDL là int, hay float thôi
tôi có một mảng P các phẩn tử . Các phần tử trong mảng có kiểu Point(x,y) x,y là các số kiểu float . (Point ở đây tức là tọa độ các điểm trên mặt phẳng.) .Nếu mảng P có chứa các phần tử trùng nhau thì cần loại các phần tử đó đi . VD: P[(1,1),(2,1),(1,1),(1,1),(3,4),(2,1)] thì cần đưa P về
P[(1,1),(2,1),(3,4)] . Các bạn giúp tôi cái
bạn làm như cách loại bỏ cá phần tử mảng trùng mà KDL là int, hay float thôi
với mảng kiểu int thì có thể làm theo cách này
nhưng với mảng các điểm thì tôi chưa làm được . Bạn nào biết cách làm thì hướng dẫn rõ ràng ra hộ tôi cái nhé .C Code:
#include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { int *B,n,*temp,k; B=new int[n]; for(int i=0;i<n;i++) { } temp=new int [n]; for(i = 0; i<n ; i++) { temp[B[i]] = 1; } for( i = 1 ; i<= n ; i++) { if(temp[i]== 1 ) { } } getch(); }
Đã được chỉnh sửa lần cuối bởi md_vn : 16-07-2007 lúc 12:17 PM.
thay bằng ...= new Point[n];// Point là kiểu dữ liệu của bạnCode:...=new int [n];
Ngoài ra bạn có thể sử dụng std::list thì đỡ phải dùng mảng rồi xoá, thêm,...
Anyway, cái gì cấp phát thì cũng nên giải phóng nó đi.
Có thể post cả code lên hộ tôi được không bạn ơi . Tôi đang cần rất gấp . Mai phải báo cáo rồi mà loay hoai mãi không làm được .
C++ Code:
// remove from list #include <iostream> #include <list> using namespace std; int main () { int myints[]= {17,89,7,14}; list<Point> mylist; Point myPt; myPt.x = 1; myPt.y = 2; mylist.push_back(myPt); myPt.x = 2; myPt.y = 5; mylist.push_back(myPt); myPt.x = 3; myPt.y = 6; mylist.push_back(myPt); for (list<Point>::const_iterator it=mylist.begin(); it!=mylist.end(); ++it) { Point pt = *it; } // xoá phần tử thứ 2; list<Point>::iterator Iter = mylist.begin(); Iter++; mylist.pop_back(Iter); for (list<Point>::const_iterator it=mylist.begin(); it!=mylist.end(); ++it) { Point pt = *it; } return 0; }
Đại loại thì cách sử dụng list là vậy, mình nghĩ sao viết vậy, chưa chạy nên có thể sai
Vào đây để xem chi tiết về cách sử dụng list:
http://www.cplusplus.com/reference/stl/list/
Còn bạn cũng có thể sử dụng mảng với kiểu dữ liệu là Point gần như y hệt với kiểu dữ liệu là int
Đã được chỉnh sửa lần cuối bởi vinhie47 : 16-07-2007 lúc 09:21 PM.
Để tổng quát hơn cho mọi kiểu, mình nghĩ phải xây dựng một struct Point, sau đó xây dựng một mảng PointArray với điều kiện là xử lí luôn nếu khi put một phần tử mới vào mảng thì phải check nó, nếu trùng với 1 phần tử nào đó sẵn có trong mảng thì không put vào nữa.
Bỏ qua vì tớ viết không đúng nội dung đề tài nhưng có cái này thắc mắc lâu rồi bi giờ thấy vinhie đưa lên nên định hỏi luôn cho tiện . Có gì chỉ giúp nhé :
Đoạn code thắc mắc :
C++ Code:
// constructing stacks #include <iostream> #include <vector> #include <deque> #include <stack> using namespace std; int main () { deque<int> mydeque (3,100); // deque with 3 elements vector<int> myvector (2,200); // vector with 2 elements stack<int> first; // empty stack stack<int> second (mydeque); // stack initialized to copy of deque stack<int,vector<int> > third; // empty stack using vector stack<int,vector<int> > fourth (myvector); return 0; }
Trong này có những cái tương tự như cái mà vinhie đưa lên đấy .
deque<int>
deque có phải là 1 thư viện mình viết riêng rồi include vào hay không ? còn <int> là đối của template .
Nếu như vậy thì có thể nói về cách viết cái include <deque> hay ko ? Có phải tương tự như viết thư viện .h
HIx khoan đọc rồi mới thấy , đừng nói đây là 1 cái thư viện riêng chứ .
Hờ hờ, chả hiểu thế nào một năm sau mình lại đọc lại cái này.
2Kidkid: đó là stl, là thư viện rất phổ biến. Nhưng đến giờ này thì chắc là bạn cũng biết rồi