👤

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ăspuns :

#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;

}

Vezi imaginea MODFRIENDLY
Vezi imaginea MODFRIENDLY

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;

}

Vezi imaginea BIGBENN