Advertisement
TShiva

Pointers

Dec 6th, 2014
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <math.h>
  5.  
  6. using namespace std;
  7.  
  8. void Pointer()
  9. {
  10.     double **p = 0;
  11.     try{
  12.         p = new double *;
  13.         *p = new double;
  14.     } catch (const bad_alloc&) {
  15.         cout << "out of memory!" << endl;
  16.         delete p;
  17.         return;
  18.     }
  19.     **p = 2;
  20.     cout << " **p = " << **p << endl;
  21.     delete *p;
  22.     delete p;
  23. }
  24.  
  25. void ArrayPointer()
  26. {
  27.     double **p = 0;
  28.     int size;
  29.     cout << "Input the size of array." << endl;
  30.     cin >> size;
  31.     try{
  32.         p = new double *;
  33.         *p = new double [size];
  34.     } catch (const bad_alloc&) {
  35.         cout << "out of memory!" << endl;
  36.         delete p;
  37.         return;
  38.     }
  39.  
  40.     for (int i=0; i<size; i++)
  41.         (*p)[i]=0;
  42.     for (int i=0; i<size; i++)
  43.         cout << (*p)[i] << " ";
  44.     (*p)[0]=2.0;
  45.     (*p)[size-1]=2.0;
  46.     cout << endl;
  47.     for (int i=0; i<size; i++)
  48.         cout << (*p)[i] << " ";
  49.     delete []*p;
  50.     delete p;
  51. }
  52.  
  53. void BigArrayPointer()
  54. {
  55.  
  56.     double **p = 0;
  57.     int size;
  58.     cout << "Input the size of array." << endl;
  59.     cin >> size;
  60.     try{
  61.         p = new double *[size];
  62.     } catch (const bad_alloc&) {
  63.         cout << "out of memory!" << endl;
  64.         return;
  65.     }
  66.     for (int i=0; i<size; i++){
  67.         try{
  68.             p[i]=new double ;
  69.         }    catch (const bad_alloc&) {
  70.             cout << "out of memory!" << endl;
  71.  
  72.             for (int j=0; j<i; j++){
  73.                 delete p[j];
  74.             }
  75.             delete []p;
  76.             return;
  77.         }
  78.     }
  79.  
  80.     for (int i=0; i<size; i++)
  81.         *(p)[i]=0;
  82.  
  83.     for (int i=0; i<size; i++){
  84.         cout << *(p[i]) << " ";
  85.     }
  86.  
  87.     *(p[0])=2.0;
  88.     *(p[size-1])=2.0;
  89.     cout << endl;
  90.     for (int i=0; i<size; i++)
  91.         cout << *(p[i]) << " ";
  92.     for (int i=0; i<size; i++)
  93.         delete p[i];
  94.     delete []p;
  95. }
  96.  
  97. struct Sample
  98. {
  99.     char c;
  100.     double x;
  101.     int *p;
  102. };
  103.  
  104. void SampleTask()
  105. {
  106.  
  107.     Sample s;
  108.     int n;
  109.     double x;
  110.     char c;
  111.     cout << "Input the number of elements." << endl;
  112.     cin >> n;
  113.     s.p = new int [n];
  114.     cout << "Input integer elements of array." << endl;
  115.     for (int i=0; i<n ; i++)
  116.         cin >> s.p[i];
  117.     cout << "Input the number." << endl;
  118.     cin >> s.x;
  119.     cout << "Input the char." << endl;
  120.     cin >> s.c;
  121.     system("cls");
  122.     for (int i=0; i<n ; i++)
  123.         cout << s.p[i] << " ";
  124.     cout << endl << "s.c = " << s.c << " s.x = " << s.x << endl;
  125.     delete []s.p;
  126. }
  127.  
  128. void DynamicSampleTask()
  129. {
  130.     Sample *a;
  131.     int size, n;
  132.     cout << "Input the number of elements in array of structures:" << endl;
  133.     cin >> size;
  134.     cout << "Input the number of elements in array:" << endl;
  135.     cin >> n;
  136.     try{
  137.         a = new Sample [size];
  138.     } catch (const bad_alloc&) {
  139.         cout << "out of memory!" << endl;
  140.         return;
  141.     }
  142.  
  143.     for (int i = 0; i<size; i++) {
  144.         try{
  145.             a[i].p = new int [n]; // массив указателей на структуру,указывает на массив в структуре
  146.         } catch (const bad_alloc&) {
  147.             cout << "out of memory!" << endl;
  148.             for (int j = 0; j<i; j++)
  149.             {delete[] a[j].p;
  150.             }
  151.             delete []a;
  152.             return;
  153.         }
  154.     }
  155.  
  156.     for (int i = 0; i<size; i++)
  157.     {
  158.         for (int j = 0; j<n; j++)
  159.             a[i].p[j] = i;
  160.     }
  161.  
  162.     for (int i = 0; i<size; i++)
  163.     {
  164.         for (int j = 0; j<n; j++)
  165.             cout << a[i].p[j] << " ";
  166.         cout << endl;
  167.     }
  168.     for (int i = 0; i<size; i++)
  169.         delete []a[i].p;
  170.     delete []a;
  171. }
  172.  
  173. void DinamicPointer()
  174. {
  175.     Sample **a = 0;
  176.     int size, n;
  177.     cout << "Input the number of elements in array of structures." << endl;
  178.     cin >> size;
  179.     cout << "Input the number of elements in array." << endl;;
  180.     cin >> n;
  181.     try{
  182.         a = new Sample *[size];
  183.     } catch (const bad_alloc&) {
  184.         cout << "out of memory!" << endl;
  185.         return;
  186.     }
  187.     for (int i = 0; i<size; i++)
  188.         try{
  189.             a[i] = new Sample;
  190.     } catch (const bad_alloc&) {
  191.  
  192.         cout << "out of memory!" << endl;
  193.         for (int j = 0; j<i; j++)
  194.         {
  195.             delete a[j];
  196.         }
  197.         delete []a;
  198.         return;
  199.     }
  200.     for (int i = 0; i<size; i++)
  201.         try{
  202.             a[i]->p = new int [n];
  203.     } catch (const bad_alloc&) {
  204.         cout << "out of memory!" << endl;
  205.         for (int j = 0; j<i; j++)
  206.             delete[] a[j]->p;
  207.  
  208.  
  209.  
  210.         for (int j = 0; j<size; j++)
  211.             delete a[j];
  212.  
  213.         delete []a;
  214.         return;
  215.     }
  216.  
  217.  
  218.  
  219.     for (int i = 0; i<size; i++)
  220.     {
  221.         for (int j = 0; j<n; j++)
  222.             (*(a[i])).p[j] = i;
  223.     }
  224.     for (int i = 0; i<size; i++)
  225.     {
  226.         for (int j = 0; j<n; j++)
  227.             cout << (*(a[i])).p[j] << " ";
  228.         cout << endl;
  229.     }
  230.     for (int i = 0; i<size; i++)
  231.         delete [](*(a[i])).p;
  232.     for (int i = 0; i<size; i++)
  233.         delete a[i];
  234.     delete []a;
  235.  
  236. }
  237.  
  238. int main()
  239. {  
  240.     Pointer();
  241.     //ArrayPointer();
  242.     //BigArrayPointer();
  243.     //SampleTask();
  244.     //DynamicSampleTask();
  245.     //DinamicPointer();
  246.     system("pause");
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement