Guest User

Untitled

a guest
Jun 18th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. source.cpp
  2. #include "functions.h"
  3.  
  4. int main(){
  5. Table BeforeSort; // create table
  6. int Counter=100; // how many numbers there is in single table
  7. BeforeSort.array = new int[Counter];
  8. BeforeSort.BasicFunctions(Counter); // generate random numbers, sort, and print
  9. std::cout << "==================================\n"; // break line
  10. Table AfterSort; // new table
  11. AfterSort.array = new int[Counter / 2]; // worst scenario
  12. int RepeatsCounter = 0;
  13. DetectRepeats(BeforeSort.array, AfterSort.array, Counter,RepeatsCounter);
  14. AfterSort.PrintTable(AfterSort.array,RepeatsCounter);
  15. std::cout << RepeatsCounter << " numbers repeat.";
  16. delete[]BeforeSort.array;
  17. delete[]AfterSort.array;
  18. return 0;
  19. }
  20.  
  21. functions.h
  22. #pragma once
  23. #include <iostream>
  24. #include <stdlib.h> // RNG
  25. #include <time.h>
  26.  
  27. class Table {
  28. public:
  29. int* array=nullptr; // table pointer
  30. void Sort(int* TablePointer, int TableElementCounter);
  31. void GetRandomFill(int* TablePointer, int TableElementCounter);
  32. void PrintTable(int *TablePointer, int TableElementCounter);
  33. void BasicFunctions(int Counter) { // summarize these 3 functions
  34. GetRandomFill(array, Counter);
  35. Sort(array, Counter);
  36. PrintTable(array, Counter);
  37. }
  38. };
  39.  
  40. void DetectRepeats(int* OldTablePointer,int *array, int TableCounter,int &j);
  41.  
  42. functions.cpp
  43. #include "functions.h"
  44.  
  45. void Swap(int* a, int* b) { // swap 2 numbers
  46. int c;
  47. c = *a;
  48. *a = *b;
  49. *b = c;
  50. } // swap 2 numbers
  51.  
  52. void Table::Sort(int* TablePointer, int TableElementCount) { // bubble sort
  53. for (int j = 0; j < TableElementCount; j++)
  54. for (int i = 0; i < TableElementCount - j; i++)
  55. if (TablePointer[i] < TablePointer[i+1])
  56. Swap(TablePointer + i, TablePointer + i + 1);
  57. }
  58.  
  59. void Table::GetRandomFill(int* TablePointer, int TableElementCounter) { // rng table fill
  60. srand(time(NULL));
  61. for (int i = 0; i < TableElementCounter; i++)
  62. TablePointer[i] = rand() % 150;
  63. }
  64.  
  65. void Table::PrintTable(int* TablePointer, int TableElementCounter) {
  66. for (int i = 0; i < TableElementCounter; i++)
  67. std::cout << TablePointer[i] << std::endl;
  68. }
  69.  
  70. void DetectRepeats(int* OldTablePointer,int *Array,int TableCounter, int &j) { // if next 2 numbers are the same, they repeat
  71. for (int i = 0; i < TableCounter ; i++)
  72. if (OldTablePointer[i] == OldTablePointer[i + 1]&&Array[j-1]!=OldTablePointer[i]) {
  73. Array[j] = OldTablePointer[i];
  74. j++;
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment