Sunteți pe pagina 1din 5

Programarea calculatoarelor și limbaje de programare (2017/2018)

Lucrarea de laborator 10

Pb1. Se citeşte un text de la tastatură. Să se scrie un program C++ care să afişeze


numărul de vocale din text.

#include<iostream>
using namespace std;
int main(){
char s[2001];
int i, vocale;
vocale=0;
cout<<"Introduceti textul: "; cin.getline(s,2000);
i=0;
while(s[i]!='\0'){
switch(s[i]){
case 'A':
case 'a':
case 'E':
case 'e':
case 'I':
case 'i':
case 'O':
case 'o':
case 'U':
case 'u': vocale++;
}
i++;
}
cout<<"Numarul de vocale din text = "<<vocale<<endl;
return 0;
}

Pb2. Se dă un cuvânt, format din maxim 30 de litere mici. Să se codifice acest cuvânt in
limba păsărească, adica după fiecare vocală să se adauge grupul de litere format din
caracterul ‘p’ urmat de vocala respectivă. Să se afiseze cuvântul obţinut după codificare.
Se cere ca această codificare să se realizeze printr-o funcţie.

Exemplu:
Fie cuvântul = ‘informatica’, dupa codificare obţinem ‘ipinfopormapatipicapa’.
Se observă grupurile formate din caracterul ‘p’ şi vocala respectivă.

Prototipul unei funcţii: tip_rezultat nume_funcţie(tipurile parametrilor funcţiei separate


între ele prin virgulă);
Definiţia unei funcţii:
tip_rezultat nume_funcţie(lista parametrilor funcţiei precedaţi de tipul lor separaţi între ei
prin virgulă){
declaraţii;
instrucţiuni;
....
return expr (cu rezultatul de tip tip_rezultat);

}

Rezolvarea problemei:

#include<iostream>
#include<cstring>
using namespace std;

void codificare(char[], char[]);

int main(){
char s[31],t[91];
cout<<"Introduceti cuvantul: "; cin>>s;
codificare(s,t);
cout<<"\nCuvantul codificat: "<<t;
return 0;
}

void codificare(char s[], char t[]){


int i,j;
j=0;
for(i=0;i<strlen(s);i++){
t[j]=s[i];j++;
switch (s[i]){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':{ t[j]= 'p'; j++; t[j]=s[i];j++;break;}
}
}
t[j]= '\0';
}
Pb3. Se dă un șir de numere reale și un interval [a,b]. Se cere să se precizeze câte
elemente ale şirului sunt mai mici strict decât a, câte mai mari strict decât b și câte în
intervalul [a,b]. Să se definească și să se foloseacă funcții pentru citirea și afișarea șirului.

#include<iostream>
using namespace std;

int citeste_sir(double[]);
void scrie_sir(int, double[]);

int main(){
int n,i,na,nb,nab;
double x[200], a,b;
n=citeste_sir(x);
cout<<”a=”; cin>>a;
cout<<”b=”; cin>>b;
na=0; nb=0; nab=0;
for(i=0;i<n;i++)
if(x[i]<a)na++;
else if(x[i]>b)nb++;
else nab++;
scrie_sir(n,x);
cout<<”\nNumarul de elemente ale sirului < ”<<a<<” este ”<<na;
cout<<”\nNumarul de elemente ale sirului > ”<<b<<” este ”<<nb;
cout<<”\nNumarul de elemente ale sirului din intervalul [”<<a<<”,”<<b<<”] este
”<<nab;
return 0;
}
int citeste_sir(double x[]){
int i,n;
cout<<”Numarul de elemente ale sirului: ”; cin>>n;
for(i=0;i<n;i++){
cout<<”x[”<<i+1<<”]=”; cin>>x[i];
}
return n;
}
void scrie_sir(int n, double x[]){
int i;
for(i=0; i<n; i++)cout<<x[i]<<” ”;
}
Pb4. Se considera o matrice AMm,n(Z) (1n,m30) având componente numere întregi.
Se cere să se calculeze suma componentelor de pe marginea (rama) matricei.

1 2 3 4
 
A   10 11 12 5
9 8 7 6 

Exemplu: Pentru m = 3 si n = 4 și se va afișa suma 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
= 47.
Se cere să se definească și să se utilizeze funcții pentru citirea și afișarea matricei.

#include<iostream>
using namespace std;

void citeste_matrice(int&, int&, int[][30]);


void scrie_matrice(int, int, int[][30]);

int main(){
int i,m,n,a[30][30],s;
citeste_matrice(m,n,a);
s=0;
for(i=0;i<m;i++)s=s+a[i][0]+a[i][n-1];
for(i=1;i<n-1;i++)s=s+a[0][i]+a[m-1][i];
scrie_matrice(m,n,a);
cout<<"\nSuma elementelor de pe marginea matricei este "<<s;
return 0;
}
void citeste_matrice(int& m, int& n, int a[][30]) {
int i,j;
cout<<"Dati numarul de linii ale matricei: "; cin>>m;
cout<<"Dati numarul de coloane ale matricei: "; cin>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++){
cout<<"a["<<i+1<<","<<j+1<<"]="; cin>>a[i][j];
}
}
void scrie_matrice(int m, int n, int a[][30]){
int i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){cout.width(5);cout<<a[i][j];}
cout<<endl;
}
}
Pb5(tema). Se consideră o matrice AMm,n(Z) (1m,n30) având componente numere
întregi. Să se afișeze elementele matricei care au proprietatea că sunt egale cu cel mai
mare divizor comun al sumei de pe coloana și al produsului de pe linia pe care se află.
Să se calculeze cmmmc al numerelor afișate.
Se vor defini și folosi funcții pentru:
- citirea și afișarea matricei
- calculul cmmdc
- calculul sumei elementelor de pe o coloană a matricei
- calculul produsului elementelor de pe o linie a matricei

int cmmdc(int a, int b){


int q;
while (b != 0)
{
q = b;
b = a % b;
a = q;
}
return a;
}

cmmmc(a,b)=a*b/cmmdc(a,b)

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