Realizaţi un program care calculează media aritmetică a tuturor numerelor palindrom din intervalul [a.b]. Exemplu: Pentrun a=8 şi b=13 se va afişa 9.33
Răspunsuri la întrebare
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a, b, c, i, nr, x, uc, k; /* numere intregi */
float S; /* numere reale. OBS: l-am declarat pe S ca fiind real pentru ca atunci cand il impart la k, sa imi dea nr real */
cin>>a>>b; /* citim de la tastatura numerele a si b */
if(a>b)
{c=a; /* daca a este mai mare decat b, atunci a si b isi interschimba valorile, astfel incat a<b */
a=b; /* [a, b] e un interval! De aceea nu putem avea a>b */
b=c;}
S=0; /* S este suma numerelor palindrom */
k=0; /* k este contorul care numara cate numere palindrom avem */
for(i=a; i<=b; i++) /* cu acest program luam numerele intregi de la a la b si lucram cu ele */
{
x=i; /* facem copie lui i */
nr=0; /* acest nr va fi x citit de la coada la cap */
while(x!=0) /* se interpreteaza: "cat timp x mai are cifre */
{
uc=x%10; /* uc este ultima cifra a lui x */
nr=nr*10+uc;
x=x/10; /* taiam ultima cifra a lui x */
}
if(nr==i) /* daca numarul citit de la coada la cap este egal cu numarul citit de la cap la coada atunci e palindrom */
{ S=S+nr;
k=k+1; }
}
if (k !=0)
cout<<fixed<<setprecision(2)<<S/k;
return 0;
}
Răspuns:
#include <iostream>
using namespace std;
int main()
{ int a,b,i,j,numarInvers=0,c,numar,numarator=0,numitor=0,x;
cin >> a;
cin >> b;
if(a>b){
x=a;
a=b; // aici se schimba a cu b intre ei daca a>b
b=x;
}
for(i=a;i<=b;i++){
numar = i;
c=0;
numarInvers=0;
while(numar!=0){
c = numar % 10; // Obtinem ultima cifre din numar
numarInvers = numarInvers * 10 + c; // Construim numarul invers
numar = numar / 10; // Taiem ultima cifra
}
if(numarInvers==i){
numarator=numarator+i;
numitor++;
}
}
if (numitor!=0){
cout << (float) numarator/numitor;
}
else
cout << 0;
}