193030

Kursova SAA WIP 1

Oct 14th, 2020 (edited)
252
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.52 KB | None
  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. Node *frontQ = NULL;
  39. Node *rearQ = NULL;
  40. Node *lastQ = NULL;
  41.  
  42. void enqueue(struct Node *p)
  43. {
  44.  
  45.  
  46.     Node *t = new Node;
  47.     t = p;
  48.     t->next = NULL;
  49.     if(!t)
  50.     {
  51.         cout << "The heap is full." << endl;
  52.         return;
  53.     }
  54.     if(frontQ == NULL)
  55.     {
  56.         frontQ = new Node;
  57.         frontQ-> data = t->data;
  58.         frontQ-> next = NULL;
  59.         lastQ = frontQ;
  60.  
  61.     }
  62.     else
  63.     {
  64.         lastQ -> next = t;
  65.         lastQ = t;
  66.     }
  67.     cout << frontQ->data<< endl;
  68. }
  69.  
  70. struct Node* addNode(struct Node* first)
  71. {
  72.    first = new Node;
  73.    first->data = firstName;
  74.    Node* secN = new Node;
  75.    secN->data = secondName;
  76.    secN->child = NULL;
  77.    first->next =secN;
  78.  
  79.  
  80.    Node* lastN = new Node;
  81.    lastN ->data = lastName;
  82.    secN->next = lastN;
  83.    lastN->child = NULL;
  84.  
  85.    Node* adress1Node = new Node;
  86.    adress1Node->data = adress1;
  87.    adress1Node->child = NULL;
  88.  
  89.    Node* adress2Node = new Node;
  90.    adress2Node->data = adress2;
  91.    adress1Node->next = adress2Node;
  92.    adress2Node->child = NULL;
  93.  
  94.  
  95.    Node* adress3Node = new Node;
  96.    adress3Node->data = adress3;
  97.    adress2Node->next = adress3Node;
  98.    adress3Node->child = NULL;
  99.  
  100.    first->child = adress1Node;
  101.  
  102.    Node* firstNumberNode = new Node;
  103.    firstNumberNode->data = phoneNumber1;
  104.    firstNumberNode->next = NULL;
  105.    firstNumberNode->child = NULL;
  106.  
  107.    Node* secondNumberNode = new Node;
  108.    secondNumberNode->data = phoneNumber2;
  109.    secondNumberNode->next = NULL;
  110.    secondNumberNode->child = NULL;
  111.    firstNumberNode->next = secondNumberNode;
  112.  
  113.    Node* thirdNumberNode = new Node;
  114.    thirdNumberNode->data = phoneNumber3;
  115.    thirdNumberNode->next = NULL;
  116.    thirdNumberNode->child = NULL;
  117.  
  118.    adress1Node->child = firstNumberNode;
  119.    adress3Node->child = thirdNumberNode;
  120.     return first;
  121. }
  122.  
  123. void traverseNodes(struct Node* p)
  124. {
  125.  
  126.  
  127.     if(p==secondChild)
  128.        secondChild=NULL;
  129.     if(p==firstChild)
  130.         firstChild = NULL;
  131.     while(p)
  132.     {
  133.  
  134.       if(p->child)
  135.       {
  136.          if(secondChild == NULL && firstChild!=NULL)
  137.          {
  138.             secondChild = p->child;
  139.             //. cout << "second child ->data " << p->child->data << endl;
  140.  
  141.          }
  142.          if(firstChild == NULL)
  143.             firstChild = p->child;
  144.  
  145.       }
  146.         cout << p->data << " ";
  147.         p = p->next;
  148.     }
  149.  
  150.  
  151.  
  152.     if(firstChild !=NULL || secondChild != NULL)
  153.     {
  154.  
  155.         if(firstChild)
  156.         {
  157.             traverseNodes(firstChild);
  158.  
  159.         }
  160.         if(secondChild)
  161.         {
  162.             //cout << " v ifa second child data " << secondChild->data << endl;
  163.             traverseNodes(secondChild);
  164.            // cout << " second child " << endl;
  165.  
  166.         }
  167.  
  168.         //enqueue(lastChild);
  169.     }
  170. }
  171.  
  172. void enterPerson()
  173. {
  174.     cin.ignore();
  175.     cout << "Enter first name: " << endl;
  176.     cin >> firstName;
  177.     cout << "Enter second name: " << endl;
  178.     cin >> secondName;
  179.     cout << "Enter last name name: " << endl;
  180.     cin >> lastName;
  181.     //cout << "The last name is: " << lastName << endl;
  182.     cout << "Enter first address: " << endl;
  183.     cin >> adress1;
  184.     cout << "Enter second address: " << endl;
  185.     cin >> adress2;
  186.     cout << "Enter third address: " << endl;
  187.     cin >> adress3;
  188.     cout << "Enter first phone number: " << endl;
  189.     cin >> phoneNumber1;
  190.     cout << "Enter second phone number: " << endl;
  191.     cin >> phoneNumber2;
  192.     cout << "Enter third phone number: " << endl;
  193.     cin >> phoneNumber3;
  194.  
  195. }
  196.  
  197. int main()
  198. {
  199.  
  200.     typedef struct Node* *testDynamicArray;
  201.     testDynamicArray testDynamicArray1;
  202.     //testDynamicArray1 = new struct Node*[1];
  203.  
  204.  
  205.     struct Node* Array[5];
  206.     struct Node* *DynamicArray;
  207.     DynamicArray = new struct Node*[0];
  208.     int dynamicArraySize;
  209.     int numberOfPeople = 0;
  210.     int loop = 1;
  211.     while(loop)
  212.     {
  213.         dynamicArraySize = sizeof(DynamicArray)/sizeof(DynamicArray[0]);
  214.         cout << sizeof(testDynamicArray1)/sizeof(testDynamicArray1[0]) << endl;
  215.         cout << "Menu: " << endl;
  216.         cout << "1. Press 1 to add person" << endl;
  217.         cout << "2. Press 2 to show the list" << endl;
  218.         cout << "3. Press 0 to exit" << endl;
  219.         int inputCommand;
  220.         cin >> inputCommand;
  221.         switch(inputCommand)
  222.         {
  223.         case 1:
  224.             numberOfPeople++;
  225.             enterPerson();
  226.             if(numberOfPeople>1)
  227.             {
  228.                 testDynamicArray1 = new struct Node*[numberOfPeople];
  229.                 for(int i =0; i<numberOfPeople;i++)
  230.                 {
  231.                     testDynamicArray1[i] = DynamicArray[i];
  232.                     delete DynamicArray;
  233.                 }
  234.                 testDynamicArray1[numberOfPeople-1] = addNode(testDynamicArray1[numberOfPeople-1]);
  235.  
  236.                 DynamicArray = new struct Node*[numberOfPeople];
  237.                  for(int i =0; i<numberOfPeople-1;i++)
  238.                 {
  239.                     DynamicArray[i] = testDynamicArray1[i];
  240.                     cout << " FOR _-------- dynamic array: "<< DynamicArray[i]->data<< endl;
  241.                     delete testDynamicArray1;
  242.                 }
  243.             }
  244.             else
  245.                 DynamicArray[0] = addNode(DynamicArray[0]);
  246.             cout << DynamicArray[0]->data << endl;
  247.             break;
  248.         case 2:
  249.             //traverseNodes(DynamicArray[0]);
  250.             for(int i =0; i<=numberOfPeople;i++)
  251.             {
  252.                 cout << "iteraciq print "<< i << endl;
  253.                 traverseNodes(DynamicArray[i]);
  254.             }
  255.             break;
  256.         case 3:
  257.             loop = 0;
  258.             break;
  259.         default:
  260.  
  261.             break;
  262.  
  263.         }
  264.     }
  265.  
  266. }
  267.  
RAW Paste Data Copied