Spis treści

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