Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- source.cpp
- #include "functions.h"
- int main(){
- Table BeforeSort; // create table
- int Counter=100; // how many numbers there is in single table
- BeforeSort.array = new int[Counter];
- BeforeSort.BasicFunctions(Counter); // generate random numbers, sort, and print
- std::cout << "==================================\n"; // break line
- Table AfterSort; // new table
- AfterSort.array = new int[Counter / 2]; // worst scenario
- int RepeatsCounter = 0;
- DetectRepeats(BeforeSort.array, AfterSort.array, Counter,RepeatsCounter);
- AfterSort.PrintTable(AfterSort.array,RepeatsCounter);
- std::cout << RepeatsCounter << " numbers repeat.";
- delete[]BeforeSort.array;
- delete[]AfterSort.array;
- return 0;
- }
- functions.h
- #pragma once
- #include <iostream>
- #include <stdlib.h> // RNG
- #include <time.h>
- class Table {
- public:
- int* array=nullptr; // table pointer
- void Sort(int* TablePointer, int TableElementCounter);
- void GetRandomFill(int* TablePointer, int TableElementCounter);
- void PrintTable(int *TablePointer, int TableElementCounter);
- void BasicFunctions(int Counter) { // summarize these 3 functions
- GetRandomFill(array, Counter);
- Sort(array, Counter);
- PrintTable(array, Counter);
- }
- };
- void DetectRepeats(int* OldTablePointer,int *array, int TableCounter,int &j);
- functions.cpp
- #include "functions.h"
- void Swap(int* a, int* b) { // swap 2 numbers
- int c;
- c = *a;
- *a = *b;
- *b = c;
- } // swap 2 numbers
- void Table::Sort(int* TablePointer, int TableElementCount) { // bubble sort
- for (int j = 0; j < TableElementCount; j++)
- for (int i = 0; i < TableElementCount - j; i++)
- if (TablePointer[i] < TablePointer[i+1])
- Swap(TablePointer + i, TablePointer + i + 1);
- }
- void Table::GetRandomFill(int* TablePointer, int TableElementCounter) { // rng table fill
- srand(time(NULL));
- for (int i = 0; i < TableElementCounter; i++)
- TablePointer[i] = rand() % 150;
- }
- void Table::PrintTable(int* TablePointer, int TableElementCounter) {
- for (int i = 0; i < TableElementCounter; i++)
- std::cout << TablePointer[i] << std::endl;
- }
- void DetectRepeats(int* OldTablePointer,int *Array,int TableCounter, int &j) { // if next 2 numbers are the same, they repeat
- for (int i = 0; i < TableCounter ; i++)
- if (OldTablePointer[i] == OldTablePointer[i + 1]&&Array[j-1]!=OldTablePointer[i]) {
- Array[j] = OldTablePointer[i];
- j++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment