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

fmat.c
fmat.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 pierwsza(int liczba)	sprawdza czy dana liczba jest liczbą pierwszą
int pierwiastki (float a, float b, float c, float *x1, float *x2)	wyznacza pierwiastki rownania kwadratowego ax2+bx+c=0

Tablice liczb rzeczywistych

tab.c
tab.h

deklaracje	działanie
float *wczytaj(float *t,int n)	wczytujen liczb rzeczywistych do tablicy t[]
void wyswietl(float *t,int n)	wyświetla n pierwszych 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ą z liczb zawartych w tablicy tab
float odleglosc(float a[], float b[],int n)	oblicza odległość euklidesową dwóch wektorów a i b
int maxind(float *t,int n)	szuka elementu tablicy zawierającego maksymalną wartość
float* sort(float *t,int n)	sortuje elementy tablicy za pomocą algorytmu bąbelkowego
float* insertsort(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 liczznaki(char *napis)	wyznacza długość napisu
char *kopia(char *s1,char *s2)	kopiuje zawartość napisu s2 do tablicy s1
char* znajdz(char *tekst,char *wzor)	sprawdza czy ciąg wzor jest podciągiem łańcucha tekst

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
float ∗∗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
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

Baza danych

baza.c
baza.h

struktury	pola
struct daty DATA	int dzien int miesiac int rok
struct osoba DANE	char nazwisko[100] char imie[100] DATA data_urodzenia
deklaracje funkcji	opis
void wczytaj_osobe(DANE * o)	wczytuje zawartość pojedyńczej stryktury
void wyswietl_osobe(DANE * o)	wyżwietla zawartość stryktury

Przykładowe programy

Program	Opis	Program zawiera pliki
potega	oblicza potęgę liczby rzeczywistej	fmat.c fmat.h potega.c
silnia	oblicza silnię	fmat.c fmat.h silnia.c
pierwsze	wypisuje liczby pierwsze	fmat.c fmat.h pierwsze.c
pierwiastki	oblicza miejsca zerowe równania kwadratowego	fmat.c fmat.h pierwiastki.c
srednia	oblicza srednią wartość z N podanych liczb	fmat.c fmat.h srednia.c
odwroc	wyswietla tablicę liczb w odwrotnej kolejności	tab.c tab.h odwroc.c
sortuj	sortuje N podanych liczb	tab.c tab.h sortuj.c
odleglosc	wyznacza odległość euklidesową dwóch wektorów	tab.c tab.h odleglosc.c
linie	oblicza ilość znaków w każdej linii tekstu	str.c str.h linie.c
grep	szuka wzorca w podanym tekście	str.c str.h grep.c
macierz1	wczytuje i wyświetla macierz o podanych wymiarach	macierz.c macierz.h mac1.c
macierz2	zapisuje macierze do pliku tekstowego	macierz.c macierz.h mac2.c str.c str.h
macierz3	tworzy macierz wczytaną z pliku tekstowego	macierz.c macierz.h mac3.c str.c str.h
baza	demonstracja prostej bazy danych	baza.c baza.h str.c str.h bazadanych.c

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, np:

cc -lm odleglosc.c tab.c -o odleglosc