193030

Kursova rabota dynamic array

Oct 17th, 2020 (edited)
717
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Vkaral sym dinamichni masivi ama ne raboti
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. // Трите имена
  6. // Домашни и служебни адреси(индикатор за различаване)
  7. // телефони на съответните адреси
  8.  
  9. // -създаване на указателя, като информацията се чете
  10. // клавиатурата
  11. // -извежда информация за броя на работещите(лицето е
  12. // е работещо, ако има поне един служебен адрес
  13.  
  14. string firstName;
  15. string secondName;
  16. string lastName;
  17. string adress1;
  18. string adress2;
  19. string adress3;
  20. string phoneNumber1;
  21. string phoneNumber2;
  22. string phoneNumber3;
  23.  
  24.  
  25.  
  26. struct Node
  27. {
  28.     string data;
  29.     Node *next;
  30.     Node *child;
  31. };
  32.  
  33.  
  34. Node *firstChild = NULL;
  35. Node *secondChild = NULL;
  36.  
  37.  
  38.  
  39. struct Node* addNode()//(struct Node* first)
  40. {
  41.    struct Node* first;
  42.    first = new Node;
  43.    first->data = firstName;
  44.    Node* secN = new Node;
  45.    secN->data = secondName;
  46.    secN->child = NULL;
  47.    first->next =secN;
  48.  
  49.  
  50.    Node* lastN = new Node;
  51.    lastN ->data = lastName;
  52.    secN->next = lastN;
  53.    lastN->child = NULL;
  54.  
  55.    Node* adress1Node = new Node;
  56.    adress1Node->data = adress1;
  57.    adress1Node->child = NULL;
  58.  
  59.    Node* adress2Node = new Node;
  60.    adress2Node->data = adress2;
  61.    adress1Node->next = adress2Node;
  62.    adress2Node->child = NULL;
  63.  
  64.  
  65.    Node* adress3Node = new Node;
  66.    adress3Node->data = adress3;
  67.    adress2Node->next = adress3Node;
  68.    adress3Node->child = NULL;
  69.  
  70.    first->child = adress1Node;
  71.  
  72.    Node* firstNumberNode = new Node;
  73.    firstNumberNode->data = phoneNumber1;
  74.    firstNumberNode->next = NULL;
  75.    firstNumberNode->child = NULL;
  76.  
  77.    Node* secondNumberNode = new Node;
  78.    secondNumberNode->data = phoneNumber2;
  79.    secondNumberNode->next = NULL;
  80.    secondNumberNode->child = NULL;
  81.    firstNumberNode->next = secondNumberNode;
  82.  
  83.    Node* thirdNumberNode = new Node;
  84.    thirdNumberNode->data = phoneNumber3;
  85.    thirdNumberNode->next = NULL;
  86.    thirdNumberNode->child = NULL;
  87.  
  88.    adress1Node->child = firstNumberNode;
  89.    adress3Node->child = thirdNumberNode;
  90.     return first;
  91. }
  92.  
  93. void traverseNodes(struct Node* p)
  94. {
  95.     if(p==secondChild)
  96.        secondChild=NULL;
  97.     if(p==firstChild)
  98.         firstChild = NULL;
  99.     while(p)
  100.     {
  101.  
  102.       if(p->child)
  103.       {
  104.          if(secondChild == NULL && firstChild!=NULL)
  105.          {
  106.             secondChild = p->child;
  107.             //. cout << "second child ->data " << p->child->data << endl;
  108.  
  109.          }
  110.          if(firstChild == NULL)
  111.             firstChild = p->child;
  112.  
  113.       }
  114.         cout << p->data << " ";
  115.         p = p->next;
  116.     }
  117.  
  118.     if(firstChild !=NULL || secondChild != NULL)
  119.     {
  120.  
  121.         if(firstChild)
  122.         {
  123.             traverseNodes(firstChild);
  124.  
  125.         }
  126.         if(secondChild)
  127.         {
  128.             //cout << " v ifa second child data " << secondChild->data << endl;
  129.             traverseNodes(secondChild);
  130.            // cout << " second child " << endl;
  131.  
  132.         }
  133.  
  134.         //enqueue(lastChild);
  135.     }
  136. }
  137.  
  138. void enterPerson()
  139. {
  140.     cin.ignore();
  141.     cout << "Enter first name: " << endl;
  142.     cin >> firstName;
  143.     cout << "Enter second name: " << endl;
  144.     cin >> secondName;
  145.     cout << "Enter last name name: " << endl;
  146.     cin >> lastName;
  147.     //cout << "The last name is: " << lastName << endl;
  148.     cout << "Enter first address: " << endl;
  149.     cin >> adress1;
  150.     cout << "Enter second address: " << endl;
  151.     cin >> adress2;
  152.     cout << "Enter third address: " << endl;
  153.     cin >> adress3;
  154.     cout << "Enter first phone number: " << endl;
  155.     cin >> phoneNumber1;
  156.     cout << "Enter second phone number: " << endl;
  157.     cin >> phoneNumber2;
  158.     cout << "Enter third phone number: " << endl;
  159.     cin >> phoneNumber3;
  160.  
  161. }
  162.  
  163. int main()
  164. {
  165.  
  166.     typedef struct Node* *testDynamicArray;
  167.     testDynamicArray testDynamicArray1;
  168.     //testDynamicArray1 = new struct Node*[1];
  169.  
  170.  
  171.     struct Node *Array[5];
  172.     struct Node **DynamicArray;
  173.     struct Node **temp;
  174.     int dynamicArraySize = 1;
  175.     DynamicArray = new struct Node*[dynamicArraySize];
  176.  
  177.     int numberOfPeople = 0;
  178.     int loop = 1;
  179.     while(loop)
  180.     {
  181.  
  182.         //dynamicArraySize = sizeof(DynamicArray)/sizeof(DynamicArray[0]);
  183.         cout << sizeof(testDynamicArray1)/sizeof(testDynamicArray1[0]) << endl;
  184.         cout << "Menu: " << endl;
  185.         cout << "1. Press 1 to add person" << endl;
  186.         cout << "2. Press 2 to show the list" << endl;
  187.         cout << "3. Press 0 to exit" << endl;
  188.         int inputCommand;
  189.         cin >> inputCommand;
  190.         switch(inputCommand)
  191.         {
  192.         case 1:
  193.             enterPerson();
  194.           //  Array[numberOfPeople] = addNode();
  195.  
  196.             if(numberOfPeople>0)
  197.             {
  198.  
  199.                 // ---- TEMPARRAY[N+1] -------
  200.                 temp = new struct Node*[numberOfPeople+1];
  201.  
  202.                 // COPY DATA TO TEMP ARRAY
  203.                 for(int i =0; i<numberOfPeople;i++)
  204.                 {
  205.                     temp[i] = DynamicArray[i];
  206.                 }
  207.  
  208.                 // REMOVE DYNAMIC ARRAY
  209.                 delete[] DynamicArray;
  210.              //   temp = nullptr;
  211.  
  212.  
  213.                 DynamicArray = temp;
  214.                 // ADD NODE TO TEMP ARRAY
  215.                 DynamicArray[numberOfPeople] = addNode();
  216.  
  217.             }
  218.             else
  219.  
  220.             {
  221.                 DynamicArray = new struct Node*[numberOfPeople];
  222.                 DynamicArray[0] = addNode();
  223.                 cout << "dynamic array[0] " << DynamicArray[0]->data<< endl;
  224.  
  225.             }
  226.  
  227.  
  228.             numberOfPeople++;
  229.             break;
  230.         case 2:
  231.             //traverseNodes(DynamicArray[0]);
  232.  
  233.             for(int i =0; i<numberOfPeople;i++)
  234.             {
  235.                 cout << "iteraciq print "<< i << endl;
  236.                 cout << "dynamic array[i] " << DynamicArray[i]<< endl;
  237.                 traverseNodes(DynamicArray[i]);
  238.             }
  239.  
  240.             /*for(int i =0; i<numberOfPeople;i++)
  241.             {
  242.                 cout << "iteraciq print "<< i << endl;
  243.                 traverseNodes(Array[i]);
  244.             }*/
  245.             break;
  246.         case 0:
  247.             loop = 0;
  248.             break;
  249.         default:
  250.  
  251.             break;
  252.  
  253.         }
  254.     }
  255.  
  256. }
  257.  
RAW Paste Data