Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.96 KB | None | 0 0
  1. #include <iostream> /* biblioteka wejscia i wyjścia konsolowego */
  2. #include <fstream> /* biblioteka zawierająca strumienie wyjścia */
  3. #include <ctime> /* biblioteka używana przy generowaniu liczb pseudolosowych */
  4.  
  5. using namespace std;
  6.  
  7. void csort(int *arr, int size); /* deklaracja funkcja sortująca algorytmem przez wybór */
  8. void bbsort(int *arr, int size); /* deklaracja funkcja sortująca algorytmem bąbelkowym */
  9. int getNumberOfLines(string filePath); /* deklaracja funkcja, która zwraca ilość liczb z pliku */
  10. void generateNumbers(string filePath, int n, int m); /*  deklaracja funkcja generująca liczby */
  11.  
  12. int main() {
  13.     unsigned const RANGE = 100000;  /* zmienna kontrolująca zakres sortowanych liczb */
  14.     const string inputFile =  "input.txt"; /* ścieżka do pliku wejściowego */
  15.     const string outputFile = "output.txt"; /* ścieżka do pliku wyjściowego  */
  16.  
  17.     cout << "Wygenerowac liczby?\nNie (enter lub 0)\nTak (ilosc liczb do wygenerowania)\nWybor:";  
  18.     int choice = 0;  
  19.     cin >> choice;
  20.  
  21.  /* jeżeli wybieramy losowanie liczb w naszym generatorze, wykona się funckja
  22.  generateNumbers( [nazwa pliku wyjsciowego] , [  ilość liczbb], [zakres sortowanych/losowanych liczb ] */
  23.                  
  24.     if (choice != 0) {
  25.         generateNumbers(inputFile, choice, RANGE);
  26.     }
  27.    
  28.    
  29.     /* zmienna size jest pobierana z funkcji zintegrowanej z plikiem wejsciowym,
  30.     informuje funkcje sortujące, ile razy ma się wykonać algorytm sortujący */
  31.  
  32.     int size = getNumberOfLines(inputFile);
  33.    
  34.     /* deklaracja tablicy z elementami do posortowania */
  35.     int *arr;
  36.     arr = new int[size];
  37.  
  38.  /* pobieranie elementów z pliku do tablicy arr w programie */
  39.     fstream inFile(inputFile);
  40.     int i = 0, a = 0;
  41.     while (inFile >> a) {
  42.         arr[i] = a;
  43.         ++i;
  44.     }
  45.     inFile.close();
  46.  
  47.     cout << "Wybierz opcje sortowania\n1.Babelkowe (1)\n2.Zliczanie (2)\nWybor:";
  48.     cin >> choice;
  49.    
  50.  /* instrukcja warunkowa, gdzie użytkownik decyduje o sposobie sortowania elementów */
  51.     choice == 1 ? bbsort(arr, size) : csort(arr, size);
  52.  
  53.  
  54.     delete [] arr;
  55.  
  56.  
  57.  /* wypisanie posortowanych elementów do pliku output.txt */
  58.     ofstream oFile(outputFile);
  59.     for (int i = 0; i < size; i++) {
  60.         oFile << arr[i];
  61.         if (i < size - 1) {
  62.             oFile << endl;
  63.         }
  64.     }
  65.     oFile.close();
  66.  
  67.     return 0;
  68. }
  69.  
  70.  
  71.  
  72. void csort(int *arr, int size) {
  73.     cout << "TODO";
  74.         void sort(int* lista, int zakres_od, int zakres_do, int n){
  75.       int dl = zakres_do - zakres_od + 1;
  76.       int* zlicz = new int [dl];
  77.       for(int i = 0; i < dl; i++)
  78.         zlicz[i] = 0;
  79.       for(int i = 0; i < n; i++)
  80.         zlicz[lista[i] - zakres_od]++;
  81.       int x = 0;
  82.       for(int i = 0; i < dl; i++)
  83.         for(int j = 0; j < zlicz[i]; j++)
  84.           lista[x++] = i + zakres_od;
  85.     }
  86. }
  87.  
  88.  /* algorytm sortujący bąbelkowo */
  89. void bbsort(int *arr, int size) {
  90.     bool swapped = false;
  91.  
  92.     for (int i = 0; i < size; i++) {
  93.         for (int j = 0; j < size - 1 - i; j++) {
  94.             if (arr[j] > arr[j + 1]) {
  95.                 int temp = arr[j];
  96.                 arr[j] = arr[j + 1];
  97.                 arr[j + 1] = temp;
  98.                 swapped = true;
  99.             }
  100.         }
  101.  
  102.         if (!swapped) {
  103.             break;
  104.         }
  105.     }
  106. }
  107.  
  108. /* funkcja pobierająca ilosc liczb z pliku wejsciowego , zwraca liczbę naturalną */
  109.  
  110. int getNumberOfLines(string filePath) {
  111.     int result = 0;
  112.     ifstream file(filePath);
  113.     string line;
  114.  
  115.     while (getline(file, line)) {
  116.         ++result;
  117.     }
  118.     file.close();
  119.  
  120.     return result;
  121. }
  122.  
  123.  /* funkcja generująca liczby pseudolosowe */
  124.  
  125. void generateNumbers(string filePath, int n, int m) {
  126.     srand(time(NULL));
  127.  
  128.     ofstream file(filePath);
  129.     for (int i = 0; i < n; i++) {
  130.         file << rand() % m;
  131.         if (i < n - 1) {
  132.             file << endl;
  133.         }
  134.     }
  135.     file.close();
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement