fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Point{
  5. float x;
  6. float y;
  7. };
  8.  
  9. struct Path{
  10. Point *punkt;
  11. };
  12.  
  13. void init_path(Path *&p, int size){
  14. p = new Path[size];
  15. for (int i = 0; i<size; i++)
  16. p[i].punkt = 0;
  17. }
  18.  
  19. // Potrzebny jest obiekt, który przekaże rozmiar tablicy, ponieważ
  20. // http://stackoverflow.com/questions/968001/determine-size-of-array-if-passed-to-function
  21. void add_point(Path *p, int size, Point *po){
  22. for (int i = 0; i<size; i++)
  23. if (p[i].punkt == 0){
  24. p[i].punkt = po;
  25. break;
  26. }
  27. }
  28.  
  29. // Tutaj tak samo jak wyżej.
  30. void print_path(Path *p, int size){
  31. for (int i = 0; i<size; i++)
  32. if (p[i].punkt != 0)
  33. cout << p[i].punkt->x << " " << p[i].punkt->y << endl;
  34. }
  35.  
  36. void del_path(Path *p, int size){
  37. for (int i = 0; i<size; i++)
  38. if (p[i].punkt != 0){
  39. delete p[i].punkt;
  40. p[i].punkt = 0;
  41. }
  42. delete[] p;
  43. p = 0;
  44. }
  45.  
  46. int main() {
  47. Path *tablica = 0;
  48. init_path(tablica, 3);
  49. add_point(tablica, 3, new Point{ 9, 0 });
  50. add_point(tablica, 3, new Point{ 13, 2 });
  51. add_point(tablica, 3, new Point{ 16.2, 7.1 });
  52.  
  53. // Ten element nie zostanie dodany, bo tablica jest za mała.
  54. add_point(tablica, 3, new Point{ -2, -2 });
  55. print_path(tablica, 3);
  56. del_path(tablica, 3);
  57. return 0;
  58. }
Success #stdin #stdout 0s 3272KB
stdin
Standard input is empty
stdout
9 0
13 2
16.2 7.1