Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include "time.h"
- typedef struct struktura
- {
- int i;
- char c;
- float f;
- } Struktura;
- Struktura **losowanie(int N)
- {
- //alokacja pamięci na tablicę N wskaźników na struktury
- Struktura **tab_wsk = (Struktura**)malloc(N * sizeof(Struktura*));
- //tworzenie zorodku do którego wstawiamy czas w sekundach
- // **** TUTAJ ZMIENIONE
- srand(time(NULL));
- // ****
- //alokacja pamięci na pojedynczą strukturę z przypisaniem adresu do i-tej pozycji tablicy tab_wsk[]
- int los_i;
- char los_c;
- float los_f;
- int tab_pow[10001] = { 0 }; //tabela powtorzen
- for (int i = 0; i < N; i++)
- {
- tab_wsk[i] = (Struktura*)malloc(sizeof(Struktura));
- do
- {
- los_i = ((rand() % 10001) - 1000); // liczba pseudolosowa z przedziału <0,10000> pomniejszona o 1000
- } while (tab_pow[los_i]); // **** TUTAJ ZMIENIONE
- tab_pow[los_i] = 1;
- los_c = ((rand() % 23) + 66); // ASCI B=66 X=88 losujemy z przedziału <0,22> (23 liczby) <66,88>
- los_f = (1000 + i + 1); // pseudolosowa wartosc z przedziału <0,N-1> + 1001
- tab_wsk[i]->i = los_i; //wpisanie wartości pseudolosowej do zmiennej i w strukturze pod adresem tab_wsk[i]
- tab_wsk[i]->c = los_c; //wpisanie wartości pseudolosowej do zmiennej c w strukturze pod adresem tab_wsk[i]
- tab_wsk[i]->f = los_f; //wpisanie wartości pseudolosowej do zmiennej f w strukturze pod adresem tab_wsk[i]
- }
- return tab_wsk;
- }
- /*void wyswietlanie(Struktura **tab_wsk,int N)
- {
- for (int i = 0; i < N; i++)
- {
- printf("Wartość pseudolosowa int jest rowna %d", tab_wsk[i]->i);
- }
- }*/
- void sortowanie(Struktura **tab_wsk, int N)
- {
- int temp;
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < N - 1; j++)
- {
- if (tab_wsk[j]->i > tab_wsk[j + 1]->i)
- {
- temp = tab_wsk[j]->i;
- tab_wsk[j]->i = tab_wsk[j + 1]->i;
- tab_wsk[j + 1]->i = temp;
- }
- }
- }
- }
- void zwalnianie(Struktura **tab_wsk, int N)
- {
- //zwalnianie pamięci, odpowiednio:
- for (int i = 0; i < N; i++)
- {
- free(tab_wsk[i]);
- }
- free(tab_wsk);
- }
- int main()
- {
- int N = 7000;// teraz ustawione na stałe 6 ale ma być mozliwość wpisania liczby struktur
- Struktura **tab_wsk = losowanie(N); //bez powtórek
- sortowanie(tab_wsk, N);
- for (int i = 0; i < 20; i++)
- {
- printf("%d:%d\t", i + 1, tab_wsk[i]->i);
- printf("%c\t", tab_wsk[i]->c);
- printf("%f\t", tab_wsk[i]->f);
- printf("\n");
- }
- //zliczanie_znakow
- zwalnianie(tab_wsk, N);
- system("pause");
- return 0;
- }
- /*czemu to g nie działa
- do
- {
- los_i = (rand() % 20);//TEST
- //los_i = ((rand() % 10001) - 1000); // liczba pseudolosowa z przedziału <0,10000> pomniejszona o 1000
- } while (tab_pow[los_i] != 1);
- */
Advertisement
Add Comment
Please, Sign In to add comment