0% au considerat acest document util (0 voturi)
7 vizualizări7 pagini

Memento String

Încărcat de

Adrian Vladu
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
7 vizualizări7 pagini

Memento String

Încărcat de

Adrian Vladu
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd

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 declarare
char s[10]="abc", s1[5]={'a','b','c'};

//Initializare in program
strcpy(s,"abc");

3. Declararea unui sir vid


s[0]=0; sau s[0]='\0'; sau s[0]=NULL; sau strcpy(s,NULL);

[Link] UNUI ŞIR DE CARACTERE


4.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 spatiu
cout<<s;
}

4.2)
# include<iostream.h>
# include<string.h>
# include<ctype.h>
# include<conio.h>
void main()
{
clrscr();
char s[50];
[Link](s,50); //citeste pana la ENTER, fara a extrage ENTER din buffer
// sau max 49 caractere
cout<<s;
}

4.3)
# include<iostream.h>
# include<string.h>
# include<ctype.h>
# include<conio.h>
void main()
{
clrscr();
char ss[50],sd[50];
[Link](ss,50); //citeste pana la ENTER, fara a extrage ENTER din buffer
[Link](sd,50); // al doilea sir nu a mai fost citit
cout<<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;
[Link](ss,50); //citeste pana ENTER, fara a extrage ENTER din buffer
[Link](); //extrage ENTER-ul tastat dupa primul sir si permite tastarea celui
//de-al doilea sir
[Link](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];
[Link](ss,50); //citeste pana la ENTER si extrage ENTER din buffer
[Link](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ţie
strncat(sir_destinatie, sir_sursa,n) –se adaugă doar primele n caractere din sirul sursa in sirul destinatie

7. Compararea a două şiruri


strcmp(ş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 mari


strncmp(şir1, şir2,n) – se compară primele n caractere dintre cele 2 şiruri
strnicmp(şir1, şir2,n) – se ignoră diferenţa dintre literele mici şi mari dibtre primele n caractere
8. Conversii
strupr(sir); transformă literele mici din şir în litere mari, celelalte caractere rămânând neschimbate
strlwr(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 dreapta
clrscr();
char ss[50],*p,c;
[Link](ss,50);
[Link](c); //citeste un caracter
p=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;
[Link](ss,50); //citeste pana la ENTER si extrage ENTER din buffer
[Link](c);
// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la stg
// la dreapta
p=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;
[Link](ss,50); //citeste pana la ENTER si extrage ENTER din buffer
[Link](c);
// Afiseaza pozitiile tuturor aparitiilor caracterului c in ss de la
// dreapta la stg
p=strrchr(ss,c); // ultima aparitie
while (p)
{
cout<<p-ss+1<<" ";
strcpy(p,p+1); // se sterge ultimul element gasit
p=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();
[Link](sir,199);
[Link](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 sir
int main()
{clrscr();
[Link](sir,199);
[Link](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:";[Link](subsir,1000);
lung_subsir=strlen(subsir);

p=strstr(sir,subsir); //prima aparitie a subsirului


while (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:";[Link](sterg,100);
cout<<"Introduceti textul de inlocuit:";[Link](adaug,100);
lung_sterg=strlen(sterg);
lung_adaug=strlen(adaug);
p=strstr(sir,sterg); //prima aparitie a subsirului de sters
while (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 cuvinte
int i,n;//variabile numerice globale sunt initializate cu 0
int main()
{clrscr();
[Link](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;
[Link]();
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];

S-ar putea să vă placă și