====== Zajęcia 8 (14/01/2014) ====== ===== Wczytywanie łańcucha ===== Zaimplementuj bezpieczną wersję funkcji [[http://pl.wikibooks.org/wiki/C/gets|gets()]], która posiada dodatkowy argument zabezpieczający przed przepełnieniem podanej tablicy znakowej. Funkcja o nazwie ''readline'', czyta linię ze standardowego wejścia (usuwa ją stamtąd) i umieszcza ją w podanej tablicy znakowej. Ostatni znak linii (znak nowego wiersza - '''\n''') zastępuje zerem (znakiem '''\0'''). Funkcja nie wczyta więcej niż ''n'' znaków oraz przerywa wczytywanie po napotkaniu końca pliku ''EOF''. Do wczytywania kolejnych znaków ze standardowego wejścia użyj funkcji ''[[http://pl.wikibooks.org/wiki/C/getchar|getchar()]]''. **Dane:** tablica znakowa ''t'' oraz liczba całkowita ''n''\\ **Wynik:** funkcja zwraca wskaźnik do tablicy ''t'' zawierającej wczytany łańcuch znakowy (linia pobrana ze standardowego wejścia ale nie więcej niż ''n'' znaków) lub wartość ''NULL'' w przypadku natrafienia na koniec pliku przy wczytywaniu pierwszego znaku ze strumienia. \\ Napisz program, który używając napisanej funkcji ''readline'', czyta kolejno wszystkie linie tekstu ze standardowego wejścia (z klawiatury). Każdorazowo po wczytaniu kolejnej linii tekstu jest ona wyświetlana na standardowym wyjściu (na ekranie). ===== Ilość wyrazów w łańcuchu ===== Dodaj do programu z poprzedniego zadania funkcję o nazwie ''wordcount'', która dla podanego łańcucha zwraca ilość wyrazów umieszczonych w łańcuchu. Zakładamy, że wyrazem jest ciąg znaków składający się wyłącznie z liter. Każdy inny znak niż litera stanowi separator wyrazów. **Dane:** łańcuch ''s''\\ **Wynik:** liczba całkowita określająca ilość wyrazów w łańcuchu ''s''. \\ Zmodyfikuj program z poprzedniego zadania w taki sposób, aby każdą wypisywaną linię tekstu poprzedzał liczbą wyrazów występujących w tym łańcuchu. **Przykład** (kolejno podane linie oraz uzyskana odpowiedź programu): Ala ma kota 3 Ala ma kota Ten program jest bardzo $%^@^&*!^&*# 4 Ten program jest bardzo $%^@^&*!^&*# _W_tym_wierszu_brak_____spacji____ 5 _W_tym_wierszu_brak_____spacji____ ===== Odwracanie kolejności znaków w łańcuchu ===== Dodaj do programu z poprzedniego zadania funkcję o nazwie ''odwracanie'', która w podanym łańcuchu znakowym odwraca kolejność liter. **Dane:** łańcuch ''s''\\ **Wynik:** łańcuch ''s'', w którym odwrócono kolejność znaków. Wartością zwracaną jest wskaźnik (adres) ''s'' \\ Zmodyfikuj program z poprzedniego zadania w taki sposób, aby wypisywał na ekranie kolejne linie z odwróconą kolejnością liter. **Przykład** (kolejno podane linie oraz uzyskana odpowiedź programu): Ala ma kota 3 atok am alA Ten program jest bardzo $%^@^&*!^&*# 4 Ten program jest bardzo $%^@^&*!^&*# _W_tym_wierszu_brak_____spacji____ 5 ____ijcaps_____karb_uzsreiw_myt_W_ (kajak) 1 )kajak( ===== Zamiana łańcucha na liczbę ===== * Napisz funkcję o nazwie ''str2int'', która zamieni podany łańcuch znakowy na liczbę całkowitą * Napisz funkcję o nazwie ''str2float'', która zamieni podany łańcuch znakowy na liczbę typu ''float'' * Napisz funkcję o nazwie ''int2str'', która podaną liczbę całkowitą zamieni na łańcuch ===== Kalkulator dużych liczb ===== * Napisz program obliczający poprawnie sumę liczb całkowitych posiadających nawet do 1000 cyfr. * Napisz program obliczający poprawnie iloczyn liczb całkowitych posiadających nawet do 1000 cyfr. * Napisz program obliczający poprawnie iloraz liczb całkowitych posiadających nawet do 1000 cyfr. Uzyskany wynik wyświetlany jest z precyzją do 2 miejsc po przecinku.