8 Wskaźniki
Zadania należy rozwiązać bez interpretacji wskaźników jako tablic.
- Skopiuj lub przepisz kod i sprawdź wyniki na standardowym wyjściu:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%zu\n", sizeof(int));
printf("%zu\n", sizeof(int*));
return 0;
}- W jednym pliku wykonaj czynności:
Napisz funkcję
sumz dwoma argumentami typuint. Funkcja ma zwracać sumę wartości przekazanych przez argumenty. Stwórz przypadek testowy.Napisz funkcję
sumValsz dwoma argumentami, które są wskaźnikami do zmiennych typuint. Funkcja powinna zwracać sumę wartości, na które wskazują te argumenty. Utwórz przypadek testowy.Napisz funkcję
addPtrz trzema argumentami, które są wskaźnikami do zmiennych typuint. Funkcja ma być procedurą (typ zwracanyvoid). Funkcja ma ustawić wartość zmiennej wskazywanej przez trzeci argument funkcji jako sumę wartości wskazywanych przez dwa wcześniejsze argumenty. Utwórz przypadek testowy.
Napisz funkcję
copyIntz argumentami:xtypuintorazw, który jest wskaźnikiem doint. Funkcja ma przepisać wartośćxdo zmiennej wskazywanej przezw. Stwórz przypadek testowy.Napisz funkcję
findMaxz dwoma argumentami: wskaźnikiemnum1na stałą wartość typudoublei stałym wskaźnikiemnum2na zmienną typudouble. Funkcja ma zwracać większą wartość spośród tych, na które wskazująnum1inum2. Utwórz przypadek testowy.Napisz funkcję
initInts, która nie przyjmuje argumentów i rezerwuje blok trzech zmiennych typuint, ustawiając ich wartości kolejno na 5, -12, 33. Funkcja zwraca wskaźnik na środkową zmienną. Utwórz przypadek testowy w funkcjimain, który wyświetla wartości z bloku stworzonego przez funkcję.Napisz funkcję
initFloats, która nie przyjmuje argumentów i rezerwuje blok trzech zmiennych typufloat, ustawiając ich wartości kolejno na 4.5, 2.3, -4.2. Funkcja zwraca wskaźnik na początkową ze zmiennych w bloku. Utwórz przypadek testowy w funkcjimain, który wyświetla wartości z bloku stworzonego przez funkcję.Napisz funkcję
initFlts, która nie przyjmuje argumentów i rezerwuje blok czterech zmiennych typufloat, ustawiając ich wartości kolejno na 0.5, 1.5, 2.5, i 3.5. Funkcja zwraca wskaźnik na ostatnią zmienną w bloku. Utwórz przypadek testowy wmain, aby wyświetlić wartości z bloku stworzonego przez funkcję.Napisz funkcję
sumToPtrz trzema argumentami: dwoma wskaźnikami na stałe typuinti wskaźnikiem na zmienną typuint. Funkcja ma przepisać do zmiennej wskazywanej przez trzeci argument sumę wartości stałych wskazywanych przez pierwszy i drugi argument. Utwórz przypadek testowy.Napisz funkcję
sqrCopyz dwoma argumentami: wskaźnikiem na stałą typuinti wskaźnikiem na zmienną typuint. Funkcja ma przepisać kwadrat wartości stałej do zmiennej wskazywanej przez drugi argument. Utwórz przypadek testowy.Napisz funkcję
subPtrsz dwoma argumentami: wskaźnikiemnum1na stałą wartość typudoublei stałym wskaźnikiemnum2na zmienną typudouble. Funkcja ma zwracać różnicę wartości, na które wskazująnum1inum2. Utwórz przypadek testowy.Napisz funkcję
sumSqrsz dwoma argumentami: wskaźnikiemnum1na stałą wartość typuinti stałym wskaźnikiemnum2na zmienną typuint. Funkcja ma zwracać sumę kwadratów wartości wskazywanych przeznum1inum2. Utwórz przypadek testowy.Napisz funkcję
linFuncValz trzema argumentami: wskaźnikiemana stałą wartość typufloat, stałym wskaźnikiembna zmienną typufloat, i wskaźnikiemxna stałą wartość typufloat. Funkcja ma obliczać i zwracać wartość funkcji liniowejy=ax+bdla argumentux, gdzieaibsą wskazywane przez odpowiednie wskaźniki. Utwórz przypadek testowy.Napisz funkcję
minPtrz trzema argumentami, które są wskaźnikami na zmienne typuint. Funkcja zwraca wskaźnik na zmienną o najmniejszej wartości spośród tych, na które wskazują argumenty. Utwórz przypadek testowy wmain, aby wyświetlić najmniejszą wartość spośród trzech zmiennych.Napisz funkcję
multPtrsz dwoma argumentami: wskaźnikiemnum1na stałą wartość typudoublei stałym wskaźnikiemnum2na zmienną typudouble. Funkcja zwraca iloczyn wartości wskazywanych przez te wskaźniki. Utwórz przypadek testowy.Napisz funkcję
absValz jednym argumentem, którym jest wskaźnik na zmienną typuint. Funkcja oblicza wartość bezwzględną zmiennej wskazywanej przez wskaźnik i aktualizuje tę zmienną. Utwórz przypadek testowy wmain, aby wyświetlić wartość zaktualizowanej zmiennej.Napisz funkcję
swapz dwoma argumentami: wskaźnikiemptr1na zmienną typuinti wskaźnikiemptr2na inną zmienną tego samego typu. Funkcja zamienia miejscami wartości wskazywane przez wskaźniki. Utwórz przypadek testowy.Napisz funkcję
swapSignz dwoma argumentami: wskaźnikiemptr1na zmienną typudoublei wskaźnikiemptr2na inną zmienną tego samego typu. Funkcja zamienia miejscami wartości wskazywane przez wskaźniki, jeśli mają one różne znaki. W przeciwnym razie nie robi nic. Utwórz przypadek testowy.Napisz funkcję
swapIfGreater, która ma dwa argumenty. Pierwszym argumentem jest wskaźnikptr1na zmienną typuint, a drugim argumentem jest wskaźnikptr2na zmienną typuint. Funkcja ma zamienić wartości wskazywane przez te wskaźniki miejscami, ale tylko wtedy, gdy wartość wskazywana przez pierwszy wskaźnik jest większa od wartości wskazywanej przez drugi wskaźnik. Funkcja nie zwraca żadnej wartości. Stwórz przypadek testowy dla funkcji.Napisz funkcję
swapMaxMiddle, która przyjmuje jako argumenty trzy wskaźniki na zmienne typuint. Funkcja powinna zamienić miejscami wartości największej i środkowej (pod względem wartości w porządku niemalejącym) ze zmiennych wskazywanych przez wskaźniki. Stwórz przypadek testowy wmaintak, aby wyświetlić na konsoli wartości zmiennych przed i po zamianie.Napisz funkcję
swapFirstPositive, która przyjmuje jako argumenty trzy wskaźniki na zmienne typuint. Funkcja powinna zamienić miejscami wartości początkowej i pierwszej dodatniej ze zmiennych wskazywanych przez wskaźniki. Jeśli nie ma zmiennej dodatniej, funkcja nie powinna dokonywać żadnych zmian. Stwórz przypadek testowy wmaintak, aby wyświetlić na konsoli wartości zmiennych przed i po zamianie.Napisz funkcję
swapOddEven, która przyjmuje jako argumenty cztery wskaźniki na zmienne typuint. Funkcja powinna zamienić miejscami wartości zmiennych tak, aby wszystkie parzyste wartości były na początku, a nieparzyste na końcu (kolejność wewnątrz grup nie ma znaczenia). Stwórz przypadek testowy wmaintak, aby wyświetlić na konsoli wartości zmiennych przed i po zamianie.Napisz funkcję
modifyThroughPtrz dwoma argumentami: wskaźnikiem na zmienną typuintoraz wartością typuint. Funkcja ma wykonać następujące operacje: jeśli wartość druga jest dodatnia — zwiększyć wartość zmiennej wskazywanej przez pierwszy argument o tę wartość; jeśli druga wartość jest ujemna — zmniejszyć wartość pierwszej zmiennej o wartość bezwzględną drugiego argumentu; a jeśli druga wartość wynosi 0 — nie zmieniać wartości. Funkcja zwraca adres zmodyfikowanej zmiennej. Utwórz przypadek testowy.