Sunteți pe pagina 1din 8

Siruri de caractere

- date structurate omogene


- indexate de la 0
- se declară cu un caracter in plus față de numărul de caractere pe care le pot conține
NULL
- funcțiile pt prelucrarea șirurilor sun incluse in <string.h> sau <cstring>

DECLARARE
char nume_sir[dimensiune_maxima+1];
exemplu char s[10]

CITIRE
- cin>>s; // daca nu contine spatii
- cin.get(s,10); Obs. Daca urmeaza alta citire se utilizeaza cin.get();
- cin.getline(s,10);

AFISARE
cout<<s;

accesarea unui caracter: s[i]


s=”informatica”
s[3]=’o’ //un caracter
s+3= „ormatica” //sir
FUNCTII SPECIFICE
1. strlen(s) – returneaza numerul de caractere ale sirului
2. strcpy(s1,s2) copiaza s2 in s1
strncpy(s1,s2,nr) - copiaza in s1 primele nr caractere din s2 !nu pune NULL
3. strcat(s1,s2) – concateneaza s2 la s1
strncat(s1,s2,nr) adauga primele nr caractere din s2 la sfarsitul lui s1
APLICATII
1. Sa se determine cate cuvinte are un sir stiind ca intre doua cuvinte este un singur spatiu.
nr cuvinte=nr spatii+1
#include<cstring>
#include<iostream>
using..
int main()
{ char s[100];
int i, c=0;
cin.get(s,100);
for(i=0;i<strlen(s);i++)
if(s[i]==’ ’)
c++;
cout<<c+1;
}
2. Sa se determine cate vocale are un sir. Sirul este format doar din litere mici si spatii.
{ char s[100];
int i, c=0;
cin.get(s,100);
for(i=0;i<strlen(s);i++)
if(s[i]==’a ’ || s[i]==’e ’ || s[i]==’i ’ || s[i]==’o ’ || s[i]==’u ’)
c++;
cout<<c+1;
}

3 verificare daca s[i] este litera mica


if (s[i]>=’a ’ && s[i]<=’z ’)......
19 nov. 20

#13 prefixe

abcd
abc
ab
a
nr ← strlen(s), 1,-1
strncpy(x, s, nr)
x[nr]=NULL // x[nr]=’\0’
afisare x

sufixe
abcd s
bcd s+1
cd s+2
d s+3

i ← 0, strlen(s)-1
sfisare s+i

FUNCTII SPECIFICE
strchr (sir,caracter) returneaza adresa primei aparitii a caracterului in sir sau 0 daca nu
gaseste caracterul in sir

verificare daca s[i] este vocala


if (strchr(„aeiouAEIOU”,s[i]) !=0 )
cout<<”este vocala”;

strstr (sir1, sir2) ret prima aparitie a lui sir2 in sir1

tema 2-3 probleme din pbinfo

20 nov. 20

eliminare s[i]
exemplu: abcde elimin s[2] copiez s+3 in s+2
direct: strcpy(s+i, s+i+1)
prin intermediul unui sir auxiliar: strcpy(aux, s+i+1); strcpy(s+i, aux);

transformare din litera mica in litera mare si invers


ABC........Z ... abc......z
65 97
‚A’
lit-’a’=LIT-’A ’
s[i] este litera mica se transf in litera mare s[i]= ’A ’+s[i]- ’a ’ sau s[i]=s[i]-32
s[i] este litera mare se transf in litera mica s[i]= ’a’+s[i]- ’A ’ sau s[i]=s[i]+32

strcmp(s,t) returneaza o valoare <0 daca s<t (alfabetic)


>0 daca s>t
=0 daca s=t
obs. Literele mari sunt in fata literelor mici (au coduri ASCII mai mici)
strcmp(„Bcd”,”amn”)<0
stricmp(s,t) ignora litere mici/mari
23 nov
#2666 (eliminarea spatiilor de la inceputul si sfarsitul sirului) – Liana + Timeea

26 nov
separarea cuvintelor uni sir de caractere
strtok(s,sep);

char sir[101], sep[]=”,.; ”, *p;


prima data se apeleaza p=strtok(sir,sep); //p retine primul cuvant al sirului

while(p!=NULL)
{ .....p......
p=strtok( NULL, sep);
}

sir=”este toamna si e frumos”

Afisarea fiecarui cuvant pe cate o linie (rezolvata de Daria)


Char s[100], *p;
Cin.get (s,100)
P=strtok(s, “ ”)
While (p)
{cout<<p<<endl;

P=strtok(NULL, “ “);

}
link catre compilator online :

https://www.onlinegdb.com/online_c++_compiler

Online C++ Compiler - online editor


OnlineGDB is online IDE with C++ compiler. Quick and easy way to compiler c++ program online. It
supports g++ compiler for c++.

Inlocuirea cuvintelor de lungime impara cu *** (Gabriel Dumitrescu)


exemplu: Asa este foarte bine devine *** este foarte bine
4 dec. 20
973
Cerința
Se dă o propoziție care conține numai litere mici ale alfabetului englez și spații. Să se afișeze cuvintele
din propoziție care conțin numai vocale.
Date de intrare
Programul citește de la tastatură șirul dat.
Date de ieșire
Programul va afișa pe ecran cuvintele cerute, în ordinea din propoziție, câte un cuvânt pe linie.
Restricții și precizări
propoziția va conține cel mult 255 de caractere
Exemplu
Intrare
ei pazesc o oaie
Ieșire
ei
o
oaie
int main()
{
char s[256], *p;
int i;
cin.get(s,256);
p=strtok(s," ")
while(p!=NULL)
{
int c=0;
for(i=0;i<strlen(p);i++)
if(strchr("aeiou",p[i] !=0)
c++;
if(c==strlen(p))
cout << p << " " << endl;
p=strtok(NULL, " ");
}
}

975
Cerința
Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,..
Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.
Date de intrare
Programul citește de la tastatură propoziția dată.
Date de ieșire
Programul va afișa pe ecran cuvântul determinat, sau mesajul IMPOSIBIL, dacă în șir nu există niciun
cuvânt palindrom.
Restricții și precizări
propoziția citită va conține cel mult 255 de caractere
cuvintele din propoziție vor avea maxim 10 litere
Exemplu
Intrare
ele deschid un capac, aerisirea este ok
Ieșire
aerisirea
7dec
#87
Cerinţa
Să se scrie un program care citește mai multe propoziții și determină propoziția de lungime maximă.
Date de intrare
Fișierul de intrare lgmax.in conține pe prima linie un număr natural n, iar pe următoarele n linii câte o
propoziție alcătuită din litere ale alfabetului englez și spații.
Date de ieşire
Fișierul de ieșire lgmax.out va conține pe prima linie propoziția de lungime maximă.
Restricţii şi precizări
0<n<100
fiecare propoziție va conține cel mult 255 de caractere

Exemplu
lgmax.in
4
somnoroase pasarele
pe la cuiburi se aduna
se ascund in ramurele
noapte buna
lgmax.out
pe la cuiburi se aduna

101Sortare cuvinte

Cerinţa
Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic.

Date de intrare
Fișierul de intrare sortcuv.in conține pe prima linie o propoziție alcătuită din litere mici ale alfabetului
englez și spații.
Date de ieşire
Fișierul de ieșire sortcuv.out va conține cuvintele din propoziție, ordonate alfabetic, fiecare pe câte o
linie.
Restricţii şi precizări
propoziția va conține cel mult 250 de caractere;
fiecare cuvânt din propoziție are cel mult 20 litere
Exemplu
sortcuv.in
dreptunghiul este un paralelogram cu un unghi drept
sortcuv.out
cu
drept
dreptunghiul
este
paralelogram
un
un
unghi

char s[100][256], aux[256];

s[i] este sir cu cel mult 255 caractere

este
luni
azi
nota buna

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