Spis treści

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