Memento String

8

Click here to load reader

Transcript of Memento String

Page 1: Memento String

1. Declararea unui şir de caractere# include<iostream.h># include<string.h>void main(){char s[10]; //dim sir trebuie sa fie cel putin cu 1 mai mare decat

//lungimea efectiva a sirului, ultimul caracter fiind // caracterul NULL (0 binar). In şirul se pot memora maxim 9 caractere

}

2. Iniţializarea unui şir de caractere# include<iostream.h># include<string.h>void main(){//Initializare la declararechar s[10]="abc", s1[5]={'a','b','c'};

//Initializare in programstrcpy(s,"abc");

3. Declararea unui sir vids[0]=0; sau s[0]='\0'; sau s[0]=NULL; sau strcpy(s,NULL);

4.CITIREA UNUI ŞIR DE CARACTERE4.1)# include<iostream.h># include<string.h># include<conio.h>void main(){clrscr();char s[5]; //dim sir trebuie sa fie cel putin cu 1 mai mare decat

//lungimea efectiva a sirului, ultimul caracter fiind // caracterul NULL (0 binar)

cin>>s; //citeste pana la spatiucout<<s;}

4.2)# include<iostream.h># include<string.h># include<ctype.h># include<conio.h>void main(){clrscr();char s[50];cin.get(s,50); //citeste pana la ENTER, fara a extrage ENTER din buffer

// sau max 49 caracterecout<<s;}

4.3)# include<iostream.h># include<string.h># include<ctype.h>

Page 2: Memento String

# include<conio.h>void main(){clrscr();char ss[50],sd[50];cin.get(ss,50); //citeste pana la ENTER, fara a extrage ENTER din buffercin.get(sd,50); // al doilea sir nu a mai fost cititcout<<ss<<endl<<sd;}

4.4)# include<iostream.h># include<string.h># include<ctype.h># include<conio.h>void main(){clrscr();char ss[50],sd[50],*p;cin.get(ss,50); //citeste pana ENTER, fara a extrage ENTER din buffercin.get(); //extrage ENTER-ul tastat dupa primul sir si permite tastarea celui //de-al doilea sircin.get(sd,50);cout<<ss<<endl<<sd;}

4.5)# include<iostream.h># include<string.h># include<ctype.h># include<conio.h>void main(){clrscr();char ss[50],sd[50];cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffercin.getline(sd,50);cout<<ss<<endl<<sd;}

5. Copierea unui şir (sursă) în alt şir (destinaţie)strcpy(sir_destinatie, sir_sursa)strncpy(sir_destinatie, sir_sursa,n) – copiaza primele n caractere din sirul sursa in sirul destinatie

6. Concatenarea a două şiruri

strcat(sir_destinatie, sir_sursa) – se adaugă şirul_sursă la şfârşitul şirului destinaţiestrncat(sir_destinatie, sir_sursa,n) –se adaugă doar primele n caractere din sirul sursa in sirul destinatie

7. Compararea a două şiruristrcmp(şir1, şir2) returnează o valoare:

< 0 dacă şir1<şir2>0 dacă şir1>şir2=0 dacă şir1=şir2

stricmp(şir1, şir2) – se ignoră diferenţa dintre literele mici şi maristrncmp(şir1, şir2,n) – se compară primele n caractere dintre cele 2 şiruristrnicmp(şir1, şir2,n) – se ignoră diferenţa dintre literele mici şi mari dibtre primele n caractere

Page 3: Memento String

8. Conversiistrupr(sir); transformă literele mici din şir în litere mari, celelalte caractere rămânând neschimbatestrlwr(sir); transformă literele mari din şir în litere mici, celelalte caractere rămânând neschimbate

char s[4]="abc";…strupr(s);cout<<s; => ABC

FUNCTII DE CONVERSIE DIN SIR DE CARACTERE INTR-O VALOARE NUMERICA

double atof(sir)int atoi(sir)long atol(sir)

Exemplu:double n;char sir[10]="123";….

n=atof(sir);

PROCEDURI DE CONVERSIE A UNEI VALORI NUMERICE INTR-UN SIR DE CARACTERE

itoa(val_tip_int, sir, baza)ltoa(val_tip_long, sir, baza)ecvt(val_tip_double, nr_cif, *poz_zec, *semn)

Exemplu:int n;char sir[10];….n=13;itoa(n,sir,10);cout<<sir; =>"13"

9. Căutări într-un şir de caractere

9.a) Căutarea unui caracter de la stânga la dreapta: strchr(şir, caracter)

# include<iostream.h># include<string.h># include<ctype.h># include<conio.h>void main(){ // Cauta caracterul c in sirul ss, de la stanga la dreaptaclrscr();char ss[50],*p,c;cin.getline(ss,50);cin.get(c); //citeste un caracterp=strchr(ss,c);if (p) cout<<c<<" exista in sir pe pozitia "<<p-ss+1;else cout<<"Nu exista";}

9.b)Afişarea poziţiilor tuturor apariţiilor unui caracter într-un şir parcurs de la stânga la dreapta

Page 4: Memento String

# include<iostream.h># include<string.h># include<conio.h>void main(){clrscr();char ss[50],*p,c;cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffercin.get(c);// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la stg// la dreaptap=strchr(ss,c);while (p){cout<<p-ss+1<<" ";p=strchr(p+1,c);}}

9.c) Afişarea poziţiilor tuturor apariţiilor unui caracter într-un şir parcurs de la dreapta la stânga : strrchr(ss,c)

# include<iostream.h># include<string.h># include<ctype.h># include<conio.h>void main(){clrscr();char ss[50],*p,c;cin.getline(ss,50); //citeste pana la ENTER si extrage ENTER din buffercin.get(c);// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la// dreapta la stgp=strrchr(ss,c); // ultima aparitiewhile (p){cout<<p-ss+1<<" ";strcpy(p,p+1); // se sterge ultimul element gasitp=strrchr(ss,c);}}

10. Căutarea unui subşir de caractere într-un şir de caractere ( de la stânga la dreapta)

strstr(sir, subşir) dacă subşirul nu e găsit în sir returnează pointerul NULL dacă subşirul e găsit în şir funcţia returnează adresa primului caracter din şir egal cu primul caracter

din subşir

#include <iostream.h>#include<string.h>#include<conio.h>char sir[100], subsir[20], *p; //p=variabila de tip pointer care contine

// adresa din sir a primului caracter din subsirul regasit in sir

Page 5: Memento String

int main(){clrscr(); cin.getline(sir,199); cin.getline(subsir,19); p=strstr(sir,subsir); if (p) {cout<<p; // va afisa toate caracterele din sir de la subsirul redasit in sir // pana la sfarsitul sirului, adica pana la caracterul NULL cout<<endl; cout<<p-sir+1;//afiseaza pozitia primei aparitii a subsirului in sir } else cout<<"Subsir inexistent"; getch(); }

11. Ştergerea unui şir de caractere dintr-un sir de caractere

#include <iostream.h>#include<string.h>#include<conio.h>char sir[100], subsir[20], *p; //p=variabila de tip pointer care contine

// adresa din sir a primului caracter din subsirul regasit in sirint main(){clrscr(); cin.getline(sir,199); cin.getline(subsir,19); p=strstr(sir,subsir); if (p) {strcpy(p,p+strlen(subsir)); //stergerea subsirului presupune plierea sirului //de la adresa p+strlen(subsir) peste sirul incepand cu adresa p cout<<sir; } else cout<<"Subsir inexistent"; getch(); }

11.a) Stergerea tuturor aparitiilor unui subsir din cadrul unui sir

#include<iostream.h>#include<conio.h>#include<string.h>/* Stergerea tuturor aparitiilor unui subsir din cadrul unui sir */

void main(){ char sir[1000], subsir[25], *p;int lung_subsir;cout<<"Introduceti textul:";cin. getline(sir,1000);cout<<"Introduceti textul:";cin.getline(subsir,1000);lung_subsir=strlen(subsir);

p=strstr(sir,subsir); //prima aparitie a subsiruluiwhile (p){ strcpy(p,p+lung_subsir); p=strstr(p,subsir);}cout<<sir;}

Page 6: Memento String

11.b) Inlocuirea tuturor aparitiilor unui subsir cu alt subsir#include<iostream.h>#include<conio.h>#include<string.h>/* Inlocuirea tuturor aparitiilor unui subsir cu alt subsir */

void main(){ char sir[100], sterg[25], adaug[25], man[100], *p;int lung_sterg,lung_adaug;cout<<"Introduceti textul:";cin. getline(sir,100);cout<<"Introduceti textul de sters:";cin.getline(sterg,100);cout<<"Introduceti textul de inlocuit:";cin.getline(adaug,100);lung_sterg=strlen(sterg);lung_adaug=strlen(adaug);p=strstr(sir,sterg); //prima aparitie a subsirului de sterswhile (p){ man[0]=0; //subsir vid strncat(man,sir,p-sir);//adauga subsirul pana la sirul de sters strcat(man,adaug);//adauga sirul adaug strcat(man,p+lung_sterg); //adauga ceea ce a ramas din sir prin stergerea lui sterg strcpy(sir,man); //se copiaza man peste sir p=strstr(p+lung_adaug,sterg);//poz. pe urmatoarea aparitie a lui sterg}cout<<sir;}

12. Separarea in cuvinte a unui text#include <iostream.h>#include<string.h>#include<conio.h>char sir[10001],sep[]=". ,!" , //sirul separatorilor posibili *p, //p=variabila de tip pointer care contine adresa primului caracter din cuvantul extras cuvinte[300][30]; // matricea de caractere=un vector cu cuvinteint i,n;//variabile numerice globale sunt initializate cu 0int main(){clrscr(); cin.getline(sir,10000); p=strtok(sir,sep); while (p) { strcpy(cuvinte[n],p); n++; p=strtok(NULL,sep); }

n--; for(i=0;i<=n;i++) cout<<cuvinte[i]<<" ";

getch(); return 0; }

13. ORDONAREA UNUI VECTOR DE CUVINTE

#include <iostream.h>

Page 7: Memento String

#include <string.h>main (){ char cuv[30][255],aux[255];long int n,i,sort; cin>>n; cin.get(); for (i=1;i<=n;i++) cin>>cuv[i];

do { sort=1; for(i=1;i<n;i++) if ((strcmp(cuv[i],cuv[i+1])>0)) { aux[0]=0;

strcpy(aux,cuv[i]);strcpy(cuv[i],cuv[i+1]);strcpy(cuv[i+1],aux);sort=0;} }

while(sort);

for (i=1;i<=n;i++) cout<<cuv[i];