algoritmi pentru prelucrarea şirurilor de caractere

19
Algoritmi pentru prelucrarea şirurilor de caractere 1. Prelucrarea a două şiruri de caractere 2. Prelucrarea subşirurilor de caractere 3. Conversii între tipul şir de caractere şi tipuri numerice 4. Prelucrarea unui şir de caractere

Upload: adia

Post on 19-Mar-2016

69 views

Category:

Documents


3 download

DESCRIPTION

Algoritmi pentru prelucrarea şirurilor de caractere. Prelucrarea a două şiruri de caractere Prelucrarea subşirurilor de caractere Conversii între tipul şir de caractere şi tipuri numerice Prelucrarea unui şir de caractere. Prelucrarea a două şiruri de caractere. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algoritmi pentru prelucrarea  şirurilor de caractere

Algoritmi pentru prelucrarea şirurilor de

caractere1. Prelucrarea a două şiruri de caractere2. Prelucrarea subşirurilor de caractere3. Conversii între tipul şir de caractere şi tipuri n

umerice4. Prelucrarea unui şir de caractere

Page 2: Algoritmi pentru prelucrarea  şirurilor de caractere

Prelucrarea a două şiruri de caractere

Copierea unui şir de caractere intr-un alt şir de caractere

Concatenarea a două şiruri de caractere

Compararea a două şiruri de caractere

Page 3: Algoritmi pentru prelucrarea  şirurilor de caractere

Prelucrarea unui şir de caractere

Iniţializarea unui şir de caractere cu acelaşi caracter

Inversarea conţinutului unui şir de caractere

Transformări între literele mari şi literele mici din şir

Căutarea unui caracter intr-un şir Aplicatii

Page 4: Algoritmi pentru prelucrarea  şirurilor de caractere

Prelucrarea subşirurilor de caractere

Extragerea unui subşir dintr-un şir Căutarea unui subşir într-un şir Ştergerea unui subşir dintr-un şir Inserarea unui subşir într-un şir Înlocuirea unui subşir cu un alt şir

Page 5: Algoritmi pentru prelucrarea  şirurilor de caractere

Conversii între tipul şir de caractere şi tipuri numerice Conversia unui şir de caractere într

-un număr Conversia unui număr în şir de car

actere

Page 6: Algoritmi pentru prelucrarea  şirurilor de caractere

Copierea unui şir de caractere într-un alt şir de caractere

strcpy() strcpy(s2,s1) se copie şirul sursă s1 peste şirul s2, inlocuindu-l

strncpy()

strncpy(s2,s1,n)

sunt copiate din şirul sursă s1 maxim n caractere ,începând cu primul caracter

Exemplu:char a[100]=“un şir”, b[100]=“alt şir”;strcpy(a,b);cout<<a; şirul a va fi =“alt şir” la fel ca şirul b=“alt şir” Obs: această copiere simulează atribuirea a=b

Page 7: Algoritmi pentru prelucrarea  şirurilor de caractere

Concatenarea a două şiruri de caractere

strcat() strcat(s1,s2) se adaugă la sfârşitul şirului s1 conţinutul şirului s2 inclusiv caracterul NULL

strncat()

strncat(s1,s2,n)

se adaugă din şirul sursă s2 în şirul destinaţie s1 maxim n caractere ,începând cu primul caracterExemplu:

char a[100]=“un şir”, b[100]=“ alt şir”;strcat(a,b);cout<<a; şirul a va fi =“un şir alt şir”

Page 8: Algoritmi pentru prelucrarea  şirurilor de caractere

Compararea a două şiruri de caractere

strcmp() strcmp(s1,s2) se compară s1 cu s2;dacă s1=s2, rezultatul este 0;dacă s1>s2 rezultatul este pozitiv;dacă s1<s2 rezultatul este negativ;se face diferenţă între literele mari şi mici

stricmp() stricmp(s1,s2) compară cele 2 şiruri de caractere fără să facă diferenţa între literele mari şi mici

strncmp() strncmp(s1,s2,n)

compară primele n caractere din cele 2 şiruri, furnizând rezultatul la fel ca şi funcţia strcmp()

strncmpi()

strncmpi(s1,s2,n)

compară cele 2 şiruri de caractere la fel ca şi funcţia strncmp(),dar fără să facă diferenţa între literele mari şi literele mici

Exemplu:char a[100]=“tata”, b[100]=“mama”;strcmp(a,b);se obţine o valoare pozitivă deoarece “tata”>”mama”

Page 9: Algoritmi pentru prelucrarea  şirurilor de caractere

Iniţializarea unui şir de caractere cu acelaşi

caracterstrset() strset(şir,ch) şirul este parcurs începând cu primul

caracter, până la sfârşitul lui, fiecare caracter fiind înlocuit cu caracterul ch,mai puţin caracterul NULL

strnset()

strnset(şir,ch,n)

sunt parcurse primele n caractere, începând cu primul caracter, dar nu mai mult decât lungimea şirului, fiecare caracter fiind înlocuit cu caracterul ch. Dacă n este mai mare sau egal cu lungimea şirului, funcţia va avea acelaşi efect ca şi strset().Exemplu:

char a[100]=“acesta este un sir”; caracterul de umplere este: ch=‘#’strset(a,ch); sirul a devine:##################

Page 10: Algoritmi pentru prelucrarea  şirurilor de caractere

Inversarea conţinutului unui şir de caractere

strrev()

strrev(şir) se inversează şirul şir

char a[100]=“acesta este un sir”;strrev(a);sirul a devine: “ris nu etse atseca”

Page 11: Algoritmi pentru prelucrarea  şirurilor de caractere

Transformări între literele mari şi literele mici din şir

strlwr() strlwr(şir) se transformă în şir literele mari în litere mici. Restul caracterelor nu sunt modificate.

strupr() strupr(şir) se transformă în şir literele mici în litere mari. Restul caracterelor nu sunt modificate.

char a[100]=“aceSta este Un Sir”;strlwr(a);sirul a devine: “acesta este un sir”strupr(b);sirul a devine: “ACESTA ESTE ALT SIR”

Page 12: Algoritmi pentru prelucrarea  şirurilor de caractere

Căutarea unui caracter într-un şir

strchr() strchr(şir,ch)

ne furnizeaza adresa de început a primei aparitii a caracterului ch în şirul de caractere sir( cea din extremitatea stanga),iar în cazul în care ch nu se găseşte în şir întoarce valoarea NULL

strrchr()

strrchr(şir,ch)

ne furnizeaza adresa de început a ultimei aparitii a caracterului ch in sirul de caractere sir( cea din extremitatea dreapta)

char a[25]=“este un sir”;ch=‘s’; strchr(a,ch); prima aparitie a caracterului s este în pozitia 2strrchr(a,ch);ultima aparitie a caracterului s este în pozitia 9

Page 13: Algoritmi pentru prelucrarea  şirurilor de caractere

Aplicatii Ce se afişează pe ecran în urma executării secvenţei de

program alăturare ştiind că variabila i este de tip char?for(i=‘a’;i<=‘z’;i++)if( strchr(“info”,i)) cout<<i;

Să se scrie un program care va schimba un text citit de la tastatură în litere mari.

Sa se scrie un program care verifică dacă un cuvânt, citit de la tastatură, este identic cu inversul lui.

Page 14: Algoritmi pentru prelucrarea  şirurilor de caractere

Căutarea unui subşir într-un şir

strstr() strstr(şir, sb) se furnizează prima poziţie din care începe în şirul şir un subşir sb

Page 15: Algoritmi pentru prelucrarea  şirurilor de caractere

Conversia unui şir de caractere într-un număr

La utilizarea acestor funcţii se introduce directiva #include<stdlib.h>

Funcţia atof() - converteşte un şir către tipul double double atof( sir);

Funcţia atoi() - converteşte un şir către tipul int int atoi( sir);

Funcţia atol() - converteşte un şir către tipul long long atol( sir);Dacă conversia eşuează (se întâlneşte un caracter Dacă conversia eşuează (se întâlneşte un caracter nenumeric) valoarea întoarsă este 0. Dacă primele nenumeric) valoarea întoarsă este 0. Dacă primele caractere ale şirului sunt albe, acestea sunt ignoratecaractere ale şirului sunt albe, acestea sunt ignorate

Page 16: Algoritmi pentru prelucrarea  şirurilor de caractere

Conversia unui număr în şir de caractere

La utilizarea acestor funcţii se introduce directiva #include<stdlib.h>

Funcţia ecvt() - converteşte o valoare de tip double către un şir

ecvt( double nr, int poz,int zec, int semn); Funcţia itoa() - converteşte o valoare de tip

întreg către un şiritoa(int nr, sir, int baza);

Funcţia ltoa() - converteşte o valoare de tip long int către un şir

ltoa(long nr,sir ,int baza);

Page 17: Algoritmi pentru prelucrarea  şirurilor de caractere

Funcţia itoa()

Funcţia itoa() are rolul de a converti o valoare de tip int într-un şir, a cărui adresă este memorată în variabila şir. Valoarea baza reţine baza de numeraţie către care să se facă conversia. În cazul bazei 10, şirul obţinut reţine şi, eventual, semnul “-”. Funcţia întoarce adresa şirului obţinut.

Page 18: Algoritmi pentru prelucrarea  şirurilor de caractere

Aplicaţii1. #include <iostream.h> 3.#include<iostream.h>#include <stdlib.h> char i;void main() void main(){  float f; { for(i=‘a’;i<=‘z’;i++)    char sir[30] ="12345.674"; cout<<i<<“ “<<(int)i;    f = atof(sir); cout<<endl;    cout<<"sirul =“ <<sir<<endl; for(i=‘A’;i<=‘Z’;i++) cout<<“numarul = "<< f; cout<<i<<“ “<<(int)i;   } cout<<endl;

for(i=‘1’;i<=‘9’;i++)2.#include <stdlib.h> cout<<i<<“ “<<(int)i<<endl;#include <iostream.h> }void main(){    int n;    char sir = "12345.674";    n = atoi(sir);    cout<<"sirul = "<<sir<<endl;

cout<<“numarul = "<< n;   }

Page 19: Algoritmi pentru prelucrarea  şirurilor de caractere

AplicaţiiCe afişează secvenţa următoare?

int n,n1;char s1[10]=“012”,s2[10],s3[10];n=atoi(s1);itoa(n,s2,10);strcat(s1,s2);cout<<s1<<“ “;n1=s1[1]+s1[2];itoa(n1,s3,10);strcat(s1,s3);cout<<s1;