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ęć

Pliki nagłówkowe i źródłowe z zajęć JPR 2007/2008 semestr letni

Poniżej znajduje się lista plików nagłówkowych i źródłowych wraz z krótkim opisem zawartych w nich funkcji i zadeklarowanych typów, stałych, struktur, itp.
Dokładniejszy opis działania poszczególnych funkcji można znaleźć w komentarzach poprzedzających każdą funkcję w plikach źródłowych.
Tutaj znajduje się paczka zip zawierająca wszystkie opisane pliki.
Pliki te można też skopiować z katalogu /home/grochu/jpr po zalogowaniu się na serwerze kont studenckich ferm wydając polecenie:

cp -r /home/grochu/jpr/ jakas_nazwa_katalogu

Funkcje matematyczne

funkcje.c
funkcje.h

deklaracje	krótki opis
float potega(float p, int w) float rpotega(float p, int w)	oblicza wartość liczby p podniesionej do potęgi w, wersja iteracyjna i rekurencyjna
long silnia(int i) long rsilnia(int i);	obliczanie silni wersja iteracyjna i rekurencyjna
int czy_pierwsza(int liczba)	sprawdza czy dana liczba jest liczbą pierwszą

Tablice liczb rzeczywistych

tab.c
tab.h

deklaracje	działanie
float *wczytaj(float *t,int n) void wyswietl(float *tab,int n)	wczytuje (wyświetla) n elementów tablicy t[]
float *odwroc(float *t,int n)	odwraca kolejność elementów w tablicy
float srednia(float t[],int n)	oblicza wartość średnią n liczb zawartych w tablicy tab
int maxind(float *tab,int n)	szuka elementu tablicy zawierającego maksymalną wartość
float* sortuj(float *t,int n)	sortuje elementy tablicy przez wybór elementu maksymalnego

Operacje na łańcuchach znakowych (tzw. stringach)

str.c
str.h

deklaracje	działanie
char *czytajlinie(char *linia,int max)	wczytuje linię tekstu do tablicy o rozmiarze max
int dlugosc(char *napis)	wyznacza długość napisu
char *kopia(char *s1,char *s2)	kopiuje zawartość napisu s2 do tablicy s1
char *sklej(char *s1,char *s2)	łączy dwa łańcuchy znakowe
int znajdz(char *tekst,char *wzor)	sprawdza czy ciąg wzor jest podciągiem łańcucha tekst
char *malenaduze(char *napis)	zamienia wszystkie małe litery z tablicy napis na duże

Operacje na macierzach liczb rzeczywistych

macierz.c
macierz.h

deklaracje	opis
float ∗∗utworz_macierz(int w,int k)	tworzy dynamicznie macierz o zadanych wymiarach
void zwolnij_macierz(float ∗∗m,int w)	zwalnia pamięć zajętą przez macierz
void wczytaj_macierz(float ∗∗m,int w,int k) void wyswietl_macierz(float ∗∗m,int w,int k)	wczytywanie elementów macierzy z klawiatury i wyświetlanie macierzy na ekranie
float∗∗ dodaj_macierze(float ∗∗m1,float ∗∗m2,int w,int k)	dodaje dwie macierze
void zapisz_macierz(FILE *p, float ∗∗m, int w, int k)	zapisuje macierz m w pliku p otworzonym do zapisu w trybie tekstowym
float ∗∗odczytaj_macierz(FILE *p, int *w, int *k)	wczytuje macierz z pliku tekstowego

Liczby zespolone

zespolone.c
zespolone.h

struktura	pola
struct zespolone Z	float re - część rzeczywista float im - część urojona
deklaracje	opis
void wczytaj_zesp(Z *z) void wyswietl_zesp(Z z)	wczytywanie i wyświetlanie liczby zespolonej
Z dodaj_zesp(Z z1,Z z2)	dodawanie liczb zespolonych
float modul(Z z)	oblicza modół danej liczby zespolonej
float argument(Z z)	oblicza argument liczby zespolonej

Przykładowe programy

Program	Opis	Program zawiera pliki
potega	oblicza potęgę liczby rzeczywistej	funkcje.c funkcje.h potega.c
silnia	oblicza silnię	funkcje.c funkcje.h silnia.c
pierwsze	wypisuje liczby pierwsze	funkcje.c funkcje.h lpierwsze.c
srednia	oblicza srednią wartość z N podanych liczb	funkcje.c funkcje.h srednia.c
odwroc	wyswietla tablicę liczb w odwrotnej kolejności	funkcje.c funkcje.h odwroc.c
sortuj	sortuje N podanych liczb	funkcje.c funkcje.h sortuj.c
malenaduze	zamienia małe litery na duże	fstr.c fstr.h malenaduze.c
sklej	łączy podane linie tekstu w jeden napis	fstr.c fstr.h sklej.c
grep	szuka wzorca w podanym tekście	fstr.c fstr.h grep.c
zesp	oblicza moduł i argument podanej liczby zespolonej	zespolone.c zespolone.h zesp.c
macierz1	wczytuje i wyświetla macierz o podanych wymiarach	macierz.c macierz.h mac1.c
macierz2	dodaje dwie macierze i zapisuje wynik do pliku	macierz.c macierz.h mac2.c
macierz3	wczytuje macierze z pliku i wyświetla ja na ekranie	macierz.c macierz.h mac3.c str.c str.h

Kompilacja i uruchomienie programu (Linux)

W systemie Linux kompilację programu w języku C przeprowadzamy wydając w konsoli polecenie cc i podając jako argumenty listę plików źródłowych niezbędnych do utworzenia pliku wykonywalnego.
Na przykład aby skompilować program potega wydajemy polecenie:

cc potega.c funckje.c -o potega

Program uruchamiamy podając jego nazwę, np:

./potega

Jeżeli program wykorzystuje funkcje z biblioteki matematycznej math.h wówczas podczas kompilacji należy dodać opcję -lm, t tak, w przypadku programu zesp należy wykonać polecenie:

cc -lm zesp.c zespolone.c -o zesp