memento string
TRANSCRIPT
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>
# 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
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
# 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
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;}
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>
#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];