OPERACJE NA TEKSTACH

Teksty przechowuje się w tablicach typu char. W tablicy możemy zapamiętać dowolnie długi tekst w postaci łańcucha znaków.

1. char nazwisko[ ] = " ABCDEFGH " ; // powoduje utworzenie tablicy o nazwie nazwisko zawierającej 9 a nie 8 elementów, gdyż ostatnim znakiem tekstu jest znak kończący '\0'

Inicjując tablicę łańcuchem znaków, używamy znaku cudzysłowu "

Przy zapisywaniu pojedynczego znaku wykorzystujemy znak apostrofu ' .

2. char nazwisko [8] = " ABCDEFGH "; // deklaracja błędna, ponieważ brakuje miejsca na znak kończący ' \ 0'.

3. char *nazwisko = " ABCDEFGH " ; // tekst o określonej długości - zadeklarowano wskaźnik nazwisko, wskazujący na początek podanego tekstu (stałej tekstowej).

cout << nazwisko; // wydruk tekstu

4 while ( *nazwisko ) // w przypadku, gdy istnieje potrzeba wydrukowania fragmentu

cout << *nazwisko + + ; // tekstu lub gdy trzeba wykonać pewne operacje na tekście
w trakcie wydruku.

Instrukcja 4-ta jest równoważna fragmentowi :

4a while ( *nazwisko ) // wyprowadzenie znaku wskazywanego przez wskaźnik nazwisko

{

cout << * nazwisko ;

nazwisko + + ; // zwiększenie wskaźnika

}

Gdy chcemy następnie wykonać jakąkolwiek operację na tekście, to musimy dodatkowo zadeklarować wskaźnik pomocniczy, któremu należy przypisać wskazanie na początek tekstu np.

5. char *nazwisko = " ABCDEFGH " ;

char *nz ; // deklaracja wskaźnika pomocniczego

// nz - będzie wskazywał na początek tekstu

5a nz = nazwisko ;

while ( *nz )

cout << *nz + + ;

Wyznaczenie długości tekstu można zrealizować:

6) dl = 0 ;

nz = nazwisko ;

while ( *nz + + )

dl + + ;

cout << " Długość tekstu " << dl ;

W przypadku gdy zachodzi konieczność modyfikacji tekstu, stosujemy deklarację:

char nazwisko[ ] = " ABCDEFGH " ; // Przy tej deklaracji możliwe jest wczytanie pewnego

7) tekstu z zewnątrz, nie większego niż 8 znaków przy pomocy instrukcji

for ( int i = 0 ; i <n ; i + + )

cin >> nazwisko[ i ] ;

Aby wczytać zupełnie nowy tekst, należy napisać:

8) cin >> nazwisko ;

Ćwiczenie 1

Napisać program składający się z podprogramów :

np. okno programu może mieć postać:

Podaj długość tekstu ( <=8 )

... (np. 6)

Podaj tekst

... (np. Kowal)

Kowal - wyświetli napis Kowal

KowalFGH - uzupełni napis Kowal do ośmiu liter pierwszym sposobem

KowalFGH - uzupełni napis Kowal do ośmiu liter drugim sposobem

Długość tekstu 8 - wyświetli napis

Podaj tekst

.... (np. Jan)

Wczytany tekst: Jan

Rozwiązanie

.......................

.......................

Jeżeli chcemy wykonywać pewne operacje na dowolnych tekstach, to musimy zdeklarować tablicę znaków, w której tekst się zmieści:

9) char litery [100] ;

Do wpisywania tekstu do tablicy ( np. kolejnych liter alfabetu ) możemy wykorzystać instrukcję:

char lit ; int i ;

10) for ( lit ='a' , i = 0 ; lit <= 'z' ; lit + +, i + + )

litery[ i ] = lit ;

Trzeba także dodać instrukcję znaku kończącego tekst

litery [ i ] = ' \ 0 ' ;

Wydruk zdefiniowanego tekstu lub jego fragmentu możemy realizować :

cout << litery[ i ] ; // zostanie wyprowadzonych pierwszych 10 liter )

cout << endl ;

cout << *( litery + i ) ; // jej pierwszego elementu

cout << endl ;

Można też do wydruku części końcowych liter tekstu wykorzystać konstrukcję analogiczną jak
w ćwiczeniu 1

wsk = litery ;

wsk + = 10 ; // zwiększenie wskaźnika o 10

while ( *wsk ) // wyprowadzenie i wydruk liter tekstu poczynając od 11 litery

cout << *wsk + + ;

Koniecznie trzeba utworzyć wskaźnik wsk z tego względu, że nazwa tablicy podaje zawsze adres jej pierwszego elementu).

Ćwiczenie 2

Napisać program składający się z podprogramów :

np. okno programu może mieć postać:

Program drukuje tekst w postaci alfabetu od a do z

abcdefg......z

Program drukuje pierwsze 10 liter alfabetu

abcdefghij - pierwszym sposobem

abcdefghij - drugim sposobem

Program drukuje koncowy fragment tekstu od 11 litery

klmnop ..... z

Składowe programu:

- Wygenerowanie tekstu

- Wydruk początkowego fragmentu tekstu (pierwszy sposób)

- Wydruk początkowego fragmentu tekstu (drugi sposób)

- Wydruk końcowy fragmentu tekstu od 11 litery

Operacje na tekstach

4