Se citesc de la tastatura elementele unei matrici de caractere (nr. linii=nr. coloane), A(NXN), N<=10.
a) Sa se afiseze matricea A;
b) Sa se formeze si sa se afiseze cuvantul format din caracterele pe pe diagonala principala a matricii A;
c) Sa se calculeze si sa se afiseze numarul de litere mari, litere mici si cifre din matrice;
d) Sa se afiseze cuvantul format din caracterele de pe diagonala secundara;
e) Sa se afiseze procentul literelor mari, al literelor mici si al cifrelor de pe cele 2 diagonale;
f) Sa se afiseze caracterele comune aflate pe liniile p si q (p, q < N, p si q citite de la tastatura);
g) Sa se afiseze in ordine alfabetica, crescatoare, literele mari aflate pe coloanele impare.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <string.h>
using namespace std;
char a[11][11],voc[]="aeiou",cif[]="0123456789";
int n,i,j;
int main()
{
/// Citirea matricei
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
/// Punctul a.) (afisarea matricei)
cout<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<endl;
/// Punctul b.) (cuvantul format din caracterele de pe diagonala principala)
char cuv1[11]={0};
for(i=1;i<=n;i++)
cuv1[i-1]=a[i][i];
cout<<cuv1<<endl;
cout<<endl;
/// Punctul c.) (cifre, litere mari si litere mici din matrice)
int nr1=0,nr2=0,nr3=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]>='a' && a[i][j]<='z')
nr1++;
else
if(a[i][j]>='A' && a[i][j]<='Z')
nr2++;
else
if(a[i][j]>='0' && a[i][j]<='9')
nr3++;
cout<<"Litere mici:"<<nr1<<endl;
cout<<"Litere mari:"<<nr2<<endl;
cout<<"Cifre:"<<nr3<<endl;
cout<<endl;
/// Punctul d.) (cuvantul format din caracterele de pe diagonala secundara)
char cuv2[11]={0};
for(i=1;i<=n;i++)
cuv2[i-1]=a[i][n-i+1];
cout<<cuv2<<endl;
cout<<endl;
/// Punctul e.) (procentul literelor mari, mici si al cifrelor de pe cele doua diagonale)
int nrel;
if(n%2==0)
nrel=2*n;
else
nrel=2*n-1;
nr1=0,nr2=0,nr3=0;
for(i=1;i<=n;i++)
if(a[i][i]>='a' && a[i][i]<='z')
nr1++;
else
if(a[i][i]>='A' && a[i][i]<='Z')
nr2++;
else
if(a[i][i]>='0' && a[i][i]<='9')
nr3++;
for(i=1;i<=n;i++)
if(n-i+1!=i)
{
if(a[i][i]>='a' && a[i][i]<='z')
nr1++;
else
if(a[i][i]>='A' && a[i][i]<='Z')
nr2++;
else
if(a[i][i]>='0' && a[i][i]<='9')
nr3++;
}
cout<<"Procent litere mici:"<<(float)nr1*100/nrel<<endl;
cout<<"Procent litere mari:"<<(float)nr2*100/nrel<<endl;
cout<<"Procent cifre:"<<(float)nr3*100/nrel<<endl;
cout<<endl;
/// Punctul f.) (caraactere comune a doua linii p si q)
int p,q,nr=0;
cout<<"Dati valoare pentru p:";cin>>p;
cout<<"Dati valoare pentru q:";cin>>q;
i=1;
while(i<=n)
{
j=1;
while(j<=n)
{
if(a[p][i]==a[q][j])
nr++;
j++;
}
i++;
}
cout<<"Elemente comune de pe liniile p si q:"<<nr<<endl;
cout<<endl;
/// Punctul g.) (Ordinea lexicografica a literelor mari de pe coloane impare)
int fr[32]={0};
for(i=1;i<=n;i++)
for(j=1;j<=n;j+=2)
if(a[i][j]>='A' && a[i][j]<'Z')
fr[a[i][j]-65]++;
for(char c='A';c<='Z';c++)
if(fr[c-65]!=0)
cout<<c<<" ";
return 0;
}
Explicație:
Daca este ceva ce nu ai inteles in rezolvare, pot sa il refac, si sa pun comentarii in care explic ce am facut la fiecare pas, ca sa fie pe inteles.