VEndymionV

Untitled

Oct 16th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.69 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "time.h"
  4.  
  5.  
  6. typedef struct struktura
  7. {
  8.     int i;
  9.     char c;
  10.     float f;
  11.  
  12. } Struktura;
  13.  
  14. Struktura **losowanie(int N)
  15. {
  16.     //alokacja pamięci na tablicę N wskaźników na struktury
  17.     Struktura **tab_wsk = (Struktura**)malloc(N * sizeof(Struktura*));
  18.     //tworzenie zorodku do którego wstawiamy czas w sekundach
  19.     // **** TUTAJ ZMIENIONE
  20.     srand(time(NULL));
  21.     // ****
  22.  
  23.     //alokacja pamięci na pojedynczą strukturę z przypisaniem adresu do i-tej pozycji tablicy tab_wsk[]
  24.     int los_i;
  25.     char los_c;
  26.     float los_f;
  27.     int tab_pow[10001] = { 0 }; //tabela powtorzen
  28.     for (int i = 0; i < N; i++)
  29.     {
  30.         tab_wsk[i] = (Struktura*)malloc(sizeof(Struktura));
  31.  
  32.         do
  33.         {
  34.             los_i = ((rand() % 10001) - 1000); // liczba pseudolosowa z przedziału <0,10000> pomniejszona o 1000  
  35.         } while (tab_pow[los_i]); // **** TUTAJ ZMIENIONE
  36.         tab_pow[los_i] = 1;
  37.  
  38.         los_c = ((rand() % 23) + 66); // ASCI B=66 X=88  losujemy z przedziału <0,22> (23 liczby)  <66,88>
  39.         los_f = (1000 + i + 1); // pseudolosowa wartosc z przedziału <0,N-1> + 1001
  40.         tab_wsk[i]->i = los_i; //wpisanie wartości pseudolosowej do zmiennej i w strukturze pod adresem tab_wsk[i]
  41.         tab_wsk[i]->c = los_c; //wpisanie wartości pseudolosowej do zmiennej c w strukturze pod adresem tab_wsk[i]
  42.         tab_wsk[i]->f = los_f; //wpisanie wartości pseudolosowej do zmiennej f w strukturze pod adresem tab_wsk[i]
  43.     }
  44.     return tab_wsk;
  45. }
  46.  
  47. /*void wyswietlanie(Struktura **tab_wsk,int N)
  48. {
  49. for (int i = 0; i < N; i++)
  50. {
  51. printf("Wartość pseudolosowa int jest rowna %d", tab_wsk[i]->i);
  52. }
  53. }*/
  54.  
  55. void sortowanie(Struktura **tab_wsk, int N)
  56. {
  57.     int temp;
  58.     for (int i = 0; i < N; i++)
  59.     {
  60.         for (int j = 0; j < N - 1; j++)
  61.         {
  62.             if (tab_wsk[j]->i > tab_wsk[j + 1]->i)
  63.             {
  64.                 temp = tab_wsk[j]->i;
  65.                 tab_wsk[j]->i = tab_wsk[j + 1]->i;
  66.                 tab_wsk[j + 1]->i = temp;
  67.             }
  68.         }
  69.     }
  70. }
  71.  
  72. void zwalnianie(Struktura **tab_wsk, int N)
  73. {
  74.     //zwalnianie pamięci, odpowiednio:
  75.     for (int i = 0; i < N; i++)
  76.     {
  77.         free(tab_wsk[i]);
  78.     }
  79.     free(tab_wsk);
  80. }
  81.  
  82. int main()
  83. {
  84.     int N = 7000;// teraz ustawione na stałe 6 ale ma być mozliwość wpisania liczby struktur
  85.     Struktura **tab_wsk = losowanie(N); //bez powtórek
  86.     sortowanie(tab_wsk, N);
  87.     for (int i = 0; i < 20; i++)
  88.     {
  89.         printf("%d:%d\t", i + 1, tab_wsk[i]->i);
  90.         printf("%c\t", tab_wsk[i]->c);
  91.         printf("%f\t", tab_wsk[i]->f);
  92.         printf("\n");
  93.     }
  94.  
  95.  
  96.     //zliczanie_znakow
  97.     zwalnianie(tab_wsk, N);
  98.     system("pause");
  99.     return 0;
  100.  
  101. }
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. /*czemu to g nie działa
  114. do
  115. {
  116. los_i = (rand() % 20);//TEST
  117. //los_i = ((rand() % 10001) - 1000); // liczba pseudolosowa z przedziału <0,10000> pomniejszona o 1000
  118. } while (tab_pow[los_i] != 1);
  119. */
Advertisement
Add Comment
Please, Sign In to add comment