Siruri de-caractere-lab pc-probleme

6
Laborator – programarea calculatoarelor Limbajul C++ Adrian Runceanu 1 Laborator nr. 8 - Siruri de caractere (tipul de date char) Probleme rezolvate: 1. Sa se scrie o functie care sa returneze lungimea unui sir de caractere, transmis ca parametru. 2. Scrieti un program care citeste un sir de caractere si transforma sirul in sir cu litere mici. 3. Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de la tastatura (prefixele unui cuvant sunt compuse din minim un caracter si maxim toate caracterele, citite de la stanga la dreapta). 4. Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca doua cuvinte rimeaza daca ultimele doua caractere sunt identice). 5. Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++ care sa afiseze numarul de vocale si de consoane din sirul dat. Solutii: Problema 1: #include<iostream.h> int lungime(char s[30]) { int i; i=0; while(s[i]!=0) i++; return i; } void main(void) { char s[30]; int l; cout<<"Dati sirul de caractere ";cin>>s; l=lungime(s); cout<<"Numarul de caractere ale sirului este "<<l; } Problema 2: #include<iostream.h> void litere_mici(char s[30]) { int i; i=0; while(s[i]!=0) { if( (s[i]>=65) && (s[i]<=90) ) s[i]=s[i]+32; Sa se scrie o functie care sa returneze lungimea unui sir de caractere, transmis ca parametru. Scrieti un program care citeste un sir de caractere si transforma sirul in sir cu litere mici.

Transcript of Siruri de-caractere-lab pc-probleme

Page 1: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

1

Laborator nr. 8 - Siruri de caractere (tipul de date char)

Probleme rezolvate:

1. Sa se scrie o functie care sa returneze lungimea unui sir de caractere, transmis caparametru.2. Scrieti un program care citeste un sir de caractere si transforma sirul in sir cu litere mici.3. Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de la tastatura(prefixele unui cuvant sunt compuse din minim un caracter si maxim toate caracterele, cititede la stanga la dreapta).4. Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca doua cuvinterimeaza daca ultimele doua caractere sunt identice).5. Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++ care sa afisezenumarul de vocale si de consoane din sirul dat.

Solutii:

Problema 1:

#include<iostream.h>int lungime(char s[30]){ int i; i=0; while(s[i]!=0) i++; return i;}void main(void){ char s[30]; int l; cout<<"Dati sirul de caractere ";cin>>s; l=lungime(s); cout<<"Numarul de caractere ale sirului este "<<l;}

Problema 2:

#include<iostream.h>void litere_mici(char s[30]){ int i; i=0; while(s[i]!=0) { if( (s[i]>=65) && (s[i]<=90) ) s[i]=s[i]+32;

Sa se scrie o functie care sa returneze lungimea unui sir de caractere, transmisca parametru.

Scrieti un program care citeste un sir de caractere si transforma sirul in sir culitere mici.

Page 2: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

2

i++; } return;}void main(void){ char s[30]; int l; cout<<"Dati sirul de caractere ";cin>>s; litere_mici(s); cout<<"Sirul transformat in litere mici este "<<s;}

Problema 3:

#include<iostream.h>void prefixe(char s[30]){ int i,j; i=0; while(s[i]!=0) { for(j=0;j<=i;j++) cout<<s[j]; cout<<endl; i++; } return;}void main(void){ char s[30]; int l; cout<<"Dati sirul de caractere ";cin>>s; cout<<"Prefixele sirului dat sunt : "<<endl; prefixe(s);}

Problema 4:

#include<iostream.h>int rima(char s[30],char t[30]){ int i,j; i=0; while(s[i]!=0) i++; j=0; while(t[j]!=0) j++; if( (s[i]==t[j]) && (s[i-1]==t[j-1]) ) return 1; else return 0;}

Sa se afiseze unul sub altul, toate prefixele proprii ale unui cuvant citit de latastatura (prefixele unui cuvant sunt compuse din minim un caracter si maxim toatecaracterele, citite de la stanga la dreapta).

Sa se verifice daca doua cuvinte citite de la tastatura rimeaza (spunem ca douacuvinte rimeaza daca ultimele doua caractere sunt identice).

Page 3: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

3

void main(void){ char s[30],t[30]; int l; cout<<"Dati primul sir de caractere ";cin>>s; cout<<"Dati al doilea sir de caractere ";cin>>t; if( rima(s,t)==1 ) cout<<s<<" rimeaza cu "<<t; else cout<<s<<" NU rimeaza cu "<<t;}

Problema 5:

#include<iostream.h>void main(void){ char s[50]; int voc=0,cons=0,i; cout<<"Dati sirul de caractere ";cin>>s; i=0; while(s[i]!=0) { switch (s[i]){ case 'a': case 'e': case 'i': case 'o': case 'u': case 'A': case 'E': case 'I': case 'O': case 'U': {voc++;break;} default : cons++; } i++; } cout<<"Numarul de vocale ale sirului este "<<voc<<endl; cout<<"Numarul de consoane ale sirului este "<<cons<<endl;}

Problema 6:

#include<iostream.h>#include<conio.h>#include<string.h>#include<stdio.h>

Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++ caresa afiseze numarul de vocale si de consoane din sirul dat.

Sa se scrie un program care determina de cate ori apare un anumit caracterintr-un sir de caractere.

Page 4: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

4

char s[256],c;int i,j;

void main(void){ clrscr(); cout<<"Introduceti sirul = ";cin>>s; cout<<"Introduceti caracterul cautat = ";c=getchar(); j=0; if(c=='\n') c=' '; for(i=1;i<=strlen(s);i++) { if(s[i-1]==c) j++; } cout<<"Caracterul exista in sir de "<<j<<" d ori "<<endl; getch();}

Problema 7:

Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in fisierulheader <string.h>:

Ø Functia strlen(s) – returneaza lungimea sirului dat ca parametruØ Functia strstr(s1, s2) – returneaza pozitia unde apare subsirul s2 in sirul s1Ø Functia strcpy(s1, s2) – copieaza sirul s2 in sirul s1

#include<iostream.h>#include<conio.h>#include<string.h>#include<stdio.h>

char sir[100],subsir[25],*p;int lung_subsir;

void main(void){ clrscr(); cout<<"Introduceti sirul = ";cin>>sir; cout<<"Introduceti subsirul = ";cin>>subsir; lung_subsir=strlen(subsir); p=strstr(sir,subsir); while(p) { strcpy(p,p+lung_subsir); p=strstr(p,subsir); } cout<<sir; getch();}

Sa se scrie un program care sterge toate aparitiile unui subsir din cadrul unui sir.

Page 5: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

5

Problema 8:

Vom folosi cateva functii specifice sirurilor de caractere care sunt definite in fisierulheader <string.h>:

Ø Functia strcmp(s1,s2) – returneaza valoarea 0 daca sirul s1 este egal cu siruls2, valoarea 1 daca sirul s1 este mai mare decat sirul s2 sau -1 daca sirul s1este mai mic decat sirul s2

Ø Functia strcpy(s1, s2) – copieaza sirul s2 in sirul s1

#include<iostream.h>#include<conio.h>#include<string.h>

char cuvinte[10][25],temp[25];int i,n,gasit=1;

void main(void){ clrscr(); cout<<"Introduceti numarul de cuvinte n = ";cin>>n; for(i=0;i<n;i++) { cout<<"cuvant "; cin>>cuvinte[i]; }

while(gasit==1) { gasit=0; for(i=0;i<n-1;i++) if(strcmp(cuvinte[i],cuvinte[i+1]) > 0) { strcpy(temp, cuvinte[i]); strcpy(cuvinte[i],cuvinte[i+1]); strcpy(cuvinte[i+1],temp); gasit=1; } } for(i=0;i<n;i++) cout<<cuvinte[i]<<endl; getch();}

Se citesc n cuvinte. Se cere sa se ordoneze alfabetic.

Page 6: Siruri de-caractere-lab pc-probleme

Laborator – programarea calculatoarelorLimbajul C++

Adrian Runceanu

6

Probleme propuse spre rezolvare

1. Se citeste un sir de caractere de la tastatura. Sa se scrie un program C++ care saverifice daca sirul dat este palindrom sau nu. Numim palindrom un cuvant care citit dela stanga la dreapta si de la dreapta la stanga obtinem acelasi rezultat.

2. Se citesc doua texte de la tastatura. Sa se scrie un program C++ care sa afisezetoate cuvintele comune din cele doua texte.

3. Se citesc doua cuvinte de la tastatura. Sa se scrie un program C++ care sa verificedaca cele doua cuvinte se obtin unul din celalalt prin permutarea cuvintelor.

4. Se citeste un text de la tastatura. Sa se scrie un program C++ care sa afisezefrecventele de aparitii ale tututor caracterelor din textul dat.

5. Se citeste un text de la tastatura. Sa se scrie un program C++ care sa determinegrupurile de trei vocale din textul dat.

6. Sa se afiseze unul sub altul, toate sufixele proprii ale unui cuvant citit de la tastatura(sufixele unui cuvant sunt compuse din minim un caracter si maxim toate caracterele,citite de la dreapta la stanga).Exemplu : Fie cuvantul ‘limbaj’, sufixele cuvantului dat sunt : ‘j’, ‘aj’, ‘baj’, ‘mbaj’,‘imbaj’, ‘limbaj’.

7. Sa se detecteze prima si ultima aparitie a unui caracter intr-un sir de caractere.

8. Se da un cuvant, format din maxim 30 de litere mici. Sa se codifice acest cuvant inlimba pasareasca, adica dupa fiecare vocala sa se adauge grupul de litere format dincaracterul ‘p’ urmat de vocala respectiva. Sa se afiseze cuvantul obtinut dupacodificare.Exemplu : Fie cuvantul = ‘informatica’, dupa codificare obtinem‘ipinfopormapatipicapa’.Se observa grupurile formate din caracterul ‘p’ si vocala respectiva.