VEndymionV

Dwie ostatnie wejściówki 113A

Jun 2nd, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.59 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3.  
  4.  
  5. /*
  6. Wejściówka z przedostatnich zajęć 113A:
  7. 1. Napisać funkcję, która zmieni wartości dwóch liczb. Te liczby mają być argumentami funkcji.
  8. 2. Napisać funkcję, która zaalokuje pamięć dla tablicy o podanym rozmiarze.
  9. 3. Wypełnić tą tablicę wartościami nie używając znaków"[]" czyli użyć arytmetyki wskaźników.
  10. 4. Napisać funkcję, która posortuje tablicę podaną jako argument.
  11. Wejściówka z ostatnich zajęć 113A:
  12. 5. Pobrać z klawiatury 2 dane - "rozmiar tablicy i znak". Stworzyć tablicę trójkątną i ją wypisać np.:
  13. Podaje rozmiar 4 i znak "*". wynik ma być taki:
  14. ****
  15. ***
  16. **
  17. *
  18. 6. Na piątkę napisać wskaźnik do funkcji, która taką tablicę tworzy i wypisuje na konsolę
  19. */
  20. void fzad1(int *a, int *b) // Funkcja do zadania 1. Przyjmuje dwa wskaźniki których wartość zmienia.
  21. {
  22.     *a = 10;
  23.     *b = 44;
  24. }
  25.  
  26. int *alokacja(int rozmiar) // Funkcja do zadania 2. Alokuje pamięć na tablice typu int, jako argument ile ma pomieścić elementów.
  27. {
  28.     int *tablica = (int*)malloc(sizeof(int) * rozmiar);
  29.     return tablica;
  30. }
  31.  
  32. void sortowanie(int *tablica, int rozmiar) // Funkcja do zadanie 4, sortowanie tablicy, chyba wyszło mi bąbelkowe.
  33. {
  34.     int i, j, pom;
  35.     for (i = 0; i < rozmiar; i++)
  36.     {
  37.         for (j = 0; j < rozmiar; j++)
  38.         {
  39.             if (*(tablica + i) < *(tablica + j))
  40.             {
  41.                 pom = *(tablica + i);
  42.                 *(tablica + i) = *(tablica + j);
  43.                 *(tablica + j) = pom;
  44.             }
  45.         }
  46.     }
  47. }
  48.  
  49. void trojkat(int rozmiar_wzorku, char znak) // Funkcja do zadania 5.
  50. {
  51.     char *trojkat;
  52.     int i, j;
  53.     for (i = rozmiar_wzorku; i > 0; i--)
  54.     {
  55.         trojkat = (char*)malloc(sizeof(char) * i);
  56.         for (j = 0; j < i; j++)
  57.         {
  58.             trojkat[j] = znak;
  59.             trojkat[j + 1] = '\0';
  60.         }
  61.         printf("%s\n", trojkat);
  62.         trojkat = NULL;
  63.         free(trojkat);
  64.     }
  65. }
  66.  
  67.  
  68. int main()
  69. {
  70.    
  71.     // Zadanie 1:
  72.     int i;
  73.     int a, b;
  74.     a = 2;
  75.     b = 7;
  76.     printf("Przed wywolaniem funkcji a=%d, b=%d\n", a, b);
  77.     fzad1(&a, &b);
  78.     printf("Po wywolaniu funkcji a=%d, b=%d\n", a, b);
  79.     // Zadanie 2:
  80.     int rozmiar, *tablica;
  81.     printf("Podaj rozmiar tablicy ktora chcesz stworzyc: ");
  82.     scanf("%d", &rozmiar);
  83.     tablica = alokacja(rozmiar);
  84.     // Zadanie 3 (wypełniam tablice używając arytmetyki wskaźników):
  85.     for ( i = 0; i < rozmiar; i++)
  86.     {
  87.         printf("Podaj %d element tablicy: ", i);
  88.         scanf("%d", (tablica + i));
  89.     }
  90.     // (tablica+1) jest równoznaczne z &tablica[1], (tablica) to &tablica[0], (tablica+5) to &tablica[5] itd.
  91.     printf("Przed sortowaniem:\n");
  92.     for ( i = 0; i < rozmiar; i++)
  93.     {
  94.         printf("%d ", *(tablica+i)); // wyświetlam tablice przed sortowaniem
  95.     }
  96.     // *(tablica+1) jest równoznaczne z tablica[1], *(tablica) to tablica[0], *(tablica+5) to tablica[5] itd.
  97.     // Zadanie 4:
  98.     sortowanie(tablica, rozmiar); // sortuje wypełnioną talibce
  99.     printf("\nPo sortowaniu:\n");
  100.     for ( i = 0; i < rozmiar; i++)
  101.     {
  102.         printf("%d ", *(tablica + i)); // wyświetlam tablice po sortowaniu
  103.     }
  104.     // Zadanie 5:
  105.     char znak = '*';
  106.     int rozmiar_wzorku;
  107.     getchar(); // czyszcze bufor, czy jak to się profesjonalnie nazywa, po prostu żeby mi scanf %c dobrze zadziałał
  108.     printf("\nPodaj znak z ktorego mam utworzyc wzorek: ");
  109.     scanf("%c", &znak);
  110.     printf("Podaj rozmiar do wzorku: ");
  111.     scanf("%d", &rozmiar_wzorku);
  112.     void(*wsk_na_f)(int rozmiar_wzorku, char znak); // wskaźnik na funkcje
  113.     //trojkat(rozmiar_wzorku, znak); // wywołanie "standardowe" nie używam wskaźnika na funkcje
  114.     wsk_na_f = trojkat; // wskaźnik wskazuje teraz na funkcje trojkat()
  115.     wsk_na_f(rozmiar_wzorku, znak); // wywołuje funkcje trojkat poprzez wskaźnik
  116.     system("pause");
  117.     return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment