Języki i metodologia programowania.

 

Ćwiczenie 4

 

Programowanie w języku ANSI C

 

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.