Start | Zajęcia 1 | Zajęcia 2 | Zajęcia 3 | Zajęcia 4 | Zajęcia 5 | Zajęcia 6 | Zajęcia 7 | Zajęcia 8 | Zajęcia 9 | Zajęcia 10 | Pliki z zajęć |
---|
Program demonstrujący użycie wskaźników
#include <stdio.h> int main() { int x = 100; char napis[] = "jezyki programowania\n"; int tab[5] = {100, 101, 102, 103, 104}; int *wsk1, *wsk2; // tworzymy wskaznik (do) typu int char* wsk3; wsk1 = &x; // przypisanie wartosci (adresu) printf("wsk1=&x | x=%d *wsk1=%d\n",x,*wsk1); printf("adres x | &x=%x, wsk1=%x\n",&x,wsk1); *wsk1 = 5; printf("*wsk1=5 | x=%d *wsk1=%d\n",x,*wsk1); printf("tymczasem *wsk2=%d\n",*wsk2); wsk2 = wsk1; printf("wsk2=wsk1 | *wsk2=%d\n",*wsk2); x++; printf("x++ | *wsk1=%d, *wsk2=%d, x=%d\n",*wsk1,*wsk2,x); (*wsk1)++; printf("(*wsk1)++ | *wsk1=%d, *wsk2=%d, x=%d\n",*wsk1,*wsk2,x); wsk1 = tab; // to samo co wsk1 = &tab[0] printf("teraz wsk1 pokazuje na elementy tablicy\nwsk1=tab | *wsk1=%d, *wsk2=%d, x=%d\n",*wsk1,*wsk2,x); wsk1 = wsk1 + 2; printf("wsk1=wsk1+2 | *wsk1=%d,",*wsk1); printf(" tab[2]=%d, *(tab+2)=%d\n",tab[2],*(tab+2)); wsk3 = napis + 4; printf(wsk3); return 0; }
Ćwiczenia
#include <stdio.h> #include "tab.h" #define MAX 100 int main() { int n,i; float tablica[MAX]; float t; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); wczytaj(tablica,n); i = 0; while(i<n/2) { t = tablica[i]; tablica[i] = tablica[n-i-1]; tablica[n-i-1] = t; i++; } wyswietl(tablica,n); return 0; }
Ćwiczenie
zamien
, która zamienia wartości dwóch podanych argumentów typu rzeczywistegotab.h
i tab.c
funkcję odwroc
, która odwraca kolejność elementów w tablicy (tak jak w przykładzie powyżej). Wykorzystaj w tym celu funkcję zamien
. Niech funkcja zwracać wskaźnik do odwróconej tablicy.#include <stdio.h> #include "tab.h" #define MAX 100 void zwieksz(float *x); float *zwieksztab(float *tab,int n); int main() { int n,i; float t,tablica[MAX]; printf("Liczbe: "); scanf("%f",&t); zwieksz(&t); zwieksz(&t); zwieksz(&t); printf("Teraz liczba wynosi %f\n",t); printf("Podaj rozmiar tablicy: "); scanf("%d",&n); wczytaj(tablica,n); zwieksztab(zwieksztab(zwieksztab(tablica,n),n),n); printf("Teraz tablica wyglada tak\n"); wyswietl(tablica,n); } void zwieksz(float *liczba) { *liczba = *liczba + 1.0; } float *zwieksztab(float *tab,int n) { float *wt = tab+n; while(wt>tab) zwieksz(--wt); return tab; }
pierwiastki
(patrz zajęcia 3) tak aby wartością zwracaną była ilość pierwiastków równania kwadratowego oraz wartości tych pierwiastków.