Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6. struct Struktura{
  7.     int i;
  8.     float f;
  9.     char c;
  10. };
  11.  
  12. string print(Struktura** tab){
  13.     string output ="";
  14.     for(int i=0;i<20;i++){
  15.           output += to_string(tab[i]->i) + " ";
  16.         }
  17.         return output;
  18. }
  19.  
  20. Struktura** losowanie(int N){
  21.     struct Struktura** tab=(struct Struktura**) malloc(N*sizeof(struct Struktura));
  22.     bool uniqueNumbers[10000];
  23.  
  24.     int randomNumber;
  25.  
  26.     for(int i=0;i<N;i++){
  27.         tab[i] = (struct Struktura*) malloc(sizeof(struct Struktura));
  28.         bool uniqueNumberFound = false;
  29.         while(uniqueNumberFound==false){
  30.  
  31.             randomNumber = (rand()%10001)-1000;
  32.             int indexInArray;
  33.             if(randomNumber<0){
  34.                 indexInArray=randomNumber+9000;}
  35.             else{
  36.                 indexInArray=randomNumber;
  37.             }
  38.             if(uniqueNumbers[indexInArray] != true){
  39.                 uniqueNumbers[indexInArray] = true;
  40.                 uniqueNumberFound = true;
  41.             }
  42.         }
  43.     tab[i]->i=randomNumber;
  44.     tab[i]->c = 'B' + rand() % 18;
  45.     tab[i]->f = 1000 + i;
  46.     }
  47.     return tab;
  48. }
  49.  
  50. void kasowanie(Struktura** tab, int n){
  51.     for(int i=0;i<n;i++){
  52.         free(tab[i]);
  53.     }
  54.     free(tab);
  55. }
  56.  
  57. void sortowanie(Struktura** tab, int N){
  58.     bool sortedArray;
  59.     for(int i=0;i<N;i++)
  60.     {
  61.         sortedArray = true;
  62.         for( int j=0;j<N-i-1;j++)
  63.         {
  64.             if(tab[j]->i > tab[j+1]->i){
  65.  
  66.                 Struktura* temp = tab[j];
  67.                 tab[j] = tab[j + 1];
  68.                 tab[j + 1] = temp;
  69.                  sortedArray = false;
  70.                  }
  71.         }
  72.         if(sortedArray==true){
  73.             return;
  74.         }
  75.     }
  76. }
  77.  
  78. int zliczanieZnakow(Struktura** tab, int n, char c){
  79.     int counter = 0;
  80.     for(int i=0;i<n;i++){
  81.         if(tab[i]->c == c){
  82.             counter++;
  83.         }
  84.     }
  85.     return counter;
  86. }
  87.  
  88. int main()
  89. {
  90.     srand(time(NULL));
  91.     int N;
  92.     char X;
  93.     FILE* fp = fopen("inlab01.txt", "r");
  94.     if (fp == NULL)
  95.         return -1;
  96.     fscanf (fp, "%d %c", &N, &X);
  97.     fclose(fp);
  98.  
  99.     clock_t begin, end;
  100.     double time_spent;
  101.     begin = clock();
  102.  
  103.     Struktura** s = losowanie(N);
  104.  
  105.     sortowanie(s, N);
  106.     int charReps = zliczanieZnakow(s, N, X);
  107.     string t1 = print(s);
  108.     cout << t1;
  109.     kasowanie(s, N);
  110.  
  111.     end = clock();
  112.     time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
  113.  
  114.  
  115.     cout << charReps << " " << time_spent;
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement