Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- /*
- Wejściówka z przedostatnich zajęć 113A:
- 1. Napisać funkcję, która zmieni wartości dwóch liczb. Te liczby mają być argumentami funkcji.
- 2. Napisać funkcję, która zaalokuje pamięć dla tablicy o podanym rozmiarze.
- 3. Wypełnić tą tablicę wartościami nie używając znaków"[]" czyli użyć arytmetyki wskaźników.
- 4. Napisać funkcję, która posortuje tablicę podaną jako argument.
- Wejściówka z ostatnich zajęć 113A:
- 5. Pobrać z klawiatury 2 dane - "rozmiar tablicy i znak". Stworzyć tablicę trójkątną i ją wypisać np.:
- Podaje rozmiar 4 i znak "*". wynik ma być taki:
- ****
- ***
- **
- *
- 6. Na piątkę napisać wskaźnik do funkcji, która taką tablicę tworzy i wypisuje na konsolę
- */
- void fzad1(int *a, int *b) // Funkcja do zadania 1. Przyjmuje dwa wskaźniki których wartość zmienia.
- {
- *a = 10;
- *b = 44;
- }
- int *alokacja(int rozmiar) // Funkcja do zadania 2. Alokuje pamięć na tablice typu int, jako argument ile ma pomieścić elementów.
- {
- int *tablica = (int*)malloc(sizeof(int) * rozmiar);
- return tablica;
- }
- void sortowanie(int *tablica, int rozmiar) // Funkcja do zadanie 4, sortowanie tablicy, chyba wyszło mi bąbelkowe.
- {
- int i, j, pom;
- for (i = 0; i < rozmiar; i++)
- {
- for (j = 0; j < rozmiar; j++)
- {
- if (*(tablica + i) < *(tablica + j))
- {
- pom = *(tablica + i);
- *(tablica + i) = *(tablica + j);
- *(tablica + j) = pom;
- }
- }
- }
- }
- void trojkat(int rozmiar_wzorku, char znak) // Funkcja do zadania 5.
- {
- char *trojkat;
- int i, j;
- for (i = rozmiar_wzorku; i > 0; i--)
- {
- trojkat = (char*)malloc(sizeof(char) * i);
- for (j = 0; j < i; j++)
- {
- trojkat[j] = znak;
- trojkat[j + 1] = '\0';
- }
- printf("%s\n", trojkat);
- trojkat = NULL;
- free(trojkat);
- }
- }
- int main()
- {
- // Zadanie 1:
- int i;
- int a, b;
- a = 2;
- b = 7;
- printf("Przed wywolaniem funkcji a=%d, b=%d\n", a, b);
- fzad1(&a, &b);
- printf("Po wywolaniu funkcji a=%d, b=%d\n", a, b);
- // Zadanie 2:
- int rozmiar, *tablica;
- printf("Podaj rozmiar tablicy ktora chcesz stworzyc: ");
- scanf("%d", &rozmiar);
- tablica = alokacja(rozmiar);
- // Zadanie 3 (wypełniam tablice używając arytmetyki wskaźników):
- for ( i = 0; i < rozmiar; i++)
- {
- printf("Podaj %d element tablicy: ", i);
- scanf("%d", (tablica + i));
- }
- // (tablica+1) jest równoznaczne z &tablica[1], (tablica) to &tablica[0], (tablica+5) to &tablica[5] itd.
- printf("Przed sortowaniem:\n");
- for ( i = 0; i < rozmiar; i++)
- {
- printf("%d ", *(tablica+i)); // wyświetlam tablice przed sortowaniem
- }
- // *(tablica+1) jest równoznaczne z tablica[1], *(tablica) to tablica[0], *(tablica+5) to tablica[5] itd.
- // Zadanie 4:
- sortowanie(tablica, rozmiar); // sortuje wypełnioną talibce
- printf("\nPo sortowaniu:\n");
- for ( i = 0; i < rozmiar; i++)
- {
- printf("%d ", *(tablica + i)); // wyświetlam tablice po sortowaniu
- }
- // Zadanie 5:
- char znak = '*';
- int rozmiar_wzorku;
- getchar(); // czyszcze bufor, czy jak to się profesjonalnie nazywa, po prostu żeby mi scanf %c dobrze zadziałał
- printf("\nPodaj znak z ktorego mam utworzyc wzorek: ");
- scanf("%c", &znak);
- printf("Podaj rozmiar do wzorku: ");
- scanf("%d", &rozmiar_wzorku);
- void(*wsk_na_f)(int rozmiar_wzorku, char znak); // wskaźnik na funkcje
- //trojkat(rozmiar_wzorku, znak); // wywołanie "standardowe" nie używam wskaźnika na funkcje
- wsk_na_f = trojkat; // wskaźnik wskazuje teraz na funkcje trojkat()
- wsk_na_f(rozmiar_wzorku, znak); // wywołuje funkcje trojkat poprzez wskaźnik
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment