Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Operatii cu siruri de caractere tip C

c


Operatii cu siruri de caractere tip C

Un sir de caractere tip C este un tablou unidimensional ale carui componente sunt caractere ASCII, la care ultimul caracter este '0'. Caracterul '0' este folosit in algoritmi pentru detectarea sfarsitului de sir. Bibliotecile standard C / C++ contin multe functii utile pentru lucrul cu caractere. Functiile urmatoare testeaza tipul unui caracter, cifra, litera, etc. Prototipurile lor se afla in biblioteca <ctype.h>.



Functie

Descriere

int isalnum (int c);

Test daca un caracter este alfanumeric

int isalpha (int c);

Test daca un caracter este alfabetic

int isdigit (int c);

Test daca un caracter este o cifra zecimala

int isxdigit(int c);

Test daca un caracter este o cifra hexazecimala 737f55h

int islower (int c);

Test daca un caracter este litera mica

int isupper (int c);

Test daca un caracter este litera mare

int isspace (int c);

Test daca un caracter este spatiu (' ', 'n', 't')

Functiile au un rezultat diferit de zero daca argumentul este conform descrierii functiei. Urmatoarele functii convertesc literele mari in litere mici si invers.

Functie

Descriere

int tolower(int c);

Converteste in litere mici

int toupper(int c);

Converteste in litere mari

Alte functii ce prelucreaza siruri de caractere sunt :

int atoi(char s[]);

double atof(char s[]);

long atol(char s[]);

care convertesc un sir de caractere intr-un numar intreg si respectiv real. Prototipurile acestor functii se afla in biblioteca <stdlib.h>.

O functie utila la prelucrarea sirurilor este strlen() ce da lungimea unui sir de caractere, fara caracterul '0' terminal. Prototipul acestei functii este

int strlen(char[]);

si este definit in biblioteca <string.h>.

Functia

int strcmp(const char s1[], const char s2[]);

compara doua siruri, s1 si s2, caracter cu caracter, pana la primul caracter diferit. Rezultatul este un numar < 0, = 0, sau > 0, dupa cum sunt caracterele diferite comparate. Exemple de utilizare a functiei strcmp sunt prezentate in tabelul de mai jos

strcmp("abc", "bcd")

< 0

'a' < 'b'

strcmp("xyz", "xyz")

Sirurile sunt egale

strcmp("abcd", "abc")

> 0

sirul "abcd" este mai lung

Prototipul acestei functii se gaseste in biblioteca <string.h>.

Probleme rezolvate

Problema Se da sirul de caractere "aBxE12+? tnY". Sa se calculeze numarul de cifre, litere, spatii si caractere alfanumerice. Datele se vor afisa in felul urmator

Sirul studiat :

Lungimea sirului :

Litere :

Cifre :

Spatii :

Caractere alfanumerice :

Indicatie. Functiile standard ce se pot utiliza sunt

int isalpha(int) ;

int isdigit(int) ;

int isalnum(int) ;

int isspace(int) ;

din biblioteca <ctype.h> si functia

int strlen(char *) ;

din biblioteca <string.h>

Programul ce rezolva problema este urmatorul.

# include <iostream.h>

# include <string.h>

# include <ctype.h>

int main()

cout << 'Sirul studiat : ' << x << endl;

cout << 'Lungimea sirului : ' << strlen(x) << endl;

cout << 'Cifre : ' << nc << endl;

cout << 'Litere : ' << nl << endl;

cout << 'Spatii : ' << ns << endl;

return 0;

Rezultatele rularii programului sunt cele de mai jos.

Nota. Se vor adauga instructiunile necesare pentru numararea caracterelor alfanumerice (litere si cifre).

Problema Fie sirul "abca?aXZ". Sa se numere cate caractere 'a' sunt in sir.

Indicatie. Se va analiza intr-un ciclu fiecare caracter din sir. Programul de rezolvare a problemei este cel de mai jos.

# include <stdio.h>

# include <string.h>

int main()

Rezultatul rularii programului este cel de mai jos.

Problema Se da sirul "abcd=ABCD". Sa se defineasca o functie care sa converteasca literele mici in litere mari.

Indicatie.Se va utiliza functia standard

int toupper(char)

din biblioteca <ctype.h> sau <stdlib.h>

Programul de rezolvare a problemei este urmatorul.

# include <stdio.h>

# include <ctype.h>

# include <string.h>

void strcnv(char x[])

//testarea functiei strcnv

int main()

Rezultatul rularii programului este cel de mai jos.

Problema Se dau sirurile x = "+123" si y = "12.3e-1". Sa se converteasca valorile acestor siruri in numerele corespunzatoare care se vor atribui ca valori unor variabile de tip int si double, respectiv a si b. Sa se calculeze apoi valoarea expresiilor a + b, , sin(a + 2b), b + cos(a).

Se vor utiliza functiile standard

double atof(char *)

int atoi(char *)

long atol(char*)

din biblioteca <stdlib.h> . Programul este prezentat in continuare.

# include <iostream.h>

# include <stdlib.h>

# include <math.h>

int main()

Rezultatele rularii programului sunt cele de mai jos

Nota. Se vor adauga instructiunile necesare pentru calculul expresiilor si b + cos(a).

Problema Fie sirurile de caractere "-12", si "1.25e1". Sa se converteasca in numerele intregi si reale corespunzatoare cu functiile

int atoi(char * s);

double atof(char * s);

Prototipurile acestor functii se afla in biblioteca <stdlib.h>. Programul de rezolvare a problemei este urmatorul.

# include <stdio.h>

# include <stdlib.h>

int main()

Rezultatul rularii programului este cel de mai jos

Probleme propuse

Problema Se da sirul "xyz2j7M=*&^". Sa se copieze primele doua caractere din sirul "abc" in sirul dat.

Problema Sa se compare sirurile

"abcxd" si "abdf89k".

"xyz" si adk"

"mnp" si "mnp"

Se va explica de fiecare data rezultatul.

Indicatie. Se va utiliza functia standard

int strcmp(char * s1, char * s2)

din biblioteca <string.h>

Problema Sa se scrie o functie cu un parametru n de tip intreg care afiseaza n linii cu caracterul '*', un caracter pe prima linie, doua caractere pe linia a doua, n caractere pe linia n. De exemplu, pentru n = 3 rezultatul functiei va fi

*

**

***

Prototipul functiei va fi

void print(int n);

Problema Sa se construiasca o functie care sa transforme literele mari dintr-un sir de caractere in litere mici. Prototipul functiei va fi

void strcnv2(char[] x);

Problema Sa se defineasca o functie cu un parametru n de tip intreg care afisaza n linii de cate cinci caractere, caracterele abcde pe prima linie, caracterele bcdef pe linia a doua, etc. De exemplu, pentru n = 4 rezultatul functiei va fi

abcde

bcdef

cdefg

defgh

Prototipul functiei va fi

void prtcar(int n) ;

Problema Sa se faca un program care sa citeasca un sir de la tastatura si sa afiseze sirul citit si apoi sirul in ordine inversa.

Problema 7. Sa se citeasca un sir de caractere de la tastatura si sa se afiseze pe ecran fiecare caracter al sirului impreuna cu valoarea sa in codul ASCII.

Problema 8. Sa se citesca de la tastatura un sir ce contine litere si cifre. Sa se afisaze pe ecran doar litere continute in sir.

Problema 9. Sa se scrie o functie care sa calculeze lungimea unui sir de caractere. Prototipul functiei va fi

int Strlen(char x[]) ;

Problema 10. Sa se codifice un sir de caractere adaugand valoarea 1 la codul ASCII al fiecarui caracter. Sa se decodifice apoi sirul de caractere. Se vor afisa pe ecran sirul initial, sirul codificat si cel decodificat.



Document Info


Accesari: 5774
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )