Advertisement
Guest User

copy

a guest
Apr 19th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.86 KB | None | 0 0
  1. #include <stdio.h>    // Instrukcja Preprocesora
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5. #define N 5
  6. #define Max 50
  7. #include <ctype.h>
  8. #define pi 3.14
  9.  
  10.  
  11. char exampleFunction(const char *s){
  12.     return *s;
  13. }
  14.  
  15. void linia(int);
  16.  
  17. void putRandom(float (*)[N], int);
  18.  
  19. void printArr(float (*)[N], int);
  20.  
  21. float **allocation(int w, int k);
  22.  
  23.  
  24. struct fraction {
  25.     int counter;
  26.     unsigned denominator;
  27.     float value;
  28. };
  29.  
  30. struct stack {
  31.     int value;
  32.     struct stack *next;
  33. };
  34.  
  35. struct stack *pointer;
  36. struct stack *old;
  37.  
  38. struct kolejka{
  39.     int przod, tyl, size;
  40.     unsigned capacity;
  41.     int* array;
  42. };
  43.  
  44. struct node{            // węzeł
  45.     char *w;
  46.     int count;
  47.     struct node *left, *right;
  48. };
  49.  
  50.  
  51.  
  52.  
  53.  
  54. int minFractions(struct fraction f1, struct fraction f2) {
  55.     return f1.counter * f2.denominator < f2.counter * f1.denominator;
  56. }
  57.  
  58. int printFractions(struct fraction f) {
  59.     printf("%d/%u, %f \n", f.counter, f.denominator, f.value);
  60.     return 0;
  61. }
  62.  
  63.  
  64. void sortFract(struct fraction *t, int n) {
  65.     for (int i = 0; i < n; i++) {
  66.         int y = i;
  67.         struct fraction min = t[y];
  68.         for (int j = i + 1; j < n; j++) {
  69.             minFractions(t[j], min);
  70.             if (minFractions(t[j], min) == 1) {
  71.                 t[y] = t[i];
  72.                 t[i] = min;
  73.                 min = t[j];
  74.             }
  75.         }
  76.     }
  77.  
  78. }
  79.  
  80. void swap(struct fraction *a, struct fraction *b) {
  81.     struct fraction tmp = *a;
  82.     *a = *b;
  83.     *b = tmp;
  84. }
  85.  
  86. int compareByValue(struct fraction *left, struct fraction *right) {
  87.     return left->value < right->value;
  88. }
  89.  
  90. int compareByMultiply(struct fraction *left, struct fraction *right) {
  91.     return left->counter * right->denominator < right->counter * left->denominator;
  92. }
  93.  
  94. void bubbleSortfract(struct fraction *a, int n) {
  95.     for (int i = 0; i < n; i++) {
  96.         for (int j = 0; j < n - i - 1; j++) {
  97.             if (compareByMultiply(&a[j], &a[j + 1])) {
  98.                 swap(&a[j], &a[j + 1]);
  99.             }
  100.         }
  101.     }
  102.  
  103. }
  104.  
  105.  
  106. void printArray(char *array[], int n) {
  107.     printf("{");
  108.     for (int i = 0; i < n; i++) {
  109.         if (i == n - 1) {
  110.             printf("%c", array[i]);
  111.         } else {
  112.             printf("%c, ", array[i]);
  113.         }
  114.     }
  115.     printf("}");
  116. }
  117.  
  118. void printTwoDimArr(int n, int m, int arr[n][m]) {
  119.     for (int i = 0; i < n; i++) {
  120.         for (int j = 0; j < m; j++) {
  121.             printf("%d ", arr[i][j]);
  122.             if (j == n - 1) {
  123.                 printf("\n");
  124.             }
  125.         }
  126.     }
  127. }
  128.  
  129.  
  130. int *fibonacci(int n) {
  131.     int *fib = (int *) malloc(n * sizeof(int));  // Dynamiczna alokacja zmiennej
  132.     fib[0] = 0;
  133.     fib[1] = 1;
  134.     for (int i = 2; i < n; i++) {
  135.         fib[i] = fib[i - 1] + fib[i - 2];
  136.     }
  137.     return fib;
  138. }
  139.  
  140. void swapNum(int *a, int *b) {
  141.     int temp = *a;
  142.     *a = *b;
  143.     *b = temp;
  144. }
  145.  
  146.  
  147. int diagonal(int *a, int w) {  // w - liczba wierszy
  148.     int i, j;
  149.  
  150.     for (i = 0; i < w; i++) {
  151.         for (j = 0; j < N; j++) {
  152.             if (j == i && (*(a + i) + j) != 0) {
  153.                 return 1;
  154.             } else {
  155.                 return 0;
  156.             }
  157.  
  158.         }
  159.     }
  160.     return 0;
  161. }
  162.  
  163. void bubbleSort(int arr[], int n) {             // Sortowanie bąbelkowe
  164.     for (int i = 0; i < n - 1; i++) {
  165.         for (int j = 0; j < n; j++) {
  166.             if (arr[j] > arr[j + 1]) {
  167.                 swapNum(&arr[j], &arr[j + 1]);
  168.             }
  169.         }
  170.     }
  171.     printArray(arr, n);
  172. }
  173.  
  174. void insertSort(int arr[], int size) {           // sortowanie przez wstawianie!
  175.     int i, j;
  176.     for (i = 1; i < size; i++) {
  177.         int tmp = arr[i];
  178.         j = i - 1;
  179.         while (j >= 0 && arr[j] > tmp) {
  180.             arr[j + 1] = arr[j];
  181.             j = j - 1;
  182.         }
  183.         arr[j + 1] = tmp;
  184.     }
  185.     printArray(arr, size);
  186. }
  187.  
  188. void insertSortofChars(char arr[], int size) {           // sortowanie przez wstawianie!
  189.     int i, j;
  190.     for (i = 1; i < size; i++) {
  191.         int tmp = arr[i];
  192.         j = i - 1;
  193.         while (j >= 0 && arr[j] > tmp) {
  194.             arr[j + 1] = arr[j];
  195.             j = j - 1;
  196.         }
  197.         arr[j + 1] = tmp;
  198.     }
  199.  
  200. }
  201.  
  202. void selectionSort(int *t, int n) {                  //Sortowanie przez wybieranie
  203.     for (int i = 0; i < n; i++) {
  204.         int y = i;
  205.         int min = t[y];
  206.         for (int j = i + 1; j < n; j++) {
  207.             if (t[j] < min) {
  208.                 min = t[j];
  209.                 y = j;
  210.             }
  211.             t[y] = t[i];
  212.             t[i] = min;
  213.         }
  214.     }
  215.     printArray(t, n);
  216. }
  217.  
  218. void quickSort(int arr[], int left, int right) {             //Szybkie sortowanie
  219.     int l = left, r = right;
  220.     int pivot = arr[(l = r) / 2];
  221.     while (left <= right) {
  222.         while (arr[l] < pivot)
  223.             l++;
  224.         while (arr[r] > pivot)
  225.             r++;
  226.         if (l < r) {
  227.             swapNum(&arr[l], &arr[r]);
  228.             l++;
  229.             r++;
  230.         }
  231.     }
  232.     if (left < r) quickSort(arr, left, r);
  233.     if (l < right) quickSort(arr, l, right);
  234. }
  235.  
  236.  
  237. void switchMax(float arr[], int size, int j) {
  238.     int i, max = 0;
  239.  
  240.     for (i = 1; i < size; i++) {
  241.         if (arr[max] < arr[i]) {
  242.             max = i;
  243.         }
  244.     }
  245.     int temp = arr[j];
  246.     arr[j] = arr[j + 1];
  247.     arr[j + 1] = temp;
  248. }
  249.  
  250. int howManyDifnum(float *arr, int n){
  251.     int sum = n;                            //zmniejszać o 1 gdy będzie jakaś liczba taka sama od drugiej
  252.     int i, j;
  253.     for(i = 0; i < n; i++)
  254.         for(j = 0; j < n; j++){
  255.             if(arr[i] == arr[j] && i != j){
  256.                 sum--;
  257.                 break;
  258.         }
  259.     }
  260.   return sum;
  261. }
  262.  
  263. int strlen1(const char *s){
  264.     int n;
  265.     for(n=0; *s != '\0'; ++s)++n;
  266.     return n;
  267. }
  268.  
  269. void strcpy1(char *t, const char *s) {
  270.     while ((*t = *s) != '\0') {
  271.         s++;
  272.         t++;
  273.     }
  274. }
  275. void reversPrint(char *arr, int size){
  276.     for(int i = size - 1; i >= 0; i--){
  277.         printf("%c ", arr[i]);
  278.     }
  279. }
  280.  
  281. void printChars(char *array, int size){
  282.     for(int i = 0; i < size; i++){
  283.         printf("%c ", array[i]);
  284.     }
  285. }
  286.  
  287. struct kolejka* createQueue(unsigned capacity){
  288.     struct kolejka* kolejka = (struct kolejka*) malloc(sizeof(struct kolejka));
  289.     kolejka->capacity = capacity;
  290.     kolejka->przod = kolejka->size = 0;
  291.     kolejka->tyl = capacity - 1;
  292.     kolejka->array = (int*) malloc(kolejka->capacity * sizeof(int));
  293.     return kolejka;
  294. }
  295.  
  296. int czyPelna(struct kolejka* kolejka){
  297.     return (kolejka->size == kolejka->capacity);
  298. }
  299.  
  300. int czyPusta(struct kolejka* kolejka){
  301.     return (kolejka->size == 0);
  302. }
  303.  
  304. void kolejkuj(struct kolejka* kolejka, int item){
  305.     if (czyPelna(kolejka))
  306.         return;
  307.     kolejka->tyl = (kolejka->tyl + 1)%kolejka->capacity;
  308.     kolejka->array[kolejka->tyl] = item;
  309.     kolejka->size = kolejka->size + 1;
  310.     printf("%d dodane do kolejki\n", item);
  311. }
  312.  
  313. int usunEle(struct kolejka* kolejka){
  314.     if (czyPusta(kolejka))
  315.         return 0;
  316.     int item = kolejka->array[kolejka->przod];
  317.     kolejka->przod = (kolejka->przod + 1)%kolejka->capacity;
  318.     kolejka->size = kolejka->size - 1;
  319.     return item;
  320. }
  321.  
  322. int przod(struct kolejka* kolejka){
  323.     if (czyPusta(kolejka))
  324.         return 0;
  325.     return kolejka->array[kolejka->przod];
  326. }
  327.  
  328. int tyl(struct kolejka* kolejka){
  329.     if (czyPusta(kolejka))
  330.         return 0;
  331.     return kolejka->array[kolejka->tyl];
  332. }
  333.  
  334. int read(FILE *fp, char *s){
  335.     return fscanf(fp, "%s", s);
  336. }
  337. void maxTwoDim(int **arr, int size){
  338.     for(int i = 0; i < size; i++){
  339.         for(int j = 0; j < size; j++){
  340.             int max = arr[i][j];
  341.             if(arr[i][j] > max){
  342.                 int tmp = arr[i][j];
  343.                 arr[i][j] = max;
  344.                 max = tmp;
  345.             }
  346.         }
  347.     }
  348. }
  349. int main() {
  350.     int a[3][3] = {{3, 56, 21}, {51, 87, 1}, {30, 99, 5}};
  351.     printf("__________Array before__________\n");
  352.     printTwoDimArr(3, 3, a);
  353.     maxTwoDim(a, 3);
  354.     printf("__________Array after__________\n");
  355.     printTwoDimArr(3, 3, a);
  356.  
  357.  
  358.     /*struct kolejka* kolejka = createQueue(1000);
  359.  
  360.     kolejkuj(kolejka, 10);
  361.     kolejkuj(kolejka, 20);
  362.     kolejkuj(kolejka, 30);
  363.     kolejkuj(kolejka, 40);
  364.  
  365.     printf("%d Usuniete z kolejki\n\n", usunEle(kolejka));
  366.  
  367.     printf("przod wynosi %d\n", przod(kolejka));
  368.     printf("tyl wynosi %d\n", tyl(kolejka));
  369.  
  370.  
  371.      char arr[5] = {'a', 'b', 'c', 'd', 'e'};
  372.     printf("__________Chars in normal position__________\n");
  373.     printChars(arr, 5);
  374.     printf("\n");
  375.     printf("__________Chars in revers position__________\n");
  376.     reversPrint(arr, 5);
  377.  
  378.     //char tekst[Max]="Sztuka dobrego wyboru";
  379.     //linia(1);
  380. 1) Sprawdzic dzialanie programu
  381.  
  382.     puts(tekst);
  383.     printf("%c\n", exampleFunction(tekst));*/
  384.  
  385. //    linia(2);
  386. //(2) Pobra� z wej�cia dowolny ci�g znakowy i sprawdzic jego d�ugo��
  387. //wykorzystuj�c funkcje strlen1 i strlen2
  388.  
  389.     //gets(tekst);
  390.     //puts(tekst);
  391.     //printf("Ciąg sklada sie z %d znakow", strlen1(tekst));
  392.  
  393.  
  394.  
  395.  
  396.     //inia(3);
  397. //(3) Przydzieli� dynamicznie pami�� dla tablicy o d�ugo�ci odpowiadaj�cej
  398. //pobranemu ci�gowi znak�w i skopiowa� do niej ten ci�g
  399. //wykorzystuj�c funkcje  strcpy1 i strcpy2
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.     /*float (*m)[N];
  408.     m = (float(*)[N]) malloc(N*N* sizeof(float));
  409.  
  410.     linia(1);
  411.     (1) Dokona� dynamicznego przydzia�u pami�ci dla wska�nika m,tak aby m�g�
  412.     sta� si� parametrem aktualnym definiowanych poni�ej funkcji, zastosowa� funkcje -
  413.     wczyta� i wypisa� macierz*/
  414.  
  415.     //putRandom(*m, N);
  416.     //printArr(*m, N);
  417.  
  418.     //linia(2);
  419. //(2) Wywo�a� funkcj� z zadania nr 3 dla tablicy m.
  420.  
  421.     /*switchMax(m[i], N, i);
  422.     printArr(m, N);*/
  423.  
  424.    // linia(3);
  425.  
  426.     /*for(int i = 0; i < N; i++){
  427.         switchMax(m[i], N, i);
  428.     }
  429.     printArr(m, N);*/
  430.  
  431.    // linia(4);
  432.  
  433.  
  434.  
  435.  
  436.  
  437.     //Zwolni� pami�� dla wska�nika m
  438.     //linia(0);
  439.  
  440.     /*for(i = 0; i < N; i++){
  441.         free(m[i]);
  442.         free(m);
  443.     }*/
  444.  
  445.  
  446.  
  447.      /*int m[N][N] = {{1, 0, 7, 0},
  448.                      {0, 5, 0, 4},
  449.                      {0, 0, 9, 0},
  450.                      {0, 0, 0, 3}};
  451.  
  452.     printf("\nCzy diagonalna?\n");
  453.     if (diagonal(&m[N][N], 4))
  454.         printf("\n-TAK");
  455.     else printf("\n-NIE");
  456.  
  457.  
  458.     int array[5][5] = {{2,  3,  1,  7,  5},
  459.                        {5,  87, 17, 33, 11},
  460.                        {44, 65, 25, 12, 78},
  461.                        {3,  22, 7,  13, 7},
  462.                        {43, 54, 33, 1,  0}};
  463.  
  464.     printTwoDimArr(5, 5, array);
  465.      const int n = 5;
  466.      struct fraction array[5] = {{5, 4},
  467.                                  {3, 4},
  468.                                  {5, 8},
  469.                                  {1, 2},
  470.                                  {3, 8},
  471.                                  {8, 9}};
  472.      for (int i = 0; i < n; i++) {
  473.          array[i].value = (float) array[i].counter / array[i].denominator;
  474.          printf("%d/%d %f \n", array[i].counter, array[i].denominator, array[i].value);
  475.      }
  476.      printf("\n Sortowanie \n");
  477.      bubbleSort(array, n);
  478.      for (int i = 0; i < n; i++) {
  479.          printFractions(array[i]);
  480.      } */
  481.     return 0;
  482. }
  483.  
  484. float **allocation(int w, int k){
  485.     int i;
  486.     float **p=(float **)malloc(w*sizeof(float *));
  487.     for(i=0; i< w; i++)
  488.         p[i]=(float *)malloc(k*sizeof(float));
  489.  
  490.     return p;
  491. }
  492.  
  493. void putRandom(float (*a)[N], int w) {
  494.     int i, j;
  495.     srand((unsigned) time(NULL));
  496.     for (i = 0; i < w; i++) {
  497.         for (j = 0; j < N; j++) a[i][j] = rand() % 50 * 0.5;
  498.     }
  499.  
  500. }
  501.  
  502. void printArr(float(*a)[N], int w) {
  503.     int i, j;
  504.     for (i = 0; i < w; i++) {
  505.         for (j = 0; j < N; j++) printf("%.2f ", a[i][j]);
  506.         printf("\n");
  507.     }
  508.  
  509. }
  510.  
  511.  
  512. void linia(int k) {
  513.     if (k > 0) printf("\n\n______________ %d ________________\n\n", k);
  514.     else printf("\n\n___________________________________\n\n");
  515. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement