====== Zajęcia 1 - Powtórka z C ====== ===== Najważniejsze sprawy ===== * typy * wskaźniki, wskaźniki do funkcji * dynamiczny przydział pamięci * struktury * pliki nagłówkowe i źródłowe * różnice miedzy C a C++ ===== Przykładowe zadania ===== === Wektor === Plik nagłówkowy ''wektor.h'' struct wektor { int rozmiar; double *wartosc; }; struct wektor *alokuj(struct wektor * w, int n); void zwolnij(struct wektor *w) struct wektor *kopiuj(struct wektor *w1, struct wektor *w2); double dlugosc(struct wektor *w); double iloczyn(struct wektor *w1, struct wektor *w2); struct wektor *unormuj(struct wektor *w1); Zdefiniuj odpowiednie funkcje w pliku źródłowym ''wektor.c'' i napisz program demonstrujący ich działanie. === Słownik === Napisz program generujący słownik w oparciu o drzewo binarne. Dla danego pliku (lub po wczytaniu tekstu ze strumienia wejściowego) program wyświetla posortowaną alfabetycznie listę występujących w tekście wyrazów oraz liczbę wytapiań danego wyrazu w tekście. Plik nagłówkowy slownik.h: struct drzewo { char *slowo; int ilosc; struct drzewo *left, *right; }; struct drzewo* dodaj(struct drzewo *d,char *slowo); void wyswietl(struct drzewo *d); Funkcja **dodaj(struct drzewo *d,char *slowo)** dodaje nowe słowo do słownika (drzewa). Wartością zwracaną jest wskażnik do bierzącego węzła w drzewie.\\ Funkcja **wyswietl(struct drzewo *d);** wypisuje zawartość słownika, czyli posortowaną listę słów wraz z liczbą wystąpień danego słowa w pliku. \\ Dopisz definicje funkcji w pliku zródłowym **slownik.c**. Jakiej ważnej funkcji brakuje w programie? Zaimplementuj ją. Przydatne funkcje: * **string.h** : **[[http://pl.wikibooks.org/wiki/C/strcpy|strcpy]]**, **[[http://pl.wikibooks.org/wiki/C/strcmp|strcmp]]**, **[[http://pl.wikibooks.org/wiki/C/strlen|strlen]]** * **ctype.h** : **[[http://pl.wikibooks.org/wiki/C/isalpha|isalpha]]**, **[[http://pl.wikibooks.org/wiki/C/tolower|tolower]]** ** Różnice miedzy C i C++ ** * Zamień wywołania funkcji ''malloc()'' i ''free()'' na wywolania operatora ''new'' i ''delete'' * Spróbuj użyć strumieni ''[[http://en.wikipedia.org/wiki/Iostream|]]'' do wczytywania i wyświetlania słów z terminala lub pliku * Spróbuj wykożystać klasę ''[[http://pl.wikibooks.org/wiki/C%2B%2B/String|string]]'' zamiast tabic ''char*'' do zapamiętywania słów słownika * Utwórz klasę "slownik", korzeń drzewa uczyń polem prywatnym zaś funkcje ''dodaj()'' i ''wyswietl()'' przepisz jako metody publiczne tej klasy