Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> /* biblioteka wejscia i wyjścia konsolowego */
- #include <fstream> /* biblioteka zawierająca strumienie wyjścia */
- #include <ctime> /* biblioteka używana przy generowaniu liczb pseudolosowych */
- using namespace std;
- void csort(int *arr, int size); /* deklaracja funkcja sortująca algorytmem przez wybór */
- void bbsort(int *arr, int size); /* deklaracja funkcja sortująca algorytmem bąbelkowym */
- int getNumberOfLines(string filePath); /* deklaracja funkcja, która zwraca ilość liczb z pliku */
- void generateNumbers(string filePath, int n, int m); /* deklaracja funkcja generująca liczby */
- int main() {
- unsigned const RANGE = 100000; /* zmienna kontrolująca zakres sortowanych liczb */
- const string inputFile = "input.txt"; /* ścieżka do pliku wejściowego */
- const string outputFile = "output.txt"; /* ścieżka do pliku wyjściowego */
- cout << "Wygenerowac liczby?\nNie (enter lub 0)\nTak (ilosc liczb do wygenerowania)\nWybor:";
- int choice = 0;
- cin >> choice;
- /* jeżeli wybieramy losowanie liczb w naszym generatorze, wykona się funckja
- generateNumbers( [nazwa pliku wyjsciowego] , [ ilość liczbb], [zakres sortowanych/losowanych liczb ] */
- if (choice != 0) {
- generateNumbers(inputFile, choice, RANGE);
- }
- /* zmienna size jest pobierana z funkcji zintegrowanej z plikiem wejsciowym,
- informuje funkcje sortujące, ile razy ma się wykonać algorytm sortujący */
- int size = getNumberOfLines(inputFile);
- /* deklaracja tablicy z elementami do posortowania */
- int *arr;
- arr = new int[size];
- /* pobieranie elementów z pliku do tablicy arr w programie */
- fstream inFile(inputFile);
- int i = 0, a = 0;
- while (inFile >> a) {
- arr[i] = a;
- ++i;
- }
- inFile.close();
- cout << "Wybierz opcje sortowania\n1.Babelkowe (1)\n2.Zliczanie (2)\nWybor:";
- cin >> choice;
- /* instrukcja warunkowa, gdzie użytkownik decyduje o sposobie sortowania elementów */
- choice == 1 ? bbsort(arr, size) : csort(arr, size);
- delete [] arr;
- /* wypisanie posortowanych elementów do pliku output.txt */
- ofstream oFile(outputFile);
- for (int i = 0; i < size; i++) {
- oFile << arr[i];
- if (i < size - 1) {
- oFile << endl;
- }
- }
- oFile.close();
- return 0;
- }
- void csort(int *arr, int size) {
- cout << "TODO";
- void sort(int* lista, int zakres_od, int zakres_do, int n){
- int dl = zakres_do - zakres_od + 1;
- int* zlicz = new int [dl];
- for(int i = 0; i < dl; i++)
- zlicz[i] = 0;
- for(int i = 0; i < n; i++)
- zlicz[lista[i] - zakres_od]++;
- int x = 0;
- for(int i = 0; i < dl; i++)
- for(int j = 0; j < zlicz[i]; j++)
- lista[x++] = i + zakres_od;
- }
- }
- /* algorytm sortujący bąbelkowo */
- void bbsort(int *arr, int size) {
- bool swapped = false;
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < size - 1 - i; j++) {
- if (arr[j] > arr[j + 1]) {
- int temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- swapped = true;
- }
- }
- if (!swapped) {
- break;
- }
- }
- }
- /* funkcja pobierająca ilosc liczb z pliku wejsciowego , zwraca liczbę naturalną */
- int getNumberOfLines(string filePath) {
- int result = 0;
- ifstream file(filePath);
- string line;
- while (getline(file, line)) {
- ++result;
- }
- file.close();
- return result;
- }
- /* funkcja generująca liczby pseudolosowe */
- void generateNumbers(string filePath, int n, int m) {
- srand(time(NULL));
- ofstream file(filePath);
- for (int i = 0; i < n; i++) {
- file << rand() % m;
- if (i < n - 1) {
- file << endl;
- }
- }
- file.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement