Języki i metodologia programowania.
Tablice znakowe.
Zadanie 1
Napisać funkcję getline wczytującą wiersz z klawiatury i zwracającą jego długość
Nagłówek funkcji:
int getline(char s[], int
lim)
// s[] – tablica zawierająca wczytywany wiersz
// lim – maksymalna długość wczytywanego ciągu
Ciało funkcji powinno zawierać następujące elementy:
1. Deklaracja dwóch zmiennych typu int c (zapamiętuje wczytywany znak), i (licznik pętli for).
2. Pętla for wczytująca kolejne znaki do tablicy s, dopóki nie jest spełniony jeden z warunków:
3. Instrukcji warunkowej if sprawdzającej czy ostatni wczytany znak był znakiem końca wiersza. Jeżeli tak to zapisująca w tablicy znak końca wierszu oraz zwiększająca licznik znaków w ciągu o jeden.
4. Instrukcji przypisanie zamykającej tablice znakiem o kodzie 0.
5. Instrukcji zwracającej długość wczytanego wiersza.
Napisać program testujący powyższą funkcję.
Zadanie 2
Napisać program, który czyta zbiór wierszy i wypisuje najdłuższy. Rozwiązanie następuje według schematu:
while (istnieje inny wiersz)
if(jest dłuższy od poprzedniego najdłuższego)
{ zachowaj go;
zachowaj jego długość; }
wypisz najdłuższy wiersz
Program oprócz funkcji main (zawierającej implementację powyższego algorytmu) oraz getline (wczytującej kolejne wiersze) powinien zawierać funkcję przepisującą jedną tablicę znakową do drugiej :
void copy(char
to[], char from[])
// to[] – tablica docelowa
// from[] – tablica źródłowa
Zadanie 3
Napisać program wypisujący wczytywane wiersze, który będzie pomijać początkowe znaki odstępu i tabulacji oraz usuwać całkowicie puste wiersze.
Zadanie 4
Napisać funkcję reverse odwracającą kolejność znaków tekstu w tablicy tekstowej:
void reverse(char s[])
// s[] – tablica zawierająca przetwarzany tekst
Zastosować funkcję w programie
odwracającym kolejno wszystkie wiersze wejściowe.
Zadanie 5
Napisać funkcję, która przekształci łańcuch tekstowy na odpowiadającą mu liczbę całkowitą:
int atoi(char s[])
Zadanie 6
Napisać funkcję, która przekształci łańcuch tekstowy zawierający cyfry szesnastkowego systemu liczenia (0, 1, …, 9 oraz A, B, …, F lub a, b, …., f) na odpowiadającą mu liczbę całkowitą. Na początku łańcucha opisującego liczbę szesnastkową może pojawić się sekwencja 0x lub 0X
int htoi(char s[])
Zadanie 7
Napisać funkcję, która przekształci liczbę całkowitą na odpowiadającą jej reprezentację tekstową.
void itoa(int n, char s[])
Opracowano na podstawie: B. W. Kernighan, D. M. Ritchie „Język Ansi C”, Wydawnictwa Naukowo - Techniczne, Warszawa, 2003.